Files
weave-scope/socks
Paul Bellamy c03f7d50ff Squashed 'tools/' changes from b990f48..8ab80e8
8ab80e8 Merge pull request #45 from weaveworks/lint
83d5bd1 getting integration/config and test shellcheck-compliant
cff9ec3 Fix some shellcheck errors
7a843d6 run shellcheck as part of lint if it is installed
31552a0 removing spurious space from test
6ca7c5f Merge pull request #44 from weaveworks/shfmt
952356d Allow lint to lint itself
b7ac59c Run shfmt on all shell files in this repo
5570b0e Add shfmt formatting of shell files in lint
0a67594 fix circle build by splatting gopath permissions

git-subtree-dir: tools
git-subtree-split: 8ab80e878b0e414fb0a4c0b7c97d665b32dfc463
2016-10-26 15:32:28 +01:00
..

SOCKS Proxy

The challenge: youve built and deployed your microservices based application on a Weave network, running on a set of VMs on EC2. Many of the services public API are reachable from the internet via an Nginx-based reverse proxy, but some of the services also expose private monitoring and manage endpoints via embedded HTTP servers. How do I securely get access to these from my laptop, without exposing them to the world?

One method weve started using at Weaveworks is a 90s technology - a SOCKS proxy combined with a PAC script. Its relatively straight-forward: one sshs into any of the VMs participating in the Weave network, starts the SOCKS proxy in a container on Weave the network, and SSH port forwards a few local port to the proxy. All thats left is for the user to configure his browser to use the proxy, and voila, you can now access your Docker containers, via the Weave network (and with all the magic of weavedns), from your laptops browser!

It is perhaps worth noting there is nothing Weave-specific about this approach - this should work with any SDN or private network.

A quick example:

vm1$ weave launch
vm1$ eval $(weave env)
vm1$ docker run -d --name nginx nginx

And on your laptop

laptop$ git clone https://github.com/weaveworks/tools
laptop$ cd tools/socks
laptop$ ./connect.sh vm1
Starting proxy container...
Please configure your browser for proxy
http://localhost:8080/proxy.pac

To configure your Mac to use the proxy:

  1. Open System Preferences
  2. Select Network
  3. Click the 'Advanced' button
  4. Select the Proxies tab
  5. Click the 'Automatic Proxy Configuration' check box
  6. Enter 'http://localhost:8080/proxy.pac' in the URL box
  7. Remove *.local from the 'Bypass proxy settings for these Hosts & Domains'

Now point your browser at http://nginx.weave.local/