作为一名网管(并不是),有时候需要负责一些网络运维相关的工作,而判断端口是否开放是调试网路中经常用到的技术,下面简单介绍三款常用的端口连通性测试工具,前两者仅适用于TCP端口,第三者同时适用TCP和UDP
Telnet协议
Telnet协议是一种用于远程登录和管理远程主机的网络协议。它允许用户通过网络连接到远程计算机,并在远程计算机上执行命令和操作。
与SSH协议功能类似,不同的是Telnet协议是明文传输,数据可能会遭到拦截和窃取,一般在公网上传输数据时都会选用SSH协议。
虽然传输上不如SSH协议安全,但telnet协议也有着以下一些用途:
-
网络配置和故障排除。Telnet可以用来测试远程主机的端口是否开放,以确保网络服务正常工作。它可以帮助系统管理员和网络工程师在配置和故障排除过程中检查端口状态,并识别可能存在的问题。
-
远程管理和控制。Telnet可以用来进行远程管理和控制远程设备,使用Telnet,管理员可以通过命令行界面访问和操作远程服务器、路由器、交换机等设备。
-
测试远程服务。Telnet可以用来测试远程服务的可用性和功能性。例如,可以使用Telnet连接到远程邮件服务器的25端口来测试SMTP服务是否正常工作,或者连接到远程Web服务器的80端口来检查HTTP服务。
启用Telnet服务
不管是Windows还是Linux,Telnet服务都不是默认启用的,在我们使用之前需要手动启用Telnet服务
首先是Windows,打开Windows设置 -> 应用 -> 程序和功能 -> 启用或关闭Windows功能,勾选Telnet Client
![](https://i-blog.csdnimg.cn/direct/48bdcd47a779461baa51e94b5451a91e.png)
Linux的话就需要安装Telnet工具,例如CentOS安装指令如下
sudo yum -y install telnet
而Ubuntu、Debian、Kali系统就是用下面的指令
sudo apt -y install telnet
使用Telnet测试端口开放
Telnet可以用来测试端口是否开放是因为Telnet协议本身的工作方式,当使用Telnet尝试连接到一个特定的IP地址和端口时,Telnet客户端会向目标主机发送一个请求连接的数据包,如果远程主机对此进行响应,表示端口是开放的;如果没有响应或者收到一个拒绝连接的响应,则表示端口关闭
安装完Telnet后,使用下面的一条指令就能快速查看端口是否开放
telnet <hostname> <port>
例如通过Telnet测试本地22端口是否开启,可以输入如下指令
telnet 127.0.0.1 22
判断端口是否开放很简单,提示拒绝连接就是端口未开放,除此之外出现回显端口协议信息或者进入某个命令行界面都算连接成功
Tcping
在实际工作中,telnet 使用有些缺陷,例如连接发现端口开启后会进入控制台并卡住,要再测试其他端口就需要重新创建一个终端。如果短时间内要测量多个端口使用 telnet 协议会非常繁琐,此时更适合使用 tcping
tcping 是一个用于测试 TCP 连接的命令行工具,它类似于常用的 ping 命令,但是针对的是 TCP 协议而不是 ICMP 协议。tcping工具可以用于测试主机能否对指定端口建立TCP连接,以及测试TCP连接的延迟,不受目标主机禁 ping 影响。
该工具并非 windows 自带,需要在访问官网 Tcping 下载软件包
下载完毕后可以将软件放在 C:\Windows\System32\
目录下,或者给他设置环境变量,这样在命令行终端中就能直接使用了
使用方式很简单,工具后面接目标域名或 IP 地址,以及端口号就行,open
表示端口开放
tcping [server] [port]
可以看到他的输出结果格式类似于 ping,可以随时 Ctrl+ C 中断,用于快速测试多个端口连通性非常好用
NetCat
需要注意的是:前两者都只能测试TCP端口连通性,无法测试UDP端口
如果想要同时兼顾测试两种端口的连通性,就可以考虑使用NetCat,俗称NC
安装NC
Linux系统中Ubuntu系统一般自带了NC,CentOS系统需要通过下面的指令安装
yum install -y nc
Windows系统去官网下载:https://eternallybored.org/misc/netcat/
下载后自行解压压缩包添加环境变量就可以使用了,这里不多细讲添加环境变量的方法
NC使用方法
NC别称网络中的瑞士军刀,自身携带的功能很多,下面我们仅介绍该工具监听本地端口和测试端口连通的指令,其他更多指令有需要可以自行去学习
nc -l -u -p <Port> # 监听本地UDP端口
nc -l -t -p <Port> # 监听本地TCP端口
nc -nvu <IP> <Port> # 探测UDP端口
nc -nvt <IP> <Port> # 探测TCP端口
使用NC测试端口是否开放,如果开放会回显连接成功,未开放则什么数据都不显示