SSH上的公共socks代理

Ram*_*pau 3 ssh proxy socks netcat

所以我能够创建一个本地的socks代理,sudo ssh -D 8080 user@server 我只能从我的机器访问它:

nmap -p 8080 127.0.0.1
8080/tcp open  http-proxy
Run Code Online (Sandbox Code Playgroud)

但是,无法从我的本地网络访问此代理:

nmap -p 8080 192.168.1.10
8080/tcp closed  http-proxy
Run Code Online (Sandbox Code Playgroud)

我尝试过端口转发,但似乎没有解决问题(除非我做错了)我在Mac上,顺便说一下.

解决方案?

Alb*_*t H 5

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

ssh -ND "*:8080" user@server
Run Code Online (Sandbox Code Playgroud)

请注意,我已从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
Run Code Online (Sandbox Code Playgroud)

9999 只是一个防火墙ID号,可用于识别防火墙规则.

如果您决定停止打开代理,此命令将关闭它:

sudo ipfw delete 9999
Run Code Online (Sandbox Code Playgroud)

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

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

快乐代理!