openwrt上用stun实现NAT类型检测
一、安装stun:
相关组件下载参照:https://github.com/awe1p/stun
cd到openwrt源代码路径
git glone https://github.com/awe1p/stun package/network/stun
make menuconfig,选中新增的stun-client和stund,保存退出
make V=s
镜像编译并烧录后,多了两个指令:stund stun-client。使用方法参照官网所述:https://openwrt.org/docs/guide-user/services/voip/stund
二、环境搭建:
路由器A作为stun服务器接入公网Internet;B为待测NAT,上级接入公网Internet,下级连路由C(或安装了stun的pc)作为stun-client
三、测试指令:
A运行:stund -v & (当然也可以指定interface)
C运行:stun-client {A的公网ip} -v
此时c返回公网ip和NAT类型等详细数据:
根据返回结果可判断出7种类型:
(1)Open Internet
(2)UDP Blocked
(3)Symmetric Firewall
(4)Full Cone NAT
(5)Restricted Cone NAT
(6)Port Restricted Cone NAT
(7)Symmetrict NAT
其中根据后4种NAT的返回结果判断为:
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
根据Independent Mapping, Independent Filter可判断此时我的NAT类型为完全锥形NAT
去掉B,C直连公网,会得到Firewall。关掉C的防火墙,会得到open。
(实现Fullcone NAT过程: https://blog.csdn.net/xuzhen5062/article/details/106386098)
四、stun测试原理简述:
STUN协议定义了三类测试过程来检测NAT类型:
Test1:
STUN Client通过端口{IP-c1:Port-c1}向STUN Server{IP-s1:Port-s1}发送一个Binding Request(没有设置任何属性)。STUN Server收到该请求后,通过端口{IP-s1:Port-s1}把它所看到的STUN Client的IP和端口{IP-m1,Port-m1}作为Binding Response的内容回送给STUN Client。
Test1(2):
STUN Client通过端口{IP-c1:Port-c1}向STUN Server{IP-s2:Port-s2}发送一个Binding Request(没有设置任何属性)。STUN Server收到该请求后,通过端口{IP-s2:Port-s2}把它所看到的STUN Client的IP和端口{IP-m1#2,Port-m1#2}作为Binding Response的内容回送给STUN Client。
Test2:
STUN Client通过端口{IP-c1:Port-c1}向STUN Server{IP-s1:Port-s1}发送一个Binding Request(设置了Change IP和Change Port属性)。STUN Server收到该请求后,通过端口{IP-s2:Port-s2}把它所看到的STUN Client的IP和端口{IP-m2,Port-m2}作为Binding Response的内容回送给STUN Client。
Test3:
STUN Client通过端口{IP-c1:Port-c1}向STUN Server{IP-s1:Port-s1}发送一个Binding Request(设置了Change Port属性)。STUN Server收到该请求后,通过端口{IP-s1:Port-s2}把它所看到的STUN Client的IP和端口{IP-m3,Port-m3}作为Binding Response的内容回送给STUN Client。
顺序为:Test1、Tset2、Tset3、Tset1(2)
流程如下图所示:
根据之前的测试结果图也可以看出每种test的结果。
openwrt上用stun实现NAT类型检测相关推荐
- Linux怎么检测nat类型,STUN(RFC3489)的NAT类型检测方法
在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信(即所谓的P2P通信),而不需 ...
- stun检查nat类型
nat(Session Traversal Utilities for NAT)会话穿越应用程序,可以让位于nat后的客户端找出自己的公网地址以及对应的Internet端口,最重要的是可以判断自己处于 ...
- P2P内网穿透之Nat类型介绍及Nat类型检测16种NAT组合穿透操作指南整理
目录 根据RFC 3489规定 Nat共分以下类型: 第一部分: NAT类型介绍 Full Cone NAT: Restricted Cone NAT: Port Restricted Cone NA ...
- 路由器NAT类型检测
考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone.Restricted Cone.Port Restricted Cone和Symmetric NAT四种.值得指出的是,对 ...
- 标准STUN判断NAT类型的过程及改进
这里基于stund的实现,来研究标准STUN协议,判断NatType的过程. stund用于判断NatType的接口的用法 首先来看stund中用于判断NatType的接口的用法.这里主要来看stun ...
- 路由器NAT 类型检测实现
四种主要类型 完全圆锥型NAT Full Cone NAT 受限圆锥型NAT Address Restricted Cone NAT 端口受限圆锥型NAT Port Restricted Cone N ...
- 在OpenWrt上配置原生IPv6 NAT,,实现校园网路由器使用ipv6
我的环境 网络:教育网原生双栈,IPv4地址固定,IPv6地址自动获取 固件版本:OpenWrt Chaos Calmer 15.05-rc2 r45918 内核版本:3.18.14 准备工作 第一步 ...
- Linux设备检测外部网络NAT类型
Linux设备检测外部网络NAT类型 在异地组网的过程中发现,对称型NAT(Symmetric NAT)对P2P穿透的支持很不好,因此在搭建P2P穿透个人使用的客户端或服务器之前有必要搞清楚自己所在网 ...
- NAT 类型及检测方法
NAT 类型及检测方法 STUN协议是一个客户机/服务器协议,在公网上存在着大量的STUN服务器,用户可以通过在自己主机上运行STUN客户端远程连接STUN服务器来确认自身的网络状况. 客户端主机所在 ...
最新文章
- java DOS 命令行代码
- c语言实现队列queue(附完整源码)
- Symbian学习笔记(4)——在GUI应用中使用图像
- 仅仅有单日的确诊总人数,无法触发SAP Analytics Cloud的Smart Discovery功能
- LeetCode 2055. 蜡烛之间的盘子(前缀和)
- Java笔记-JDK搭建WebService客户端其他调用方法
- Nginx配置文件示例
- 手机版计算机音乐,计算机音乐手机版
- Rabbitmq结合spring示例
- iPhone 14系列将采用打孔屏:Face ID等元件或置屏幕下
- React 16 Jest ES6 Class Mocks(使用ES6语法类的模拟) 实例三、四
- 关于appium中的Multiaction的用法
- Ubuntu 用vsftpd 配置FTP服务器教程详解
- 如何让计算机系统恢复默认字体,Win10修改系统字体后怎么还原系统默认字体?
- OpenAI发布DALL·E 2
- linux nginx 443端口被占用,Nginx拒绝监听端口443(示例代码)
- 华为千元旗舰迎GPU Turbo会员不限量升级,这件事很“吓人”
- 电脑白屏,笔记本电脑白屏是怎么回事 笔记本电脑白屏解决方法【详解】
- Python实验四:Python程序设计之文件
- 移动ISV大调查系列报告之四——MagicBox的游戏世界
热门文章
- android弹框 简书,Android -自定义弹框
- wget:无法解析主机地址...
- python字符加密2编程_python的字符串操作和*加密解密
- CMDB建设作品:使用Electron构建运维PC客户端
- C++:农夫过河问题
- vue的一、二级路由、路由导航、路由模式、404、
- java bufferedimage压缩_java – 如何将BufferedImage写为没有压缩的PNG?
- 如何远离网络钓鱼欺诈攻击 - 来自真实世界的12个诈骗案例
- SharePoint网站集功能介绍
- stylus在vue中的安装及使用