透明地繞過代理程式透過 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. 我為每個 Web 服務都有指向(例如)localhost:30001 的書籤

  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
    

筆記: 這個還沒測試過

相關內容