Purpose of SOCKS Proxy
If you need to access specific internal web pages and don’t want/need to use a VPN, or if you need to test something from another area of the world this is where SOCKS proxies can come in handy. For the sake of an explanation I’ll give a scenario. Let’s say your company has a geolocation service that automatically detects the region the user’s public IP is coming from and uses that to determine which pages get served. This is a common scenario with global applications that serve South America as much of that region speaks Spanish, however Brazil speaks Portuguese. With the geo-ip detection running on your servers if a Brazilian IP is detected the Portuguese site will be served rather than the standard South American sites. To test this functionality you can simply spin up a micro instance in AWS in the Sau Paulo Brazil region, then in your Security Group open port 22 for SSH as well as the port you’ll use for your SOCKS proxy (I’ll use 1080 in this example). Technically speaking you can use any unassigned port, but generally speaking the commonly used proxy ports are 1024 and 1080.
Making the Connection (Mac or Linux)
Now that you have your instance spun up and your security groups modified to open the port, you’ll be able to create the connection using the syntax below in your terminal:
Once you have authenticated and established connection we are halfway there. The last remaining step is to tell either your system or browser to forward traffic over localhost (which will then forward over the proxy.
Setting Up the Proxy in Firefox
I have chosen Firefox for this example because I primarily use Chrome and don’t want to clear cache just for a quick dirty test, and Firefox is also stupidly easy to configure SOCKS proxy settings for. First in your address bar type about:config
When you see the above warning go ahead and click the blue button to continue. Then on the next screen type “network.proxy” in the search:
Once you’ve done this you’ll want to change the following items (note these are listed in bold in the screenshot)
|network.proxy.socks_port||1080 (or your port number)|
Now that you’ve made these changes in firefox visit http://icanhazip.com or Google what’s my ip. Your public IP should match the remote box you are SOCKS proxied to. If this is the case you are all set to test, if not you will need to go back and verify your settings.
It is possible to setup a system wide SOCKS proxy but for this purpose I wanted to provide the least intrusive and easiest quick dirty way to test remote functionality via a super simple SOCKS proxy.