2009-10-02 23 views
11

該方案如下。我有兩臺機器A和B: 答:客戶端(後面NAT) B:服務器(NAT後面)如何在不需要任何重定向配置的情況下使TCP服務器在路由器(NAT)後工作

我想B到能夠聽任何給定的端口上,從而使A發送的數據包,通過給B該特定的TCP端口並接收任何響應。如果兩臺機器都不在NAT後面,那麼這是非常直接的過程。然而,我如何使它工作,使其即使在B路由器後面也能正常工作,而無需他去更改路由器配置啓用某些端口轉發等等。

例如,點對點像洪流客戶端程序沒有用戶有任何配置工作?

+1

您可能對serverfault.com – NotMe 2009-10-02 20:18:07

+0

更好的運氣我認爲這個問題是怎麼寫的服務器後面NAT的工作,而不是如何配置它。 – 2009-10-02 20:20:20

回答

0

代理服務器的替代方案是匹配服務器。而不是代表所有的交通,比賽制造商只是談判,直到同行可以相互交談。這涉及找到對等體的外部公共IP並且與每個對等體交談,以便防火牆/路由器知道對等體希望進行通信。

這被稱爲hole punching,它通常必須由比賽制造者而不是同齡人自己完成。一旦洞被打破,比賽制造者可以告訴同伴彼此之間,他們可以直接溝通。

+1

像這樣的AFAIK孔打孔只適用於UDP - 並且只有在路由器上的UDP端口映射一致的情況下。 – 2009-10-02 22:31:56

+0

啊..他的確在問題中說TCP .. – 2009-10-02 23:59:52

+0

我讀過關於打孔的問題,請問TCP打孔的工作情況如何?這可能不是那麼容易實現,但我會試一試,因爲這似乎是我正在尋找的。 謝謝。 – Chetane 2009-10-03 00:16:27

1

你將不得不要麼:

  1. 從前面的NAT 網關設置端口轉發服務器到機器的服務器軟件正在運行,並讓客戶端 連接到的IP地址那 網關。

  2. 創建一個代理服務器,坐在 其間的2個NAT gatewys這樣既 您的服務器和客戶端可以連接 這一點。您的服務器和客戶端 都必須建立到該代理的連接,該代理將調解這兩個連接之間的數據 。

+0

嗨, 我曾經設想過這個解決方案,這個解決方案的唯一問題是代理上的負載會相當大,這代價很高。 – Chetane 2009-10-03 00:15:04

6

要回答同行的例子等程序,和一般:有一個叫Universal Plug and Play技術,NAT路由器可以使用,讓他們後面的客戶端暴露端口到外部。這就是BitTorrent客戶端可以使用的,以便其他客戶端可以直接連接到它們。

+0

但不是UPnP只是自動化端口轉發自動化的一種方式? – 2009-10-02 20:27:26

+1

關鍵是自動化* - 我認爲問題中的'他'是用戶。避免手動設置端口轉發既是UPnP的優點也是危險。 – 2009-10-02 22:30:54

相關問題