2016年4月3日 星期日

NAT 與 穿越防火牆技術


參考來源:http://www.cs.nccu.edu.tw/~lien/Writing/NGN/firewall.htm

關於Network Address Translation (NAT):
  • Why NAT? 解決IPv4地址短缺的方案
  • What is NAT? IP封包通過路由器或防火牆時重寫源IP地址或目的IP地址的技術。
  • How many NAT types? 
    • Full cone NAT
    • Address-Restricted cone NAT
    • Port-Restrict cone NAT
    • Symmetric NAT
Full cone NAT,亦即著名的一對一(one-to-one)NAT
  • 一旦一個內部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發自iAddr:port1的包都經由eAddr:port2向外發送。任意外部主機都能通過給eAddr:port2發包到達iAddr:port1
Full Cone NAT.svg
Address-Restricted cone NAT
  • 一旦一個內部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發自iAddr:port1的包都經由eAddr:port2向外發送。任意外部主機(hostAddr:any)都能通過給eAddr:port2發包到達iAddr:port1的前提是:iAddr:port1之前發送過包到hostAddr:any. "any"也就是說埠不受限制
Restricted Cone NAT.svg
Port-Restricted cone NAT
類似受限制錐形NAT(Restricted cone NAT),但是還有埠限制。
  • 一旦一個內部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發自iAddr:port1的包都經由eAddr:port2向外發送。一個外部主機(hostAddr:port3)能夠發包到達iAddr:port1的前提是:iAddr:port1之前發送過包到hostAddr:port3.
Port Restricted Cone NAT.svg
Symmetric NAT(對稱NAT)
  • 每一個來自相同內部IP與埠,到一個特定目的地地址和埠的請求,都映射到一個獨特的外部IP位址和埠。
    同一內部IP與埠發到不同的目的地和埠的信息包,都使用不同的映射
  • 只有曾經收到過內部主機封包的外部主機,才能夠把封包發回
Symmetric NAT.svg

常見穿越防火牆/NAT的相關技術:
  • UPnP(Universal Plug and Play)
  • STUN(Simple Traversal of UDP Through Network Address Translators)-RFC 3489
  • TURN(Traversal Using Relay NAT)
  • ALG(Application Layer Gateway)
  • ICE(Interactive Connectivity Establish)
UPnP缺點 :NAT必須支援UPnP協定
STUN缺點:Symmetric NAT無法穿透
TURN缺點 : TURN server需要承受連線頻寬
ALG缺點:基於網路安全,網管人員將不會接受用戶的應用程式控制他們的NAT


相關開源工具:
pystun, 提供查詢外部IP位置及NAT型別:https://github.com/jtriley/pystun
pjnath, Open Source ICE, STUN, and TURN Library: http://www.pjsip.org/pjnath/docs/html/

沒有留言:

張貼留言