一个方便的STUN客户端
pystun
A python STUN client for getting NAT type, followed RFC 3489.
http://code.google.com/p/pystun/
学习XMPP Jingle,需要对STUN协议有个大概的了解.
STUN协议简单的理解是位于NAT或者防火墙后面的STUN客户端首先访问具有公网IP地址的STUN服务器,这样STUN服务器就会知道STUN客户端被NAT之后的公网IP地址和端口,然后STUN服务器会把这个信息返回给STUN客户端.
这个工具使用很方便直观,安装python后,然后运行stun_client_0.0.1.py,默认会连接public的STUN服务器 "stun.ekiga.net",输出如下:
从上面可以看出STUB客户端已经知道了我通过ADSL拨号获得的公网IP地址. 访问我的无线路由器,查看WAN口的IP地址,可以发现和STUN客户端所获得的IP地址一样:
可用的STUN服务器有:
* stun.ekiga.net
* stun.fwdnet.net
* stun.ideasip.com
* stun01.sipphone.com (no DNS SRV record)
* stun.softjoys.com (no DNS SRV record)
* stun.voipbuster.com (no DNS SRV record)
* stun.voxgratia.org (no DNS SRV record)
* stun.xten.com
* stunserver.org see their usage policy
* stun.sipgate.net:10000
如果哪个访问不了,可以修改代码来访问别的STUB服务器.
下面的链接有一些不错的信息可以参考:
http://www.voip-info.org/wiki/view/STUN
http://nodex.iteye.com/blog/1490256