4

所以我可以创建一个本地袜子代理,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 上,顺便说一句。

解决方案?

4

1 回答 1

7

如果要从网络访问 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 代理。本指南可以提供帮助。

快乐代理!

于 2013-08-13T15:34:42.833 回答