Iptables

如何根據目的地通過不同的代理伺服器路由流量

  • September 28, 2015

背景

我在代理伺服器後面的公司網路上工作。我還使用一些可以通過堡壘/跳轉主機 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 地址通過這些 socks 代理髮送所有流量

要求的解決方案

給定: socks5 隧道在埠上打開1080

給定: socks5 隧道在埠上打開1081

要求

  • domain1.org通過地址1080
  • domain2.org通過地址1081
  • 失敗案例 - 其他一切都通過標準代理伺服器

錦上添花

  • 該解決方案不是永久性的 - 它是通過腳本與打開其中一個襪子隧道一起啟用的

是否還可以通過其中一個代理伺服器映射特定的 IP 地址而不是域

想法

我完全不確定從哪裡開始。我在某處看到的一個解決方案是使用 aproxy.pac但是公司網路已經有 aproxy.pac我不確定是否有辦法進行失敗pac,如果不是在我的自定義中,.pac則使用公司中的設置.pac

使用iptablesorroute命令-但是這兩個都超出了我的知識範圍

設置本地環回或其他東西

我建議將您ProxyCommand從 using更改nc為 use -W。例如:

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

這對堡壘主機的要求較少,因此在管理員決定更改堡壘主機的配置方式時,它不太可能中斷。

我認為在不同的 pac 文件之間沒有任何方法可以解決。但是您可以或多或少地連接兩個 pac 文件 - 有一個小警告。入口點將存在於兩個文件中。您需要重命名原始 pac 文件中的入口點,並且在您自己的添加中,您可以呼叫函式的重命名版本。

從歷史上看,入口點是一個名為 FindProxyForURL 的函式。一些較新的瀏覽器具有通過使用不同名稱的入口點啟動的擴展。

引用自:https://unix.stackexchange.com/questions/232457