在NAT网络中测试UDP会话的超时时间

创建stuntest.sh脚本,内容如下

#!/bin/sh
stunclient --protocol 2 --localport 21 stun.hetao.me
echo "sleep 1"
sleep1
stunclient --protocol 2 --localport 21 stun.hetao.me

然后以不同的时间间隔多次运行这个脚本(可以并行运行),看映射的端口有没有变化,有变化就是超时了
./stuntest.sh 235 udp #第一个参数是间隔时间
test1

Binding test: success
Local address: 100.82.167.62:1233
Mapped address: 117.143.55.240:13837
sleep 238
Binding test: success
Local address: 100.82.167.62:1233
Mapped address: 117.143.55.240:13837

test2

Binding test: success
Local address: 100.82.167.62:1240
Mapped address: 117.143.55.240:13853
sleep 245
Binding test: success
Local address: 100.82.167.62:1240
Mapped address: 117.143.55.240:14115
经过了238秒,端口号没有变,但是245秒端口号就变了,说明超时时间应该不超过240秒也就是4分钟

测试用到的stun服务端和客户端是用的这个项目的代码:
https://github.com/jselbie/stunserver

也可以用coturn中的turnutils_natdiscovery中的工具来测试
turnutils_natdiscovery -m -f -t -T 500 stunserver2024.stunprotocol.org
这样会在开始的时候发一次请求,500秒后再发一次请求

openwrt修改NAT会话超时(其它系统方法类似)
vi /etc/sysctl.d/11-nf-conntrack.conf
修改
net.netfilter.nf_conntrack_udp_timeout=240
net.netfilter.nf_conntrack_udp_timeout_stream=300
生效
/etc/init.d/sysctl reload
查看当前NAT会话超时
sysctl net.netfilter.nf_conntrack_udp_timeout

发表回复