簡介
該協定能自動測定NAT網關的外部IPv4地址,並為應用程式提供與對等端交流通信的方法。NAT-PMP於2005年由蘋果公司推出,為更常見的ISO標準網際網路網關設備協定(被許多NAT路由器實現)的一個替代品。該協定由網際網路工程任務組(IETF)在RFC6886中發布。
NAT-PMP使用用戶數據報協定(UDP),在5351連線埠運行。該協定沒有內置的身份驗證機制,因為轉發一個連線埠通常不允許任何活動,也不能用STUN方法實現。NAT-PMP相比STUN的好處是它不需要STUN伺服器,並且NAT-PMP映射有一個已知的過期時間,套用可以避免低效地傳送保活數據包。
NAT-PMP是連線埠控制協定(PCP)的前身。
安全隱患
2014年10月,Rapid7安全研究員Jon Hart公布,因廠商對NAT-PMP協定設計不當,估計公網上有1200萬台網路設備受到NAT-PMP漏洞的影響。NAT-PMP協定的規範中特別指明,NAT網關不能接受來自外網的地址映射請求,但一些廠商的設計並未遵守此規定。黑客可能對這些設備進行惡意的連線埠映射,進行流量反彈、代理等攻擊。
連線埠映射
連線埠映射就是將外網主機的IP位址的一個連線埠映射到區域網路中一台機器,提供相應的服務。當用戶訪問該IP的這個連線埠時,伺服器自動將請求映射到對應區域網路內部的機器上。連線埠映射有動態和靜態之分。
通俗來講,連線埠映射是將一台主機的區域網路(LAN)IP位址映射成一個公網(WAN)IP位址,當用戶訪問提供映射連線埠主機的某個連線埠時,伺服器將請求轉移到本地區域網路內部提供這種特定服務的主機;利用連線埠映射功能還可以將一台外網IP位址機器的多個連線埠映射到區域網路不同機器上的不同連線埠。 連線埠映射功能還可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等協定。理論上可以提供65535(總連線埠數)-1024(保留連線埠數)=64511個連線埠的映射。
舉例說明如何設定連線埠映射:例如要映射一台IP位址為192.168.111.10的WEB伺服器,只需把伺服器的IP位址192.168.111.10和提供web服務的TCP連線埠80填入到路由器的連線埠映射表中即可。
NAT穿透
在計算機科學中, NAT穿越(NAT traversal)涉及TCP/IP網路中的一個常見問題,即在處於使用了NAT設備的私有TCP/IP網路中的主機之間建立連線的問題。
會遇到這個問題的通常是那些客戶端網路互動應用程式的開發人員,尤其是在對等網路和VoIP領域中。IPsecVPN客戶普遍使用NAT-T來達到使ESP包通過NAT的目的。
儘管有許多穿越NAT的技術,但沒有一項是完美的,這是因為NAT的行為是非標準化的。這些技術中的大多數都要求有一個公共伺服器,而且這個伺服器使用的是一個眾所周知的、從全球任何地方都能訪問得到的IP位址。一些方法僅在建立連線時需要使用這個伺服器,而其它的方法則通過這個伺服器中繼所有的數據——這就引入了頻寬開銷的問題。
兩種常用的NAT穿越技術是:UDP路由驗證和STUN。除此之外,還有TURN、ICE、ALG,以及SBC。