Linux netstat 命令实战示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 Linux 的 netstat 命令来监控和排查网络连接及网络接口统计信息。实验内容涵盖了 netstat 命令的用途和语法,使用 netstat 探索网络连接,以及分析网络统计信息并排查网络问题。你将通过实践掌握如何使用 netstat 来了解网络状态并识别潜在问题。

实验首先介绍了 netstat 命令的用途及其基本语法。接着,实验将引导你使用 netstat 探索网络连接,包括显示活动连接、监听端口以及与每个连接相关的进程。最后,实验将介绍如何使用 netstat 分析网络统计信息并排查网络问题,例如识别高网络利用率或连接问题。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") subgraph Lab Skills linux/grep -.-> lab-422837{{"Linux netstat 命令实战示例"}} linux/ps -.-> lab-422837{{"Linux netstat 命令实战示例"}} linux/ifconfig -.-> lab-422837{{"Linux netstat 命令实战示例"}} linux/netstat -.-> lab-422837{{"Linux netstat 命令实战示例"}} linux/ping -.-> lab-422837{{"Linux netstat 命令实战示例"}} end

了解 netstat 命令的用途和语法

在这一步中,你将学习 Linux 中 netstat 命令的用途及其基本语法。netstat 是一个强大的工具,用于监控和排查网络连接及网络接口统计信息。

首先,让我们来探索 netstat 命令的基本语法:

$ netstat [options]

netstat 最常用的选项包括:

  • -a:显示所有网络连接和监听端口
  • -n:显示数字地址而不解析主机名
  • -t:显示 TCP 连接
  • -u:显示 UDP 连接
  • -p:显示与每个连接相关的进程 ID 和名称
  • -s:显示网络统计信息

让我们通过一些示例来理解 netstat 命令的输出:

$ sudo netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld
tcp        0      0 192.168.1.100:22        192.168.1.101:50036     ESTABLISHED 1234/sshd

示例输出:

  • netstat -antp 命令显示所有活动的 TCP 连接,包括监听端口和已建立的连接。
  • 输出显示了协议、本地和远程地址、连接状态,以及与每个连接相关的进程 ID 和程序名称。

通过这些内容,你已经对 netstat 命令及其语法有了基本的了解。在下一步中,你将探索 netstat 的更高级用法,以分析网络连接。

使用 netstat 命令探索网络连接

在这一步中,你将学习如何使用 netstat 命令来探索和分析系统上的网络连接。

首先,让我们显示所有活动的网络连接,包括监听端口和已建立的连接:

$ sudo netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld
tcp        0      0 192.168.1.100:22        192.168.1.101:50036     ESTABLISHED 1234/sshd

示例输出:

  • netstat -antp 命令显示所有活动的 TCP 连接,包括监听端口和已建立的连接。
  • 输出显示了协议、本地和远程地址、连接状态,以及与每个连接相关的进程 ID 和程序名称。

接下来,让我们过滤输出,仅显示监听端口:

$ sudo netstat -antp | grep LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld

示例输出:

  • grep LISTEN 过滤器仅显示处于 LISTEN 状态的网络连接,这表示系统正在这些端口上监听传入的连接。

要仅显示已建立的连接,可以使用以下命令:

$ sudo netstat -antp | grep ESTABLISHED
tcp        0      0 192.168.1.100:22        192.168.1.101:50036     ESTABLISHED 1234/sshd

示例输出:

  • grep ESTABLISHED 过滤器仅显示处于 ESTABLISHED 状态的网络连接,这表示连接是活动的,并且可以交换数据。

通过结合不同的选项和过滤器使用 netstat 命令,你可以详细地探索和分析系统上的网络连接。

分析网络统计信息并排查网络问题

在这最后一步中,你将学习如何使用 netstat 命令分析网络统计信息并排查系统上的网络问题。

首先,让我们使用 -s 选项显示整体网络统计信息:

$ sudo netstat -s
Ip:
    Forwarding: 2
    ...
Tcp:
    Active opens: 10
    Passive opens: 5
    ...
Udp:
    InDatagrams: 100
    NoPorts: 20
    ...

示例输出:

  • netstat -s 命令显示了广泛的网络统计信息,包括 IP、TCP 和 UDP 统计信息。
  • 这些信息对于识别潜在的网络性能问题或异常非常有用。

接下来,让我们使用 -i 选项更详细地查看网络接口统计信息:

$ sudo netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp0s3  1500 0     12345   0      0       0      54321     0       0       0 BMRU
lo     65536 0     54321   0      0       0      12345     0       0       0 LRU

示例输出:

  • netstat -i 命令显示了每个网络接口的详细统计信息,包括接收和发送的数据包数量,以及错误和丢包计数。
  • 这些信息可以帮助你识别潜在的网络接口问题,例如高错误率或丢包率。

最后,让我们使用 netstat 命令排查一个网络连接问题。假设你与远程服务器的连接出现问题,可以使用以下命令来调查问题:

$ sudo netstat -antp | grep 192.168.1.101
tcp        0      0 192.168.1.100:22        192.168.1.101:50036     ESTABLISHED 1234/sshd

示例输出:

  • netstat -antp | grep 192.168.1.101 命令搜索与 IP 地址 192.168.1.101 相关的任何活动连接。
  • 输出显示本地系统(192.168.1.100)与远程服务器(192.168.1.101)之间存在一个已建立的 SSH 连接。
  • 这些信息可以帮助你确定连接问题是出在本地系统、远程系统,还是两者之间的网络基础设施上。

通过使用 netstat 命令的各种选项和功能,你可以有效地分析网络统计信息并排查 Linux 系统上的网络问题。

总结

在本实验中,你首先学习了 Linux 中 netstat 命令的用途及其基本语法。netstat 是一个强大的工具,用于监控和排查网络连接及网络接口统计信息。你探索了 netstat 最常用的选项,例如 -a 用于显示所有网络连接和监听端口,-n 用于显示数字地址而不解析主机名,以及 -p 用于显示与每个连接相关的进程 ID 和程序名称。

接下来,你学习了如何使用 netstat 命令探索和分析系统上的网络连接。你首先使用 netstat -antp 命令显示了所有活动的网络连接,包括监听端口和已建立的连接。这为你提供了关于协议、本地和远程地址、连接状态以及与每个连接相关的进程 ID 和程序名称的详细信息。

Linux 命令速查表