2013-02-06 69 views
2

所以我能够创建一个本地SOCKS代理与sudo ssh -D 8080 [email protected] ,我只能从我的机器访问:公共socks代理

nmap -p 8080 127.0.0.1 
8080/tcp open http-proxy 

然而此代理是不是从我的本地网络访问:

nmap -p 8080 192.168.1.10 
8080/tcp closed http-proxy 

我试过端口转发,但似乎并没有解决这个问题(除非我做错了) 我在Mac上,BTW。

解决方案?

回答

4

如果要从网络访问SO​​CKS代理,则需要使用SSH将其SOCKS代理绑定到可访问的外部地址,而不是本地主机,该主机为“本地”,并且不允许任何其他外部连接。使用这个命令:

ssh -ND "*:8080" [email protected] 

注意,我从你的命令删除sudo,我已经添加了-N标志的命令。 sudo肯定不需要;你只需要它,如果你打开1024以下的端口(除非你有很好的理由,否则你不应该这么做)。 -N标志使SSH会话N oninteractive,以便您没有启动shell会话,只是一个代理。 -D ":8080"将SOCKS代理绑定到系统上的所有地址,包括网络地址。至于防火墙设置,如果您有最新版本的Mac OS X(10.6+),您可能还想将防火墙打开到您的8080端口。您可以使用此命令可以这样做:

sudo ipfw add 9999 allow tcp from any to any dst-port 8080 

9999就是,你可以用它来识别防火墙规则防火墙ID号。

你应该决定停止打开你的代理,这个命令会关闭它备份:

sudo ipfw delete 9999 

所有配置后,如果你希望你的代理服务器是整个互联网可用,那么你就需要按照说明设置端口转发。您可以使用this guide在路由器上配置端口转发。

然而 ......通过互联网公开代理可能会导致麻烦。您的ISP可能会对此表示担忧,特别是如果有人不太喜欢通过Internet访问您的SOCKS代理。更好的解决方案?安装一个OpenSSH服务器,保护它,只需从Internet登录并在本地设置SOCKS代理。 This guide可以帮助。

快乐代理!