所以我可以创建一个本地袜子代理,sudo ssh -D 8080 user@server
我只能从我的机器上访问它:
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 上,顺便说一句。
解决方案?
如果要从网络访问 SOCKS 代理,则需要 SSH 将其 SOCKS 代理绑定到可访问的外部地址,而不是 localhost,它是“本地”的,不允许任何其他外部连接。请改用此命令:
ssh -ND "*:8080" user@server
请注意,我已从sudo
您的命令中删除,并且已将-N
标志添加到命令中。sudo
当然不需要;仅当您打开低于 1024 的端口时才需要它(除非您有充分的理由,否则您不应该这样做)。该-N
标志使 SSH 会话N具有交互性,因此您无需启动 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 上可用,则需要按照说明设置端口转发。您可以使用本指南在路由器上配置端口转发。
但是...在 Internet 上公开开放代理可能会引起麻烦。您的 ISP 可能会对此不屑一顾,尤其是当某个不太好的人通过 Internet 访问您的 SOCKS 代理时。更好的解决方案?安装 OpenSSH 服务器,保护它,然后从 Internet 登录并在本地设置 SOCKS 代理。本指南可以提供帮助。
快乐代理!