Update: tsocks seems to be a better alternative when multiple applications are involved, i.e., one invokes another.
While there is a Tor-specific utility torify to route per-application traffic anonymously, the utility doesn’t provide any option to use custom proxies. ProxyChains fills in the gap by providing a similar but more flexible utility. It supports tor too. ProxyChains is extrremely useful when a program doesn’t handle proxies by itself. ProxyChains adds the functionality by intercepting the TCP calls.
ProxyChains runs from the command-line and is TCP-only. It comes handy when the only way to reach the internet from your LAN is via a proxy but you can’t apply the settings system-wide. It also helps to bypass selective port-allowing firewalls.
- Supports SOCKS4, SOCKS5, HTTP(S) or Tor
- Supported auth-types: “user/pass” for SOCKS4/5, “basic” for HTTP
- Ability to chain 2 or more proxies
- Access home LAN from outsie using reverse-proxy
- Use extrnal DNS from behind a proxy/firewall
- Use Tor network with SSH and similar applications (telnet, wget, ftp, apt, vnc)
- Different chaining options: random, ordered, dynamic (removes dead proxies)
- Use with any application including port scanners like nmap
- Supports very long chains with tunable timeouts
- Works on Linux and other Unix-like operating systems
To install ProxyChains on Ubuntu, run:
$ sudo apt-get install proxychains
The default configuration file is /etc/proxychains.conf. Take a look into the file to understand how to specify proxies. An entry for Tor exists by default.
User-specific settings can be added in $(HOME)/.proxychains/proxychains.conf and takes precedence.
The simplest use-case is:
$ proxuchains program args...
ProxyChains shows useful logs to trace what’s going on in the background.