Nat
經紀人直連
是否可以使用具有靜態 IP 地址的伺服器來代理 2 個客戶端之間的直接連接,每個客戶端都位於 NAT 後面?
我已經使用 autossh 和埠轉發來通過伺服器建立連接,但我認為這意味著客戶端之間的任何互動都會消耗伺服器資源(轉發數據包和頻寬的計算成本)。我無法為自己測試,因為我目前無法訪問其中一位客戶。
我想像中發生的事情(我擁有 A、B 和伺服器,所以無論哪個客戶端先連接,都可以等到另一個連接):
client A -----> server <----- client B
我認為反向隧道方法可以做到這一點:
A sends packet -----> server, server receives packet, server sends packet -----> B, B receives packet
反之亦然。我想要的是:
A connects -----> server (connection stays open until B connects) B connects -----> server (server tells B about A) A and B can communicate bidirectionally while the connection stays open
(如果有斷開A和B可以重複連接步驟)
我認為這一定是可能的(這不是 P2P 協議的工作方式嗎?)但我不知道如何設置它。
我已經使用 autossh 和埠轉發來通過伺服器建立連接,但我認為這意味著客戶端之間的任何互動都會消耗伺服器資源(轉發數據包和頻寬的計算成本)。
你是對的
Samy Kamkar有兩個工具允許 NAT 後面的兩個主機相互通信,pwnat和chownat。如果您想使用此方法實現您的解決方案,網站上有技巧/技術的描述,或者您可以使用 Samy 發布的工具。
廣義上講,
chownat
是用於 A<->B 通信,當雙方都同意他們想要通信時;並且pwnat
用於 B 不期望的 A->B 通信。如果他們在伺服器上共享狀態以同意何時打開chownat
隧道,則可以使用前者;或以其他方式使用pwnat
並且根本不需要伺服器。