所以我可以使用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上,顺便说一句。
解决方案?
答案 0 :(得分:5)
如果要从网络访问SOCKS代理,则需要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可以提供帮助。
快乐代理!