Linux netstat命令详解

netstat 是一个 Linux 系统管理工具,用于打印出网络系统中的各种网络相关信息,包括网络连接,路由表,网络接口信息,多播成员等。下面是 netstat 命令的使用详解:

常用选项
-a:列出所有的网络连接,包括监听状态的连接。
-n:直接使用 IP 地址,而不进行反向域名解析。
-t:列出 TCP 协议的连接。
-u:列出 UDP 协议的连接。
-l:列出正在监听状态的连接。
-p:显示进程 ID 和进程名称。
-r:显示系统路由表信息。
-c:连续输出信息,每隔一秒钟显示一次。

常用用法
显示所有的网络连接和端口号:netstat -a
显示所有 TCP 连接:netstat -at
显示所有 UDP 连接:netstat -au
显示所有监听状态的连接:netstat -l
显示所有已建立的连接:netstat -an | grep ESTABLISHED
显示系统路由表信息:netstat -r
显示所有监听状态的连接和进程 ID 和进程名称:netstat -ap | grep LISTEN

示例
显示所有 TCP 连接:

$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:smtp          *:*                     LISTEN
tcp        0      0 localhost:6942          *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:mysql         *:*                     LISTEN
tcp        0      0 localhost:6942          localhost:35820         ESTABLISHED
tcp        0      0 localhost:35820         localhost:6942          ESTABLISHED

显示所有监听状态的连接和进程 ID 和进程名称:

$ netstat -ap | grep LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN      948/sshd        
tcp        0      0 localhost:mysql         *:*                     LISTEN      1014/mysqld     

显示系统路由表信息:

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     *               255.255.255.0   U         0 0          0 eth0

注意:使用 netstat 命令需要管理员权限。