我可以通过 SSH 访问我工作中的跳转框。这个跳转盒可以访问工作中的完整网络基础设施。这非常适合在家工作。
我能够在跳转盒上运行 SOCKS5 代理(通过ssh -D
)并成功地配置我的浏览器以将 SOCKS5 代理用于工作主机(通过https://getfoxyproxy.org)。Foxyproxy 似乎将 DNS 请求转发到该 SOCKS5 代理,因此一切正常。
我的问题是其他工具,例如 Maven(用于构建 Java),能够使用 SOCKS5 代理,但不幸的是无法通过它转发 DNS。据我所知,这是一个已知的限制。所以我最终将我的工作服务器添加到/etc/hosts
.
我正在寻找一个更加动态和明确的解决方案,以消除必须维护/etc/hosts
. 本质上,我想从现在开始继续使用我的 ISP DNS 服务器,但我想将我的工作服务器(并且仅针对它们)的 DNS 请求转发到那个跳转框(通过 SSH 或那个 SOCKS5 代理)。
那可能吗?
部分答案:
一般来说,你不能选择性地转发针对特定主机的 DNS 请求(比如 Foxyproxy 可以处理针对特定主机或路径的特定请求)。
您唯一可以做的就是在某个地方运行一个 DNS 代理,它可以自己回答对特定主机的请求,或者将遵循特定模式的请求转发到特定服务器。
一种流行的 DNS 代理是
dnsmasq
. 您可以将其配置为根据模式将 DNS 请求转发到不同的服务器。所以你必须在你的本地机器上运行
dnsmasq
,在你的本地机器上使用它进行 DNS 解析,并将它配置为使用你的 ISP 的 DNS 服务器和跳转主机 DNS 服务器作为上游 DNS 服务器。这将需要一些小动作才能正确配置,特别是让它同时获取动态给定的 DNS 服务器(来自您的 ISP)和静态给定的 DNS。这正是sshuttle的用途