资料整理 - NAT类型与穿透

NAT话题,主要涉及:

- NAT 与 防火墙

- NAT 基本类型 与 原理

- NAT 穿透方式及原理

- 基于NAT穿透的网络应用

- NAT穿透相关的工具和开源项目

 

1 网络 与 NAT 和 防火墙 

公网/内网IP分配及NAT地址转换协议  

http://yanshiwen2007.blog.163.com/blog/static/38688705200711483248456/ 

 

防火墙和NAT

http://wenku.baidu.com/view/1c5ccba10029bd64783e2c94.html

 

NAT的四种类型及类型检测   

http://www.cnblogs.com/my_life/articles/1908552.html

 

多媒体通讯中防火墙和NAT问题的解决

http://it.rising.com.cn/newSite/Channels/Safety/SafeDefend/Defender/200212/26-095709141.htm

 

Linux下的NAT及防火墙的混合应用

http://www.bitscn.com/os/linux/200604/7934.html

 


2 NAT 穿透

NAT穿透

http://zh.wikipedia.org/wiki/NAT%E7%A9%BF%E8%B6%8A

 

NAT的完全分析及其UDP穿透的完全解决方案

http://zongtongyi.blogbus.com/logs/2857757.html

http://zongtongyi.blogbus.com/tag/%E7%A9%BF%E9%80%8FNAT/

 

NAT穿透

http://blog.csdn.net/feiren127/article/details/5571636

 

NAT穿透之NAT类型检测

http://www.yunsec.net/a/special/wlgf/wlrq/2011/0101/7820.html

 

P2P网络“自由”穿越NAT的“秘密”

http://www.cnblogs.com/lovko/archive/2008/10/12/1309094.html

 

Symmetric NAT Traversal

http://www.dialogic.com/webhelp/bordernet2020/1.0.0/webhelp/nat_traversal.htm

 

3 STUN 和 TURN 协议 

旧版本STUN http://www.ietf.org/rfc/rfc3489.txt

新版本STUN http://www.ietf.org/rfc/rfc5389.txt

TURN       http://www.ietf.org/rfc/rfc5766.txt

 

Symmetric NAT Traversal using STUN

http://tools.ietf.org/id/draft-takeda-symmetric-nat-traversal-00.txt

 此协议是草稿,主要是关于基于 STUN 来做 Symmetric 类型的NAT穿透;但这不是100%可以成功的,有一定的概率。

 新旧STUN协议及TURN协议在实现和使用上的差异?

 旧版的STUN主要是基于判断NAT类型的,而新版本的STUN以及其扩展的TURN协议,摒弃了原来的思路,以获得一个可靠可用的通信地址和端口为目标;

 新版的STUN重在获得改地址,而TURN则提供了基于已知地址的数据传递协议规范。所以实践中,如果STUN告诉我们地址后,可以P2P,则优先P2P,否则TURN中转。

  新旧版本的STUN协议完全不同,协议设计也不同,无法兼容;新版的STUN则和TURN关系密切,后者是基于前者扩展设计的,大多数服务端也兼容二者。

 

4 工具与开源项目

NAT 类型检测

NAT Check:Check Your Network Address Translator for Compatibility with Peer-to-Peer Protocols

http://midcom-p2p.sourceforge.net/

 

VC++实现NAT穿透之NAT类型检测

http://blog.csdn.net/yincheng01/article/details/4486359


- STUN 

stund 

http://sourceforge.net/projects/stun 

pystun

http://code.google.com/p/pystun/

stunclient

http://code.google.com/p/stunclient/source/browse/#svn%2Ftrunk%2Fstun

 

- STUN & TURN

turnserver

http://turnserver.sourceforge.net/  (http://www.turnserver.org/)

turn-client

https://github.com/node/turn-client 

 

STUNMAN 

http://www.stunprotocol.org/   ,  https://github.com/jselbie/stunserver 

Features:

  Compliant with the latest RFCs including 5389, 5769, and 5780. Also includes backwards compatibility for RFC 3489.

  Supports both UDP and TCP on both IPv4 and IPv6.

  Client test app provided.

STUNMAN 使用C++开发,实现了新版的STUN和TURN协议,同时兼容处理旧版的STUN协议请求。


Java STUN/TURN 相关:

jstun 

http://jstun.javawi.de/


stung4j

https://stun4j.dev.java.net/

 

5 总结 

 

- Q: 是否所有NAT都可以穿透? 

  A: 不是!简单说, 只要是cone类型的NAT,则可以穿透,100%地穿透,

     即 full cone NAT, address restricted cone NAT 和 port restricted cone NAT 都可以穿透;

     而 symmetric NAT则不能保证100%穿透,也就是说不可靠无法依赖穿透symmetric NAT来通信,必须提供备选方式如代理中转等。

 

- Q: 对于无法穿透的NAT该怎么办? 

  A: 既然有STUN和TURN甚至SOCK5等协议,那么在确定无法穿透或者不能确定穿透时,选择服务器中转是上策。

 

- Q: 实践中哪种类型的NAT更多一些?

  A: 有时候应用只需要面对大多数用户即可,无需严格考虑所有情况,则需要参考实践中的NAT类型比例;

     这个数据我没有实际调查过,但结合网络上提供的资料,目前大多数NAT都属于cone的,不是symmetric的;但典型的sysmmetric仍然存在,比如可能有:

     - 安全要求较高的内部专属网/局域网

     - 互联网与EGDE网络之间,互联网与3G网之间


- Q: Symmetric NAT 的穿透状况到底如何?

  A: 可以穿透,但不是100%成功;那么如何提高成功率呢? http://www.goto.info.waseda.ac.jp/~wei/file/wei-apan-v10.pdf 

     这篇很早的文章显示他们的办法可以达到99%的NAT穿透率,高于当时SKYPE的46% 。其中的难点,主要在于不断变化的端口映射,导致mapping address无法稳定下来用于两个peer的通信。

 

6 辅助工具

在线NAT类型检测

nattest.net.in.tum.de


从外部测试本地端口是否可访问

http://canyouseeme.org/ 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值