As a follow-up to one of my posts awhile back, I figured I'd share a small tip with those who don't use SOCKS proxies quite as often as I do. In my previous post, I showed how to set up an SOCKS proxy that tunnelled your (now encrypted) traffic through a remote SSH server, as well as how to configure Firefox to use that tunnel. But what if your application doesn't support SOCKS proxies? And what if you want to tunnel through multiple hosts (I'm sure you could think of a situation :P)?
Well, you're in luck: proxychains can handle all of that. When used to execute an application, proxychains acts a middleware layer, intercepting all TCP connections, wrapping them in the SOCKS protocol, and routing them through the proxies of your choice. If you're on Ubuntu, it's, as usual, brilliantly easy to install. One "sudo apt-get install proxychains" and you're good to go. Now how do we go about using it?
The first thing you need to do to use proxychains is to set up a configuration file. On Ubuntu (and I'm assuming, any other install), there is a default file in /etc/proxychains.conf that you can look at for guidance, but I have included mine for reference just in case. Now, there are three places proxychains will look for a config file when it is executed: in the local directory, at ~/.proxychains/proxychains.conf , and in /etc/proxychains.conf (and they are prioritized in that order). Chose yours according to what works best for you. I'd assume that either your home folder or etc folder would be the best, as it will work without a fuss no matter what your $PWD is. Now, the proxychains config has a good number of options, so you'll need to know what's best for you. For most, the dynamic chain is best: it functions as long as one of the proxies in it's configuration page is online. I'd also recommend enabling proxy_dns if it's not on, to prevent DNS leakage. The rest of the default options should be fine. After that, all you need to do is add your proxy in the form of "proxy_type host port", which, if you're using an SSH proxy like in my previous post, will be something like "socks4 127.0.0.1 6789" .
Now save the file, and you're ready to go. If you, say, want to update your system, all you need to do is "sudo proxychains apt-get update", and away it goes. If you want to chain your traffic through multiple hosts, simply add more to your config file, and run "proxychains ./myapp". Enjoy!
Update 04/16/2010: As mentioned in a previous post, tsocks is also a good application for socksifying connections, and worth trying if proxychains doesn't work for you. However, you can't (as far as I know) use it to chain multiple proxies together, so keep that in mind.