Port Forwarding & Port Triggering

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

    在實際應用中,被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,端口8080NAT網關(多是路 由器)上設置Port Forwarding規則:安全

    若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端口。  網絡

路由器某一接口 inbound爲 流入;outbound爲流出。負載均衡

     Port Triggering,是指當Outbound的流來自指定的內網端口(triggered port),自動打開網關WAN側接口的指定端口(forwarded port),並將指向forwarded ports的流轉發到內網觸發triggered ports的終端上。引用wiki上關於port triggering的一個例子,IRC(Internet Relay Chat)使用Ident協議(113端口)來驗證用戶。當鏈接IRC時,客戶電腦一般以端口6667與服務器創建鏈接,而後IRC服務器創建到客戶電腦 113端口的鏈接來驗證用戶。若是隻有NAT,inbound到端口113的流將被丟棄,由於NAT網關沒法知道是內網哪臺機器發出的outbound 流。而Port Triggering則解決了這個問題。tcp

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

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

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

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

常常用到和說的是snat
端口轉發、負載均衡是dnat

閒話少敘,舉例爲證:

  1. 某 網絡示意圖:


  2. Internet --- 網關 --- 私網服務器(內IP1)

  3.                   ^      ^

  4.               外IP      內IP0

複製代碼



要想讓私網服務器的80口可以經過外IP的8080口上訪問,在Linux網關上敲入:
iptables -A PREROUTING -t nat -d 外IP -t tcp --dport 8080 -j DNAT --to-destination 內IP1:80

意思是:凡發往外IP:8080的全部tcp數據包,都把他們的目標變成內IP1:80

配置完後,公網用戶就能夠訪問http://外IP:8080來瀏覽私網服務器的網頁了。

相關文章
相關標籤/搜索