如何根據目的地通過不同的代理伺服器路由流量
背景
我在代理伺服器後面的公司網路上工作。我還使用一些可以通過堡壘/跳轉主機 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
然後在兩者中
realvnc
,chrome
我將代理伺服器更改為localhost:1080 / localhost:1081
. 在 chrome 中,我有一個允許我這樣做的外掛,在 VNC 中我有它的手冊。由於這兩個遠端實驗室都有一個獨特的域,我想知道是否有一種更簡單的方法可以使用路由表來根據 IP 地址通過這些 socks 代理髮送所有流量
要求的解決方案
給定: socks5 隧道在埠上打開
1080
給定: socks5 隧道在埠上打開
1081
要求
domain1.org
通過地址1080
domain2.org
通過地址1081
- 失敗案例 - 其他一切都通過標準代理伺服器
錦上添花
- 該解決方案不是永久性的 - 它是通過腳本與打開其中一個襪子隧道一起啟用的
是否還可以通過其中一個代理伺服器映射特定的 IP 地址而不是域
想法
我完全不確定從哪裡開始。我在某處看到的一個解決方案是使用 a
proxy.pac
但是公司網路已經有 aproxy.pac
我不確定是否有辦法進行失敗pac
,如果不是在我的自定義中,.pac
則使用公司中的設置.pac
使用
iptables
orroute
命令-但是這兩個都超出了我的知識範圍設置本地環回或其他東西
我建議將您
ProxyCommand
從 using更改nc
為 use-W
。例如:ProxyCommand ssh -l USERNAME BASTIONHOST1 -W %h:%p
這對堡壘主機的要求較少,因此在管理員決定更改堡壘主機的配置方式時,它不太可能中斷。
我認為在不同的 pac 文件之間沒有任何方法可以解決。但是您可以或多或少地連接兩個 pac 文件 - 有一個小警告。入口點將存在於兩個文件中。您需要重命名原始 pac 文件中的入口點,並且在您自己的添加中,您可以呼叫函式的重命名版本。
從歷史上看,入口點是一個名為 FindProxyForURL 的函式。一些較新的瀏覽器具有通過使用不同名稱的入口點啟動的擴展。