透明地绕过代理通过 SSH 访问某些域

透明地绕过代理通过 SSH 访问某些域

我在一家大公司工作,这家公司有几十个防火墙和一个大型代理服务器。有时我需要访问一些隔离网络中的服务,我可以访问该网络中的服务。目前我有以下方法:

  1. 我有一个应用程序,用于配置本地隧道,例如

    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
    
  2. 我为每个指向(例如)localhost:30001 的 Web 服务创建了书签

  3. 我将我开发的本地程序配置为使用 localhost:30001 URL。

我知道还有另一种方法,即动态端口转发和 Socks 代理,但配置它真的很麻烦(考虑到无论如何我都必须拥有我公司的系统范围的代理)。

有没有办法重定向发往 super01.secret.host:3419 的请求并通过 localhost:30001 路由它们?因为这样我就可以实现一个应用程序(脚本),在其中定义要通过 secretServer1 服务器访问 super01.secret.host,它将打开本地端口转发并创建重定向。或者有没有更好的方法来配置它。

我的主要目标: - 在整个系统范围内设置所有网络 - 从隔离网络透明地访问服务(即,如果我必须从该网络访问 super01.secret.host:8080,我想从本地机器访问相同的主机和端口) - 我想使其余的网络像以前一样工作(即,除非请求在 noproxy 列表中,否则请求将通过公司的代理进行路由)

答案1

您可以使用 ssh 代理和 iptables 端口转发

  1. 就像你所做的那样,设置 ssh 代理。

  2. 端口转发,例如第一次重定向

    iptables -A PREROUTING -t nat -i eth0 -p tcp -d secretServer1 --dport 3419 -j DNAT --to localhost:3001
    

笔记:尚未测试

相关内容