Linux系统中TCP/UDP端口测试方法
应用场景
本文主要用于介绍如何在Linux操作系统的实例中测试TCP、UDP端口的连通性,以便在异常场景下排查网络是否正常。
测试TCP端口连通性
根据端口状态选择合适的方案:
- 待测试端口已被监听,可选方案一:使用Telnet测试已被监听端口
- 待测试端口未被监听,可选方案二:创建新的监听端口测试
具体方案介绍如下。
方案一:使用Telnet测试已被监听端口
- 登录Linux操作系统的实例,详情参考Linux ECS登录方式概述。
- 执行命令使用Telnet工具测试端口连通性,其中host_ip需要替换为目标节点的IP地址,port替换为待测试端口。
sudo telnet <host_ip> <port>
连接成功时回显如下,具体内容可能会因操作系统不同而有所不同,但一般都会包含Connected to xxx内容。

方案二:创建新的监听端口测试
准备两台Linux实例,分别作为服务端和客户端,测试时测试服务端创建的端口的连通性,客户端负责协助测试。
- 登录Linux操作系统的实例,详情参考Linux ECS登录方式概述。
- 在服务端执行命令确实节点的Python版本情况。
python -V

若提示报错说明未安装Python,需要部署Python,参考搭建Python环境。
- 在服务端执行命令,使用Python自带的Web服务器临时创建新的监听端口,其中port替换为待测试端口。
# Python 2.x版本执行 sudo python -m SimpleHTTPServer <port> # Python 3.x版本执行 sudo python3 -m http.server <port>

- 在客户端执行命令,使用Telnet测试服务端创建的端口,监听端口连通性。
其中,host_ip替换为服务端IP地址,port替换为服务端创建的监听端口。
sudo telnet <host_ip> <port>
连接成功时回显如下,具体内容可能会因操作系统不同而有所不同,但一般都会包含Connected to xxx内容。

随意输入测试内容,如“test”,会提示页面报错,但可以在服务端看到关于输入的内容“test”的相关回显。
客户端如下图:

服务端如下图:

测试UDP端口连通性
准备两台Linux实例,分别作为服务端和客户端,测试时测试服务端创建的端口的连通性,客户端负责协助测试。
- 登录Linux操作系统的实例,详情参考Linux ECS登录方式概述。
- 分别在客户端和服务端执行如下命令,检查是否安装nc程序
which nc
若回显如下说明已安装。

若未安装可根据操作系统不同使用Yum或apt-get安装,以yum为例,执行以下命令安装
sudo yum install -y nc
- 在服务端执行命令,创建需要监听的端口,其中port替换为待测试端口
sudo nc -uvlp <port>
其中,参数u指的是UDP协议,v代表打印详细连接信息,l代表监听模式,等待传入连接或数据包,p指定端口号。
执行成功回显如下。

- 在客户端执行命令,连接服务端的待测试端口,其中host_ip需要替换为服务端的IP地址,port替换为待测试端口。
sudo nc -u <host_ip> <port>

- 连接成功后,在客户端输入测试字符串“test”,观察服务端是否同步收到数据,如果同步收到数据说明端口连通性正常。
客户端回显如下:

服务端回显如下:
