昨天看到一篇文章说怎么检测TCP和UDP端口,结果点进去一看,好家伙,TCP端口用telnet命令检测,UDP就说检测不了,骗我流量呢?
本文专门针对UDP端口进行检测。
1. 测试环境
服务端操作系统:Ubuntu20.04.6
客户端操作系统:CentOS7
测试命令:hping3 和 nc
如果服务端启用了防火墙,需要将指定的端口放通,或者临时将防火墙关闭。
2. 服务端配置
服务端主要查看开启了哪些UDP端口,我们使用这些端口进行测试:
netstat -ulnp
服务端已经开启了5353、37430、631。
3. 客户端配置
在客户端上安装hping3和nc命令。
3.1 配置安装源
安装阿里的YUM源:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
3.2 安装命令
yum install hping3 nc -y
4. 测试UDP端口
测试过程我们来对比命令的结果,UDP端口启用时与未启动的结果有什么区别。
已开启端口:5353、37430
未开启端口:5354、37431
4.1 使用hping3测试
4.1.1 检测开启的UDP
hping3 --udp 192.168.211.201 -p 5353 -c 4
hping3 --udp 192.168.211.201 -p 37430 -c 4
客户端只显示100%丢包。
4.1.2 检测未开启的UDP
hping3 --udp 192.168.211.201 -p 5354 -c 4
hping3 --udp 192.168.211.201 -p 37431 -c 4
客户会提示100%丢包,并且还会提示ICMP端口不可达“ICMP Port Unreachable”。
4.1.3 小结
综合所述:如果ping UDP端口通的话,则不会有任何提示,如果不通,则提示Port Unreachable。
4.2 使用nc命令检测
4.2.1 检测开启的UDP
nc -vuz 192.168.211.201 5353
nc -vuz 192.168.211.201 37430
端口正常启用时,会提示“UDP packet sent successfully”
4.1.2 检测未开启的UDP
nc -vuz 192.168.211.201 5354
nc -vuz 192.168.211.201 37431
如果端口没有启用,则会提示“Connection refused”。
4.1.3 小结
从nc命令的检测结果很明显就能看出UDP端口是否启用,如果还看不出来,则可以试试下面命令:
nc -vuz 192.168.211.201 5353 < /dev/null &> /dev/null && echo "online" || echo "offline"
nc -vuz 192.168.211.201 5354 < /dev/null &> /dev/null && echo "online" || echo "offline"
5. 总结
UDP端口能不能被检测出来,相信大家已经有所了解,大家可以自行尝试。