stun服务器是用于检测网络类型的重要工具。
源码地址:https://svwh.dl.sourceforge.net/project/stun/stun/0.97/stund-0.97.tgz
或者:https://files.cnblogs.com/files/bugutian/stund-0.97.tar.gz
tar -zxvf stund-0.97.tgz cd stund make
结果可以看到生成了client和server两个可执行文件。然后用client测试一下自己的网络类型:
[root@lh stund]# ./client stun.xten.com 0 STUN client version 0.97 running test number 0 Primary: Dependent Mapping, preserves ports, no hairpin Return value is 0x000019
一看和自己掌握的NAT类型并不相符啊,通过查询资料,结果应该如下:
1. 通过判断"映射是否独立",来判断网络是锥型还是对称型,上面结果显示"Dependent Mapping"应属于对称型;
2. 判断端口是否保持(局域网内端口和NAT后的端口是否一致),结果是"preserves ports"看来NAT映射前后端口一致;
3. "hairpin"(内网通过外网端口访问内网服务),结果是"no hairpin"表示不能。
依据:
Independent Mapping, Independent Filter = Fullcone NAT
Independent Mapping, Address Dependent Filter = Restricted Cone NAT
Independent Mapping, Port Dependent Filter = Port-Restricted Cone NAT
Dependent Mapping = Symmetric NAT
hairpin:NAT设备是否支持不同端口之间的UDP数据包能否到达
另外还可以通过:
中标识的信息,结合NAT网络类型的特点(http://www.cnblogs.com/bugutian/p/4717025.html),确定自己的网络类型。
参考网址:
http://blog.csdn.net/a1989a132/article/details/17139003
http://blog.csdn.net/zccracker/article/details/53005172