如何设置通过 SSH 隧道传输流量的本地 SOCKS 代理?

如何设置通过 SSH 隧道传输流量的本地 SOCKS 代理?

假设我可以访问支持隧道的 SSH 服务器,并且我在运行 *ubuntu 的 PC 上,如何设置本地 SOCKS 代理,使流量在到达 Internet 之前通过该 SSH 服务器进行隧道传输?

答案1

当您连接到运行 ssh 的服务器时使用的二进制文件ssh支持使用标志运行开箱即用的 SOCKS 代理-D。示例:

ssh -D 1337 -f -C -q -N user@remote -p 22
  • -D 1337告诉ssh在端口 1337 上本地启动 SOCKS 服务器。
  • -f将该进程分叉到后台。
  • -C打开压缩。
  • -q启用“安静模式”,因为这里的目的只是为了建立隧道,我们并不真正关心错误输出等。
  • -N告诉ssh不会发送任何命令(-f如果我们不指定的话,就会发出抱怨)。
  • -p指定要使用的端口;显然默认为 22,因此上述声明毫无意义,但为了清楚起见仍将其包括在内。

当您的 SOCKS 服务器启动并运行时,您只需确保您的应用程序(通常是 Web 浏览器)正在尝试连接到本地 SOCKS 代理,而不是常规 Internet。

在 Firefox 29 中(此处以示例进行说明),这可以通过进入菜单(右上角的三个香肠),然后选择“首选项”>“高级”>“网络”>“(连接)”>“设置...”来实现 - 确保只填写 SOCKS 字段!由于您的代理位于同一系统上,因此您可以使用localhost127.0.0.1指向您在同一系统上设置的任何端口。

如果你也需要对 DNS 请求进行隧道传输(如果不需要,DNS 查找将显示你尝试访问的网站),你可以直接选中“远程 DNS”,或者在 中完成整个配置about:config。在最后一种情况下,打开它并设置以下值:

network.proxy.socks : 127.0.0.1
network.proxy.socks_port : 1337
network.proxy.socks.remote_dns : true
network.proxy.socks_version : 5
network.proxy.type : 1

您可能还需要此设置来从隧道中排除某些域或站点:

network.proxy.no_proxies_on : localhost, 127.0.0.1, 192.168.0.0/24, .yourcompany.com

这个答案是从法国写的,但通过瑞典传送:)

相关内容