6 Linux实用工具用于测试网络连接性
想知道如何检查两个网络节点之间的连接性吗?
系统管理员的常见任务之一是检查连接性以排除故障。可能是应用程序无法连接到后端服务,无法从外部URL获取数据,验证流是否打开等等。
无论是什么情况,以下的工具/命令都会对您有所帮助。它们在CentOS上进行了测试,并且我认为在其他Linux发行版上也能正常工作。
让我们来探索一下吧…
telnet
telnet是一种广泛使用的测试服务器之间、服务器与其他网络设备之间连接的命令。该命令的语法很简单。
telnet $destinationIP $PORT
假设您想测试是否可以连接到10.0.0.1 IP地址上的8080端口,那么命令应该是这样的。
telnet 10.0.0.1 8080
如果连接没有问题,那么您应该会看到连接成功的消息。
Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.
注意:如果在执行telnet时出现命令未找到的错误,那么您需要install telnet as I explained here。
在大多数情况下,telnet应该能帮助您。然而,如果您需要其他选项,这里有一些telnet的替代方案。
ncat或nc
Ncat(又名nc)是一个功能强大的网络工具,具有许多功能,比如绑定和接受连接,远程执行命令,读写数据等等。它同时支持IPv4和IPv6。
要进行一个简单的测试以检查端口是否打开,您可以执行以下命令。
nc -vz $HOSTNAME $PORT
让我们以在yaoweibin.com上测试443端口为例。
[root@yaoweibin-lab ~]# nc -vz yaoweibin.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.
[root@yaoweibin-lab ~]#
如上所述,您还可以使用nc
来绑定连接到某个端口。当您没有实际运行的服务但希望确保连接性存在时,这很方便。
要开始监听某个端口:
nc -l $PORTNUMBER
它将绑定到给定的端口号。
如果未安装ncat,则可以在CentOS/RHEL服务器上使用yum install nc
进行安装。
wget
wget是一个有用的命令,用于下载/测试HTTP、HTTPS和FTP。如果您是一名网络工程师或经常处理与Web相关的问题,那么wget是您的好朋友。使用wget进行测试很简单。
wget $URL
下面是一个测试tools.yaoweibin.com的例子
[root@yaoweibin-lab ~]# wget tools.yaoweibin.com
--2019-05-09 20:40:01-- http://tools.yaoweibin.com/
Resolving tools.yaoweibin.com (tools.yaoweibin.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ...
Connecting to tools.yaoweibin.com (tools.yaoweibin.com)|104.25.134.107|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://tools.yaoweibin.com/ [following]
--2019-05-09 20:40:01-- https://tools.yaoweibin.com/
Connecting to tools.yaoweibin.com (tools.yaoweibin.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]
[root@yaoweibin-lab ~]#
如果显示已连接,则表示没有连接问题。
查看此链接以了解一些常用的链接:
curl
curl是一种多功能工具。
你知道你可以使用curl telnet到一个端口吗?
好了,现在你知道了。
curl -v telnet://$IP:$PORT
以下是一个可行的示例。
[root@yaoweibin-lab ~]# 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)
当没有监听端口或有防火墙问题时,你将看到trying…
[root@yaoweibin-lab ~]# 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
一个拥有数百个功能的流行工具。通常被视为安全工具,它允许您测试单个IP/端口或范围。
测试单个端口
nmap -p $PORT $IP
测试siterelic.com上端口443的示例
[root@yaoweibin-lab ~]# 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
[root@yaoweibin-lab ~]#
看看状态列。如果看到开放,表示连接正常。如果状态是过滤,则表示连接不存在。
Ping
最常用的命令之一是检查远程主机是否响应ICMP ECHO_REQUEST。请记住,当远程网络的ICMP被阻止时,这可能不会给您准确的结果。假设不是这种情况,您可以按照下面的示例ping IPv4或IPv4网络终点。
ping $ipaddress
ping $url
例如,yaoweibin.com的成功结果
chandan@192 ~ % ping yaoweibin.com
PING yaoweibin.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
例如,内部IP的失败结果。
chandan@192 ~ % 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
命令。
chandan@192 ~ % ping6 yaoweibin.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
如果你需要通过互联网进行远程ping,你可以使用链接7。
结论
telnet正在逐渐退出最新的Linux版本。感谢上面的telnet替代方法。
如果你是Linux新手并且想要学习,请查看此链接8。