声明:原创作品,严禁用于商业目的。 如有任何技术问题,欢迎和我交流。
课堂链接
免费视频部分
环境:华为CPE设备、公网服务器acs
阅读:开发者
1. 协议规范
STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。
TR111的实现是基于STUN协议(Simple Traversal of UDP over NATs),由RFC3489制定,现已由RFC5389替代。STUN是通过client 和公网里的STUN server发送binding request/response来确定client的具体NAT类型。
2. 技术实现
在TR111中,CPE设备穿透NAT的策略是STUN,但是STUN是基于UDP的,而TR069中CPE和ACS之间建立的连接是TCP的,那么ACS是如何主动发起连接的呢?实际上ACS主动发起的并不是TCP连接,而是可以不需要响应的无连接的。ACS能够自动检测到位于NAT设备或者gateway后面的设备(与STUN bind成功),然后发送UDP connection Request到STUN server,通过STUN server进行转发到与STUN server关联的内部CPE设备,进而CPE发起tr069规范中定义的6 connection request事件(TCP连接成功),在tcp连接超时时间范围内可进行设备管理操作。如果超时,ACS再次主动发送UDP connection Request,然后对设备进行管理操作。
下面的流程图是目前CPE侧实现的stun功能,如有技术需求可以留言。
3. 对接公网ACS测试
测试环境:
设备wan口地址是:192.168.0.113,
acs公网ip地址是:81.68.141.224。(公网地址根据自己实际环境进行调整,服务器端要支持stun协议)
提供对接成功的日志和完整抓包下载:通过STUN连接公网ACS成功日志和抓包过程
下图是链接成功后的部分节点截图: