SSH上的公共socks代理

时间:2013-02-06 15:44:55

标签: ssh proxy socks netcat

所以我可以使用sudo ssh -D 8080 user@server创建本地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上,顺便说一句。

解决方案?

1 个答案:

答案 0 :(得分:5)

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

ssh -ND "*:8080" user@server

请注意,我已从命令中删除了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

完成所有配置后,如果您希望代理在Internet上可用,则需要按照说明设置端口转发。您可以使用this guide在路由器上配置端口转发。

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

快乐代理!