Linux netstat命令示例

命令描述
# netstat -st显示TCP协议特定摘要
# netstat -r显示路由表
# netstat -ie等效于默认的ifconfig命令列出所有活动网络接口
# netstat -antc连续监控所有TCP连接。对于UDP,使用-u选项。
# netstat -ltp使用PID和程序显示所有打开的TCP端口。
# netstat -atep | grep ssh显示所有SSH连接以及用户名,程序和相应的PID。
# netstat -atnep | grep 443在端口443上显示所有连接以及用户ID,程序和相应的PID。
# netstat -s -w显示原始网络统计

常用选项

选项描述
-i显示网络接口表
-a显示聆听和非倾听套接字
-e显示其他信息
-l只显示听力套接字。
-s显示每个协议的摘要统计信息。
-t仅显示TCP连接
-n显示数字地址,而不是尝试确定符号主机,端口或者用户名。

netstat用法

对于大多数功能,netstat命令需要管理权限:

$su
Password:
# netstat

不带选项的情况下执行netstat命令显示所有现有连接,包括其状态,源地址和本地地址。

NetStat的“-i”选项列出系统上所有已配置的网络接口:

# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0   1500        0      0      0 0             0      0      0      0 BMU
enp0s25   1500      148      0      0 0             1      0      0      0 BMU
lo       65536     4752      0      0 0          4752      0      0      0 LRU
wlp3s0    1500   148377      0      1 0        135793      0      0      0 BMRU

-l-t显示所有当前正在侦听的TCP套接字,也就是说,显示状态为“LISTEN”的所有连接。
-u选项,包括UDP连接

#  netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ftp-data        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN

在上面输出中,
localhost:smtp是人类可读的主机名和服务名
使用“-n”选项将抑制此信息,改用数字信息显示。

#  netstat -ltn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:20              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN

-p选项可用于显示绑定到任何特定套接字的程序。

# netcat -l -p 20 &
[1] 8941
# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2891/nginx: master  
tcp        0      0 0.0.0.0:20              0.0.0.0:*               LISTEN      8941/netcat         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      518/sshd            
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      472/cupsd           
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      2891/nginx: master  
tcp6       0      0 :::22                   :::*                    LISTEN      518/sshd            
tcp6       0      0 ::1:631                 :::*                    LISTEN      472/cupsd

注意,在socket0.0.0.0:20的第二行,netstat命令还显示了一个程序和绑定到此socket的PID,在本例中是netcat和PID2891
使用“-a”选项可以监视整个TCP网络连接握手,特别是在与“-c”选项结合使用以进行连续监听时。

# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:20              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        1      0 10.1.1.8:36576          10.1.1.45:443       CLOSE_WAIT 
tcp        0      0 10.1.1.8:60186          10.1.1.11:443           ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN

-r选项用于显示当前系统的路由表。

# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 wlp3s0
10.0.0.0        0.0.0.0         255.0.0.0       U         0 0          0 wlp3s0
link-local      0.0.0.0         255.255.0.0     U         0 0          0 docker0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0

-s选项用于显示详细统计信息:

# netstat -s
Linux netstat 命令

netstat命令是一个有用的命令,用于显示系统的网络状态。它允许系统管理员通过查询任何网络连接的状态、来源和目的地来跟踪它们。它还可用于显示路由表、接口统计信息、伪装连接以及多播成员身份。

日期:2020-07-07 20:56:48 来源:oir作者:oir