我可以通过 SSH 访问我工作中的跳转框。这个跳转盒可以访问工作中的完整网络基础设施。这非常适合在家工作。
我能够在跳转盒上运行 SOCKS5 代理(通过ssh -D
)并成功地配置我的浏览器以将 SOCKS5 代理用于工作主机(通过https://getfoxyproxy.org)。Foxyproxy 似乎将 DNS 请求转发到该 SOCKS5 代理,因此一切正常。
虽然一切正常,但我想知道是否可以让我的系统以更透明的方式将 SOCKS5 用于与工作相关的流量。弄清楚我使用的每个应用程序是否支持 SOCKS5 以及如果支持,如何支持,这非常令人筋疲力尽。
更具体地说,有没有一种方法可以配置我的系统,使其通过 SOCKS5 为预定义主机自动路由流量?
我知道有一些工具,例如代理链(请参阅https://github.com/haad/proxychains),但这不是我所追求的。这会将应用程序的所有流量路由到代理,而我想将所有流量路由到主机到代理,如果这有意义的话。
这可能吗?
为了您的信息,我在这里问了一个关于 DNS 请求的相关问题:Forward DNS request to my work's jump server。将这个问题与 DNS 问题结合起来,我希望最终能够以一种完全透明的方式与工作进行交互。
这在技术上是可行的,但请注意 SOCKS 仅支持 TCP 隧道(在极少数情况下支持 UDP)。其他任何东西都必须放弃。
如果您使用 Linux,您可以使用 iptables 将特定数据包重定向到本地运行的透明代理,其中有几个支持 SOCKS 的代理——Google 提供了transocks、redsocks、pr0cks。
(基于 Tor 的“Tails”操作系统也有同样的技巧,但透明代理功能现在内置于 Tor 守护程序本身——不涉及单独的 SOCKS 层。)
对于没有这种“透明代理”支持的操作系统,它仍然是可能的,但软件可能会变得相当复杂——它可以创建一个虚拟 TUN 接口,数据包可以路由到该接口,但它需要处理整个客户端 TCP 协议本身,无需操作系统的任何帮助。(SOCKS 实际上并不中继原始 TCP 数据包,它只中继内部携带的数据。)
也许看一看
socksify
。如果您的办公室代理使用 Dante,它可能会特别有效,但对于其他设置也应该没问题。我正在使用 transocks,我的 ip 表配置如下所示:
https://gist.github.com/andersondanilo/a28e7165fa8a9700d8ead20a224ecf44
你也可以看看TS-Warp。在 Linux、*BSD、mac 上工作。