如何根据目的地通过不同的代理服务器路由流量

如何根据目的地通过不同的代理服务器路由流量

背景

我在代理服务器后面的公司网络上工作。我还使用一些远程站点,我可以通过堡垒/跳转主机 ssh 代理访问这些站点。

~/.ssh/config我的 SSH 隧道中,我有一个代理配置,允许跳过我们的堡垒主机以到达远程实验室

Host *.remoteLab1
    ProxyCommand ssh -l USERNAME BASTIONHOST1 nc %h %p

Host *.remoteLab2
    ProxyCommand ssh -l USERNAME BASTIONHOST2 nc %h %p

我同时使用 OSX 和 Linux,所以我认为命令或多或少是相同的

目前的解决方案

我当前的解决方案不太理想。我基本上与远程实验室之一建立了袜子连接,例如:

ssh -D 1080 remoteLab1

ssh -D 1081 remoteLab2

然后在两者中我realvncchrome将代理服务器更改为localhost:1080 / localhost:1081.在 chrome 中我有一个插件可以让我做到这一点,在 VNC 中有它的手册。

由于这两个远程实验室都有一个独特的域,我想知道是否有一种更简单的方法来使用路由表来根据 IP 地址通过这些袜子代理发送所有流量

请求的解决方案

鉴于:端口上打开了socks5隧道1080

鉴于:端口上打开了socks5隧道1081

要求

  • domain1.org经过的地址1080
  • domain2.org经过的地址1081
  • 失败 - 其他一切都通过标准代理服务器

值得拥有的

  • 该解决方案不是永久性的 - 它是通过脚本结合打开袜子隧道之一来启用的

是否还可以通过代理服务器之一映射特定的 IP 地址而不是域

想法

我不太确定从哪里开始处理这一切。我在某处看到的一个解决方案是使用 a ,proxy.pac但是公司网络已经有 a proxy.pac,我不确定是否有办法进行失败,pac如果不在我的自定义中,.pac则使用公司中的设置.pac

使用iptablesorroute命令 - 然而这两个都有点超出了我的知识范围

设置本地环回什么的

答案1

我建议将您的ProxyCommandusing更改nc为 use -W。例如:

ProxyCommand ssh -l USERNAME BASTIONHOST1 -W %h:%p

这对堡垒主机的要求较少,因此,如果管理员决定更改堡垒主机的配置方式,则不太可能出现故障。

我认为没有任何方法可以在不同的 pac 文件之间进行切换。但您或多或少可以将两个 pac 文件连接起来 - 但有一点需要注意。入口点将存在于两个文件中。您需要重命名原始 pac 文件中的入口点,并且在您自己的添加中,您可以调用该函数的重命名版本。

从历史上看,入口点是一个名为 FindProxyForURL 的函数。一些较新的浏览器具有通过使用不同名称的入口点激活的扩展。

相关内容