如何检测网络端点间的连接状况?
系统管理员常常需要检查网络连接,以便排除网络故障。这可能涉及到应用程序无法连接到后端服务,无法从外部网址获取数据,或者验证数据流是否已正确建立等等问题。
无论具体情况如何,以下这些实用工具和命令都能帮到您。 它们在 CentOS 系统上经过测试,并且在其他 Linux 发行版上也应该能正常运行。
让我们开始探索吧……
远程登录
telnet
是一个广泛使用的命令,主要用于测试服务器之间,或者服务器与网络设备之间的基本连接。这个命令的语法非常直接。
telnet $目标IP地址 $端口号
例如,如果您需要测试能否连接到 IP 地址为 10.0.0.1
的 8080
端口,则应使用以下命令:
telnet 10.0.0.1 8080
如果连接正常,您会看到类似下面的已连接消息:
Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.
注意: 如果您在执行 telnet
命令时收到 “command not found” 的错误提示,则需要先安装 telnet
。您可以参考相关文档进行安装。
在大多数情况下,telnet
可以满足基本需求。但如果您需要更多功能,下面是一些替代 telnet
的工具。
ncat 或 nc
Ncat
(也称为 nc
)是一个功能强大的网络工具,具备很多功能,例如绑定和接收连接、远程执行命令、写入和读取数据等。它同时支持 IPv4 和 IPv6。
要进行简单的端口连通性测试,可以使用以下命令:
nc -vz $主机名 $端口号
例如,要测试 techblik.com.com
的 443
端口,可以输入:
[[email protected] ~]# nc -vz techblik.com.com 443
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 104.25.133.107:443.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
[[email protected] ~]#
如前所述,您还可以使用 nc
绑定一个连接以监听特定端口。当您没有运行实际服务,但需要确保连接存在时,这会非常方便。
开始监听端口的命令如下:
nc -l $端口号
此命令会将端口绑定到指定的数字。
如果您的系统没有安装 ncat
,可以使用 yum install nc
命令在 CentOS/RHEL 服务器上安装。
wget
wget
是一个下载或测试 HTTP、HTTPS 和 FTP 连接的有用命令。如果您是 Web 开发工程师,或者经常需要处理与 Web 相关的问题,wget
将会是您的好帮手。使用 wget
进行测试非常简单。
wget $URL
以下是一个测试 tools.techblik.com.com
的例子:
[[email protected] ~]# wget tools.techblik.com.com
--2019-05-09 20:40:01-- http://tools.techblik.com.com/
Resolving tools.techblik.com.com (tools.techblik.com.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ...
Connecting to tools.techblik.com.com (tools.techblik.com.com)|104.25.134.107|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://tools.techblik.com.com/ [following]
--2019-05-09 20:40:01-- https://tools.techblik.com.com/
Connecting to tools.techblik.com.com (tools.techblik.com.com)|104.25.134.107|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'index.html.2'
[ <=> ] 15,139 --.-K/s in 0.001s
2019-05-09 20:40:02 (12.8 MB/s) - 'index.html.2' saved [15139]
[[email protected] ~]#
如果显示 “connected”,则表示连接正常。
您可以查看此链接了解更多常用的 wget
命令示例。
curl
curl
是一种多功能的工具。
您知道可以使用 curl
远程登录到端口吗?
现在您知道了!
curl -v telnet://$IP地址:$端口号
以下是一个可行的例子:
[[email protected] ~]# curl -v telnet://chandan.io:443
* About to connect() to chandan.io port 443 (#0)
* Trying 104.31.68.106...
* Connected to chandan.io (104.31.68.106) port 443 (#0)
当端口没有监听或存在防火墙问题时,您会看到如下所示的提示:
[[email protected] ~]# curl -v telnet://chandan.io:4434
* About to connect() to chandan.io port 4434 (#0)
* Trying 104.31.68.106...
您也可以使用 curl
下载数据。它支持多种协议,包括 HTTP、HTTPS、FTP、IMAP、LDAP、POP3、SCP、SFTP、GOPHER 等。
nmap
nmap
是一款拥有数百种功能的流行工具。它通常被视为安全工具,可以用来测试单个 IP/端口,或者一个 IP 范围内的端口。
测试单个端口的命令如下:
nmap -p $端口号 $IP地址
以下是一个测试 siterelic.com
的 443
端口的示例:
[[email protected] ~]# nmap -p 443 siterelic.com
Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-10 06:55 UTC
Nmap scan report for siterelic.com (104.27.174.50)
Host is up (0.0079s latency).
Other addresses for siterelic.com (not scanned): 104.27.175.50 2606:4700:30::681b:ae32 2606:4700:30::681b:af32
PORT STATE SERVICE
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
[[email protected] ~]#
请注意状态栏。如果状态显示 “open”,则表示连接正常。如果状态显示 “filtered”,则表示连接不存在。
ping
ping
是一个广泛使用的命令,用来检查远程主机是否响应 ICMP ECHO_REQUEST。请注意,当 ICMP 在远程网络的防火墙上被阻止时,可能无法得到准确的结果。如果不是这种情况,您可以 ping
IPv4 或 IPv6 的网络端点,如下所示:
ping $IP地址
ping $URL
例如,成功 ping
到 techblik.com.com
的结果如下:
[email protected] ~ % ping techblik.com.com
PING techblik.com.com (104.27.119.115): 56 data bytes
64 bytes from 104.27.119.115: icmp_seq=0 ttl=53 time=7.944 ms
64 bytes from 104.27.119.115: icmp_seq=1 ttl=53 time=8.870 ms
例如,ping
内部 IP 的失败结果如下所示:
[email protected] ~ % ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
如果端点支持 IPv6,可以使用 ping6
命令,如下所示:
[email protected] ~ % ping6 techblik.com.com
PING6(56=40+8+8 bytes) 2a01:4b00:88e4:8700:d8ca:bf50:159c:2a1d --> 2606:4700:20::681b:7673
16 bytes from 2606:4700:20::681b:7673, icmp_seq=0 hlim=250 time=8.650 ms
16 bytes from 2606:4700:20::681b:7673, icmp_seq=1 hlim=250 time=8.738 ms
如果您需要通过 Internet 进行远程 ping
测试,可以使用在线的 ping
工具。
总结
telnet
在最新的 Linux 版本中正在逐渐被淘汰。感谢以上介绍的 telnet
替代方案。
如果您是 Linux 新手并且想要学习,可以考虑查看这个 Udemy 课程。