Tuesday, November 8, 2011

Port Forwarding,Port Triggering及UPnP/NAT-PMP


Tomato Port Forwarding / Port Triggering 設定

簡單介紹有關頻寬分享器常會有的功能:Port Forwarding,Port Triggering及UPnP/NAT-PMP


當頻寬分享器安裝好後,通常會有一個功能,叫Port Forwarding,但是手冊上不一定會說明怎麼使用,比如ASUS RT-N10 / RT-N16二本手冊,我根本沒看到在哪設定? 以下介紹在Tomato Firmware上有的Port Forwarding功能:

  • Port Forwarding
  • Port Triggering
  • UPnP/NAT-PMP

Port Forwarding
這是最早出現的轉Port方式,比如如果你的PC,IP為192.168.0.1,在這台機器上有一個應用程式開啟了1234這個埠(Port),負責接收網際網路的需求,但是由於頻寬分享器本身的防火牆功能,並不允許外面的連線連到192.168.0.1:1234這個端點,故需要設定Port Forwarding,告訴頻寬分享器,如果收到要到Port 1234的要求,就轉到192.168.0.1的Port 1234。Port Forwarding最不方便的是,要設定內部轉到哪台IP,不能動態設定。典型用Port Forwarding的例子是:架在內部的Web Server,要能讓外部可以連接時,都會用Port Forwarding。



 

 Port Triggering
Port Triggering和Port Forward很類似,差別在於不用指定IP Address,試想想如果PC端是用DHCP,那麼指定IP的話,不是很麻煩? Port Triggering可說是Port Forwarding的進化版,只要指示Router,收到外部對哪個Port要求Request時,送到內部哪個Port即可。但是它應該也無法同時處理二台PC上同一個Port的要求,我沒有實驗過是不是真的不行。





 UPnP / NAT-PMP

UPnP是為了解決上面二種麻煩的設定而產生的,在有支援UPnP的軟硬體下,通常不用做任何設定,程式就可以直接設作業系統及軟體設備溝通,並建立連結。
NAT-PMP (NAT Port Mapping Protocol)是架構在UPnP下的更進階的協定,要用這功能,UPnP一定要打開,NAT-PMP神奇的地方是,它可以直接和Router溝通,可以把它想成自動在Router上設Port Forwarding,主要是由Apple提出,應用方面也以Apple的設備為主,但是不少軟體也有支援(比如BitComet)。

在Tomato Firmware上設定Port Forwarding、Port Triggering和UPnP


下圖表示如何在Tomato Firmware上設定Port Forwarding:


 範例--設定Port Forwarding:下面的例子為指定192.168.0.1:12185 TCP Port和192.168.0.1:9663 UDP 二個Port Forwarding,請注意畫面上的設定是沒打開(On)的,另外,設好後,右下角有個Save的按鈕,要按了以後才生效。




範例--設定Port Trigger:下面的例子為指定12185 TCP Port,9663 UDP Port,7263 TCP三個Port Triggering,這種設定方式是不用指定IP的,請注意畫面上的設定是沒打開(On)的,另外,設好後,右下角有個Save的按鈕,要按了以後才生效。


 


範例--設定UPnP/NAT-PMP:這個設定沒什麼好設的,只要確定有開啟就好,要用NAT-PMP的話,要先開UPnP,反正二個都打開就行,畫面上會顯示目前運作中的UPnP


 

理論上設有UPnP後,PC端應該就可以自動設定了,可是有時卻發現還是無效,原因可能是:
  • 你用Windows XP:UPnP需要手動開啟,請自行Google,Windows 7內定UPnP是開的
  • 軟體本身支援UPnP,但是Router卻沒開對應的Port:這可以手動設定


如何手動設定Router的UPnP對應 

以Bitcomet和eMule來說,二者都支援UPnP,但是打開UPnP後,BotComet可以連出去,但是eMule卻出現Low ID,在用Tomato前,用RT-10還出現二個程式即使是Port Triggering設好了,都不能動的狀況,應該可以想成這二支程式在當時,只設定好作業系統的UPnP映射?

手動設定Router的Port Mapping
以Windows 7為例,其中一個設定方式如下:




  • 打開網路和共用中心,點開下圖中的網路圖示:

 
網路結構下,應該會看到分享器(UPnP Router):




  • 按右鍵,選內容後,按下設定:


上面列出已經設定好的Mapping,其中BitComet二個是程式自己設的,eMule是我設的:


 

    為何eMule在它的程式中設定用UPnP後,還是出現Low ID? 因為它不支援NAT-PMP,無法主動設定Router上的Mapping,而BitComet有支援NAT-PMP,它會告訴Router相關的設定,這就是為何同樣支援UPnP,但是eMule設了卻沒用的原因。
     
  • 如果要新增的話,按下新增按鈕即可:





eMule和Port Forwarding / Port Triggering / UPnP
eMule雖然有UPnP的設定,可惜的是並不能正常運作,就連Port Triggering都有非常不穩定,所以最安全的方法,還是用最古老的Port Forwarding吧!

 

 

No comments:

Post a Comment