我在一家大公司工作,这家公司有几十个防火墙和一个大型代理服务器。有时我需要访问一些隔离网络中的服务,我可以访问该网络中的服务。目前我有以下方法:
我有一个应用程序,用于配置本地隧道,例如
ssh -L 30001:super01.secret.host:3419 secretServer1 ssh -L 30002:super01.secret.host:8080 secretServer1 ssh -L 30011:super02.secret.host:8080 secretServer1 ssh -L 30021:super03.secret.host:4000 secretServer2
我为每个指向(例如)localhost:30001 的 Web 服务创建了书签
我将我开发的本地程序配置为使用 localhost:30001 URL。
我知道还有另一种方法,即动态端口转发和 Socks 代理,但配置它真的很麻烦(考虑到无论如何我都必须拥有我公司的系统范围的代理)。
有没有办法重定向发往 super01.secret.host:3419 的请求并通过 localhost:30001 路由它们?因为这样我就可以实现一个应用程序(脚本),在其中定义要通过 secretServer1 服务器访问 super01.secret.host,它将打开本地端口转发并创建重定向。或者有没有更好的方法来配置它。
我的主要目标: - 在整个系统范围内设置所有网络 - 从隔离网络透明地访问服务(即,如果我必须从该网络访问 super01.secret.host:8080,我想从本地机器访问相同的主机和端口) - 我想使其余的网络像以前一样工作(即,除非请求在 noproxy 列表中,否则请求将通过公司的代理进行路由)
答案1
您可以使用 ssh 代理和 iptables 端口转发
就像你所做的那样,设置 ssh 代理。
端口转发,例如第一次重定向
iptables -A PREROUTING -t nat -i eth0 -p tcp -d secretServer1 --dport 3419 -j DNAT --to localhost:3001
笔记:尚未测试