Port Forwarding & Port Triggering

Port Forwarding & Port Triggering
在BBS上看到相關的討論,查找了一下看到這篇貼文,特意轉來記錄學習一下:

在使用NAT的網絡中,內部終端的IP地址爲私網地址,發出去的IP包在NAT網關處進行地址轉換,以公網地址與外部聯繫。在轉換過程中,網關建立映射表,並維護對應連接的狀態。當來自公網的包返回時,按照目的地址查找映射表,找到對應的私網地址,然後再次轉換後發送給內部終端。這樣,映射表中條目的增加是由內部發往外部的數據流觸發的。因此,如果外部想直接訪問內部是不可能的。

在實際應用中,被NAT網關隱藏起來的內網很可能架設FTP服務器、HTTP服務器、郵件服務器等等,那麼如何從外部訪問這些服務器呢?Port Forwarding提供了這樣的機制。Port Forwarding根據來自公網的IP包的端口,將其轉發到指定的內部IP地址上。例如,一個NAT網關的WAN側地址爲123.4.5.6,內部架設了一臺FTP服務器,地址爲192.168.0.8,端口21,及一臺HTTP服務器,地址爲192.168.0.9,端口8080。NAT網關(可能是路由器)上設置Port Forwarding規則:

路由器的WAN口inbound爲流入,outbound爲流出。

若Inbound的IP包目的地址爲123.4.5.6,端口21,則將其地址轉換爲192.168.0.8,端口21,然後向內網轉發;若Inbound的IP包目的地址爲123.4.5.6,端口80,則將其地址轉換爲192.168.0.9,端口8080,然後向內網轉發。

這樣,通過設置Port Forwarding,從外網可以直接訪問到內網的服務器。這裏還有一個好處,對於某些linux服務器,只有root權限纔可開放端口號小於1024的服務,而使用root帳號具有一定的風險,因此如上例,可設置內網HTTP服務器端口爲8080,當外部採用常規的HTTP 80端口訪問時,會映射到8080端口。

Port Triggering,是指當Outbound的流來自指定的內網端口(triggered port),自動打開網關WAN口的指定端口(forwarded port),並將指向forwarded ports的流轉發到內網觸發triggered ports的終端上。這裏舉一個例子,當內網的某機器(192.168.0.8)試圖訪問公網某IP(8.8.8.8)的某端口時,則自動打開WAN口(123.4.5.6)的指定端口(forwarded port)。這樣,公網上的任意計算機(例如8.8.8.8)就可以通過WAN口(123.4.5.6)的指定端口訪問位於內網的機器。這樣的應用有時候會用到,最典型的就是XDMCP協議。

與靜態配置的Port Forwarding相比,Port Triggering提供更大的靈活性,因爲無需指定具體的內網終端地址,網關會在trigger時自動記錄。

Port Forwardig中的外網端口是一直開放的,而Port Triggering中外網端口是隻在trigger後纔開放。

從配置的角度來說,Port Forwarding需要配置內部服務器的IP地址和端口,以及外網地址的端口,Port Triggering只要配置Outbound流的端口(triggered port)和Inbound流的端口(forwarded port)。

順便說一下DMZ。設置Port Forwarding實際相當於設置了一些virtual server。對於Inbound但不屬於Virtual Servers表中應用程序的報文,可以將其映射到一個固定的主機,即DMZ Host。DMZ將來自外網的未知流定向到一臺機器上,從而可以提供對內網其他機器的安全保護。

貼文出處鏈結:https://www.zhukun.net/archives/7795

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章