使用 ssh -D 通过 socks 代理路由所有流量

使用 ssh -D 通过 socks 代理路由所有流量

有没有简单的方法可以通过带有 -D 的 ssh 代理路由所有流量?

我可以配置单个特定应用程序来执行此操作,但我希望配置能够路由机器上的所有流量。感谢您的帮助!

答案1

在 Linux 中:

  1. iptables -t nat -A OUTPUT !-d 127.0.0.0/8 -j REDIRECT --to 1081
  2. 运行监听 1081 的程序,检索实际的、非重定向的目标地址,与 SOCKS 服务器协商并进行中继。

我已经用 Perl(原型质量)编写了此类供私人使用的程序,并且用 C 编写了一个更好的版本。它尚未发布。

更新:现已发布:http://github.com/vi/socksredirect/ 使用prototype.pl。如果您有兴趣开发更好的版本,请通知我。

更新 2创建了一个更好的版本:http://github.com/vi/tcpsocks以及 Socat 2 的补丁:http://github.com/vi/socksredirect/blob/master/socat-2.0.0-b3-REDIRECT.patch

PS 我的大部分(有时是一些邻居的)流量现在都通过 tcpsocks->ssh 进行。

答案2

Avery Pennarun 的穿梭巴士类似于回答,但需要较少的设置并且适用于 BSD 和 OS X 以及 Linux。

答案3

也许您应该考虑设置 VPN。

答案4

取决于您使用的操作系统。如果您使用的是 MacOS,则有全局代理设置,每个应用程序都应该使用这些设置,即使有些应用程序不遵守这些设置(例如 Firefox)。

相关内容