版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/70547772
巧用Netstat排除网络故障
作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs
当在Linux服务器上遇到网络故障时,ping和traceroute是常用的两个命令,但是很多时候你需要了解更多的网络细节才有助于解决问题。要实现这一点,可以使用netstat命令,它可以提供网络套接字的详细信息以及其它有用的信息。与ping和traceroute命令一样,可以简单地在命令行使用netstat并立即获取结果。
一、什么是Netstat
netstat命令是处理网络问题的一个非常有用的工具。netstat是“Network Statistics”即网络统计的缩写,它可以显示传入和传出的网络连接,还可以用于获取网络统计信息、协议统计信息、路由表信息等。
我们可以使用netstat来查找网络问题并测量网络流量,因此可以用它收集网络的中断、降速或网络瓶颈。
二、基本的Netstat
要获取当前所有连接的一个列表,只需使用-a选项。
# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:1922 *:* LISTEN
tcp 0 216 chdc154:1922 223.99.111.233:11303 ESTABLISHED
tcp6 0 0 [::]:9000 [::]:* LISTEN
tcp6 0 0 [::]:8009 [::]:* LISTEN
tcp6 0 0 [::]:mysql [::]:* LISTEN
tcp6 0 0 [::]:1922 [::]:* LISTEN
tcp6 0 0 [::]:9090 [::]:* LISTEN
tcp6 0 0 localhost:8005 [::]:* LISTEN
......
它提供了一些对于不同类型的协议(比如TCP和UDP)等的连接的基本信息,以及活跃的Unix域套接字信息。但是,natstat还允许用户获取更具体的信息,以便对调试更有帮助。
三、按连接类型过滤
基于连接类型对结果进行过滤有助于找到所需的信息。比如,你想查看TCP连接,那么可以在上面的-a选项后紧跟一个t选项,具体如下:
# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:1922 *:* LISTEN
tcp 0 216 chdc154:1922 223.99.111.233:11303 ESTABLISHED
tcp6 0 0 [::]:9000 [::]:* LISTEN
tcp6 0 0 [::]:8009 [::]:* LISTEN
......
相似的,如果在-a选项后紧跟u选项,则值列出UDP连接。
四、按监听连接进行过滤
如果想要查看正在监听的连接,那么可以使用-l选项(移除-a选项),比如:
# netstat -l
Active Internet connections (only servers)
......
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 47834116 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 1661287 /run/user/0/systemd/private
unix 2 [ ACC ] SEQPACKET LISTENING 15450 /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 96528873 /run/snapd-snap.socket
unix 2 [ ACC ] STREAM LISTENING 10581 /var/lib/lxd/unix.socket
unix 2 [ ACC ] STREAM LISTENING 10578 /run/uuidd/request
unix 2 [ ACC ] STREAM LISTENING 10582 /run/acpid.socket
......
与-a选项相似,-l选项紧跟t选项,即-lt选项,表示查看正在监听的TCP连接;-lu表示查看正在监听的TCP连接。使用这种方式,可以轻松查看指定端口是否打开和监听,并确定网站应用或APP是否按预期方式运行。
五、查看网络统计信息
# netstat -s
Ip:
1473970908 total packets received
17795365 with invalid addresses
0 forwarded
0 incoming packets discarded
1453512118 incoming packets delivered
2392531460 requests sent out
40 outgoing packets dropped
3 fragments dropped after timeout
48 reassemblies required
15 packets reassembled ok
3 packet reassembles failed
Icmp:
3589646 ICMP messages received
37 input ICMP message failed.
ICMP input histogram:
destination unreachable: 178
timeout in transit: 18
echo requests: 3589445
echo replies: 5
......
如你所见,-s选项提供了一些在调试时可能有用的统计信息,例如总数,传入和传出数据包以及收到,发送和失败的ICMP消息。