Firewall

socat connect-connect“代理”兩個入站TCP連接以公開防火牆服務?

  • May 13, 2012

我正在努力嘗試了解如何使用 socat(或類似的 TCP 埠重定向器)在 PC 上公開防火牆服務。

這是場景:我有一台伺服器 PC,它將充當兩台客戶端電腦之間的監聽“代理”/重定向器。伺服器可以根據需要打開任意數量的防火牆埠,並具有公共 IP。在第一個“客戶端”(如與代理伺服器建立出站連接時)客戶端 A 上,我在埠 4200 上託管服務。這台 PC 位於防火牆後面,僅允許基於先前出站連接的入站 TCP 連接。後面的防火牆客戶端 B 也是如此。

我需要做的是讓客戶端 B 能夠通過面向 Internet 的 TCP 代理伺服器訪問客戶端 A 上的埠 42000。問題是我只能從客戶端 A 發起出站 TCP 連接。當中繼的兩個客戶端都在只允許出站連接的防火牆後面時,如何通過伺服器重定向 TCP 連接?請參閱下圖並讓我知道是否需要澄清。

                 ------------
                |   Server   |
                |w/ public IP|
                 ------------
                /            \
         {|<Firewall>|}    {|<Firewall>|}
               |                 |
         ----------          ----------        
        | Client A |        | Client B |
         ----------          ----------
      (hosting a service    (wanting to access
        on port 4200)         Client A port 4200)

我將不勝感激任何建議,謝謝。

就像是

在“伺服器”上:

socat TCP4-LISTEN:10000 TCP4-LISTEN:4200

關於“客戶 A”

socat TCP4:Server:10000 TCP4:localhost:4200

在“客戶端 B”

上配置客戶端連接到伺服器:4200

或者,看看 SSH 埠轉發。

您還可以使用我最初為這種類型的場景(特別是 RDP)開發的PortFusion 。

 server> PortFusion                ] 10000        [
client-a> PortFusion 4200 localhost - 10000 server [ 4200

現在 client-b 可以連接到 server:4200 進行 RDP。

重要的提示!!

您應該以不同的使用者身份啟動 PortFusion client-a(或 socat 或其他任何東西),並且也不要從您要連接的使用者的圖形會話中啟動 - 否則您將獲得黑屏或掉線等。

希望我的回答能有所幫助。

引用自:https://serverfault.com/questions/254855