stun学习。
原理介绍
STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。
NAT类型
1.完全透明NAT(Full Cone NAT):
从相同内部主机(IN IPX) +端口(IN PORTX)发送的数据MAPING为相同的IP(OUT IP X)和端口(OUT PORT X)发送带外网.并且从另一个服务器(Y),如果直连到MAPING的IP(OUT IP X)和端口(OUT PORT X )上,数据将会被转发到内部主机上. (IN IPX), (IN PORTX).
也就是说进内部网的数据包的SPORT,SPORT不受限制
2.受限NAT(Restricted Cone),
从相同内部主机(IN IPX) +端口(IN PORTX)发送的数据MAPING为相同的IP(X)和端口发送带外网.和完全NAT不同的是,只有当为X时,外部机器的的请求就被转发到主机(IN IPX) +端口(IN PORTX)。也就是说进内部网的数据包的,SPORT不受限制,SIP受限制,只能为NAT MAP数据的IP
3,端口受限NAT(Port Restricted Cone)
和受限NAT不同的是,只有当外部主动请求的的源IP和端口,等于内部网发送的请求的目的IP和端口。
4.对称NAT(symmetric NAT)
如果发送的包的目的IP AND PORT,那么MAPPING IP AND PORT,将相同。内部网同一台机器,同一个端口如果目的地址不同,那么MAPPING的端口也不同,所以只有他主动连的服务器才可能知道他的MAPPING后端口,别的服务器如果想连他只能靠猜测端口。
总结:前面3种NAT,MAPING PORT和IP,是根据发送包的的内部网的IP和端口决定的。如果数据的内网IP和端口相同,那么MAPPING后的端口和地址是固定。这个功能为我们的穿越提供了很好条件。
第4种NAT,打洞后的MAPPING 地址和端口将变地不可靠。很难穿越。注意SERVERA,和SERVERB是两个公网地址,而不是两台机器.
STUN服务器
免费 STUN服务器列表
NO. STUN服务器 端口 有效 测试日期
1 stun.xten.com 3478 2017/08/14
2 stun.voipbuster.com 3478 2017/08/14
3 stun.voxgratia.org 3478 2017/08/14
4 stun.sipgate.net 10000 2017/08/14
5 stun.ekiga.net 3478 2017/08/14
6 stun.ideasip.com 3478 2017/08/14
7 stun.schlund.de 3478 2017/08/14
8 stun.voiparound.com 3478 2017/08/14
9 stun.voipbuster.com 3478 2017/08/14
10 stun.voipstunt.com 3478 2017/08/14
11 numb.viagenie.ca 3478 2017/08/14
12 stun.counterpath.com 3478 2017/08/14
13 stun.1und1.de 3478 2017/08/14
14 stun.gmx.net 3478 2017/08/14
16 stun.callwithus.com 3478 2017/08/14
17 stun.counterpath.net 3478 2017/08/14
18 stun.internetcalls.com 3478 2017/08/14
19 stun.voip.aebc.com 3478 2017/08/14
20 numb.viagenie.ca 3478 2017/08/14
more
stun.stunprotocol.org 3478
实验
stun客户端:
安装客户端:
1 | sudo apt install stun-client |
测试STUN服务器是否能正确返回外网的IP及端口号:
1 | stun stun.xten.com |
结果:不行。Primary那行的意思?
http://www.stunprotocol.org/
下载windows编译好的二进制。
解压,在cmd命令行下执行:
1 | stunclient stun.stunprotocol.org 3478 |
1 | stunclient stun.xten.com 3478 |