Port Forwarding Port Triggering
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
在使用NAT的網(wǎng)絡(luò)中,內(nèi)部終端的IP地址為私網(wǎng)地址,發(fā)出去的IP包在NAT網(wǎng)關(guān)處進(jìn)行地址轉(zhuǎn)換,以公網(wǎng)地址與外部聯(lián)系。在轉(zhuǎn)換過程中,網(wǎng)關(guān)建立映射 表,并維護(hù)對(duì)應(yīng)連接的狀態(tài)。當(dāng)來自公網(wǎng)的包返回時(shí),按照目的地址查找映射表,找到對(duì)應(yīng)的私網(wǎng)地址,然后再次轉(zhuǎn)換后發(fā)送給內(nèi)部終端。這樣,映射表中條目的增 加是由內(nèi)部發(fā)往外部的數(shù)據(jù)流觸發(fā)的。因此,如果外部想直接訪問內(nèi)部是不可能的。
??? 在實(shí)際應(yīng)用中,被NAT網(wǎng)關(guān)隱藏起來的內(nèi)網(wǎng)很可能架設(shè)FTP服務(wù)器、HTTP服務(wù)器、郵件服務(wù)器等等,那么如何從外部訪問這些服務(wù)器呢?Port Forwarding提供了這樣的機(jī)制。Port Forwarding根據(jù)來自公網(wǎng)的IP包的端口,將其轉(zhuǎn)發(fā)到指定的內(nèi)部IP地址上。例如,一個(gè)NAT網(wǎng)關(guān)的WAN側(cè)地址為123.4.5.6,內(nèi)部架設(shè) 了一臺(tái)FTP服務(wù)器,地址為192.168.0.8,端口21,及一臺(tái)HTTP服務(wù)器,地址為192.168.0.9,端口8080NAT網(wǎng)關(guān)(可能是路 由器)上設(shè)置Port Forwarding規(guī)則:
??? 若Inbound的IP包目的地址為123.4.5.6,端口21,則將其地址轉(zhuǎn)換為192.168.0.8,端口21,然后向內(nèi)網(wǎng)轉(zhuǎn)發(fā);若 Inbound的IP包目的地址為123.4.5.6,端口80,則將其地址轉(zhuǎn)換為192.168.0.9,端口8080,然后向內(nèi)網(wǎng)轉(zhuǎn)發(fā)。
??? 這樣,通過設(shè)置Port Forwarding,從外網(wǎng)可以直接訪問到內(nèi)網(wǎng)的服務(wù)器。這里還有一個(gè)好處,對(duì)于某些linux服務(wù)器,只有root權(quán)限才可開放端口號(hào)小于1024的 服務(wù),而使用root帳號(hào)具有一定的風(fēng)險(xiǎn),因此如上例,可設(shè)置內(nèi)網(wǎng)HTTP服務(wù)器端口為8080,當(dāng)外部采用常規(guī)的HTTP 80端口訪問時(shí),會(huì)映射到8080端口。??
路由器某一接口 inbound為 流入;outbound為流出。
? ? ?Port Triggering,是指當(dāng)Outbound的流來自指定的內(nèi)網(wǎng)端口(triggered port),自動(dòng)打開網(wǎng)關(guān)WAN側(cè)接口的指定端口(forwarded port),并將指向forwarded ports的流轉(zhuǎn)發(fā)到內(nèi)網(wǎng)觸發(fā)triggered ports的終端上。引用wiki上關(guān)于port triggering的一個(gè)例子,IRC(Internet Relay Chat)使用Ident協(xié)議(113端口)來驗(yàn)證用戶。當(dāng)連接IRC時(shí),客戶電腦通常以端口6667與服務(wù)器建立連接,然后IRC服務(wù)器建立到客戶電腦 113端口的連接來驗(yàn)證用戶。如果只有NAT,inbound到端口113的流將被丟棄,因?yàn)镹AT網(wǎng)關(guān)無法知道是內(nèi)網(wǎng)哪臺(tái)機(jī)器發(fā)出的outbound 流。而Port Triggering則解決了這個(gè)問題。
??? 與靜態(tài)配置的Port Forwarding相比,Port Triggering提供更大的靈活性,因?yàn)闊o需指定具體的內(nèi)網(wǎng)終端地址,網(wǎng)關(guān)會(huì)在trigger時(shí)自動(dòng)記錄。
??? Port Forwardig中的外網(wǎng)端口是一直開放的,而Port Triggering中外網(wǎng)端口是只在trigger后才開放。
??? 從配置的角度來說,Port Forwarding需要配置內(nèi)部服務(wù)器的IP地址和端口,以及外網(wǎng)地址的端口,Port Triggering只要配置Outbound流的端口(triggered port)和Inbound流的端口(forwarded port)。
???最后,順便說一下DMZ。設(shè)置Port?Forwarding實(shí)際相當(dāng)于設(shè)置了一些virtual server。對(duì)于Inbound但不屬于Virtual Servers表中應(yīng)用程序的報(bào)文,可以將其映射到一個(gè)固定的主機(jī),即DMZ Host。DMZ將來自外網(wǎng)的未知流定向到一臺(tái)機(jī)器上,從而可以提供對(duì)內(nèi)網(wǎng)其他機(jī)器的安全保護(hù)。
經(jīng)常用到和說的是snat
端口轉(zhuǎn)發(fā)、負(fù)載均衡是dnat
閑話少敘,舉例為證:
某 網(wǎng)絡(luò)示意圖:
Internet --- 網(wǎng)關(guān) --- 私網(wǎng)服務(wù)器(內(nèi)IP1)
? ?? ?? ?? ?? ?? ?^? ?? ?^
? ?? ?? ?? ???外IP? ?? ?內(nèi)IP0
復(fù)制代碼
要想讓私網(wǎng)服務(wù)器的80口能夠通過外IP的8080口上訪問,在Linux網(wǎng)關(guān)上敲入:
iptables -A PREROUTING -t nat -d 外IP -t tcp --dport 8080 -j DNAT --to-destination 內(nèi)IP1:80
意思是:凡發(fā)往外IP:8080的所有tcp數(shù)據(jù)包,都把他們的目標(biāo)變成內(nèi)IP1:80
配置完后,公網(wǎng)用戶就可以訪問http://外IP:8080來瀏覽私網(wǎng)服務(wù)器的網(wǎng)頁了。
轉(zhuǎn)載于:https://my.oschina.net/xxjbs001/blog/187319
總結(jié)
以上是生活随笔為你收集整理的Port Forwarding Port Triggering的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小菜学习Lucene.Net(更新3.0
- 下一篇: Qt动态多语言的实现(VS2012开发)