Linux 上的 netstat 与 ss 使用指南Linux 上的 netstat 与 ss 使用指南Linux 上的 netstat 与 ss 使用指南Linux 上的 netstat 与 ss 使用指南
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux 上的 netstat 与 ss 使用指南

发表 admin at 2025年2月28日
类别
  • 未分类
标签
コアサーバーV2プランご契約でドメイン更新費用が永久無料

欢迎阅读 Linux 上的 netstat 与 ss 使用指南,该指南尝试通过示例教您使用 netstat 和 ss 命令。我们将首先定义ss和netstat命令是什么、它们的用途,并通过示例演示如何使用它们进行网络分析和故障排除。

什么是netstat?

Netstat 是一个命令行网络实用程序,用于显示 TCP/UDP 的网络连接、网络协议统计信息、接口统计信息、路由表、伪装连接、多播成员身份等。 netstat 程序已过时,其替代品是ss。 一些 netstat 命令已被 ss 命令取代,例如:

$ netstat -r   replaced by   $ ip route
$ netstat -i   replaced by   $ ip -s lin
$ netstat -g   replaced by   $ ip maddr.

ss是什么?

ss 是一个用于研究 Linux 和 Unix 系统中套接字的实用程序。它显示的信息类似于 netstat 并且能够转储套接字统计信息。与其他工具相比,ss 命令可以显示更多的 TCP 和状态信息。默认情况下,ss 显示已建立连接的打开的非侦听套接字(例如 TCP/UNIX/UDP)的列表。

Linux 上的 netstat 与 ss 使用指南及示例:

在本节中,我们将了解 Linux 和 Unix 系统中使用的 ss 和 netstat 命令行工具的示例。在所有最新发行版上,这些命令应该随时可用,您可以通过在终端上键入命令来调用它们。如果您的发行版未附带任何工具,请参阅其文档以了解如何安装它们。

以下是netstat命令的命令行用法。您稍后可以查看 ss 命令的用法并进行比较,然后您将决定哪个工具最适合您。请注意,netstat 已被弃用,很快就会被淘汰,因此建议您学习使用 ss 命令。

netstat 用法:

与 netstat 命令一起使用的常见命令行选项有:

-l, –listening 显示监听服务器套接字
-a, –all 显示所有套接字(默认:已连接)
-r, –route 显示路由表
–i, –interfaces 显示接口表
-g, –groups 显示组播组成员资格
-s, –statistics 显示网络统计信息(如 SNMP)
-M, –masquerade 显示伪装的连接
-v, –verbose 详细
-W, –wide 不截断 IP 地址
-n, –numeric 不解析名称< br>-e, –extend 显示其他/更多信息
-p, –programs 显示套接字的 PID/程序名称
-o, –timers 显示计时器
-F, –fib 显示转发信息库(默认)
-C, –cache 显示路由缓存而不是FIB

用法示例:

显示所有套接字(默认:已连接)

要获取系统上不同协议的所有活动连接的列表,请运行:

$ netstat -a

列出所有 UDP 端口

$ netstat -au

列出所有 TCP 端口:

$ netstat -at

列出所有监听端口:

$ netstat -l

列出所有侦听 TCP 端口:

$ netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN 
tcp 0 0 localhost.localdo:18083 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:37959 0.0.0.0:* LISTEN 
tcp 0 0 localhost.locald:mshvlm 0.0.0.0:* LISTEN 

列出所有监听的udp端口:

要列出侦听 udp 端口,请使用选项-lu

$ netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
udp 0 0 0.0.0.0:52179 0.0.0.0:* 
udp 0 0 0.0.0.0:mountd 0.0.0.0:* 
udp 0 0 dev.jmtai.com:bootpc 0.0.0.0:* 
udp 0 0 0.0.0.0:sunrpc 0.0.0.0:* 
 ....

显示内核路由表

选项-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 tun0
default _gateway 0.0.0.0 UG 0 0 0 wlp1s0
10.10.46.0 _gateway 255.255.255.0 UG 0 0 0 tun0
10.20.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0

查看哪个进程正在侦听特定端口:

格式为:netstat -pln | grep <端口> | awk ‘{print $NF}’。作为查看哪个进程正在侦听端口 22 的示例:

$ sudo netstat -pln | grep 22 | awk '{print $NF}'
7885/sshd

要确认这一点,请通过 ps 命令进行检查。

$ ps aux | grep 7885
root 7885 0.0 0.0 40692 5452 ? Ss 18:54 0:00 /usr/bin/sshd -D

仅显示 IPv4 侦听端口(TCP 和 UDP)

默认情况下,Netstat 会提供 IPv4 和 IPv6 侦听端口列表。要获取仅包含 IPv4 的列表,请使用:

$ sudo netstat -vutlnp --listening -4
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:22 0.0.0.0:* LISTEN 7885/sshd 
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - 
tcp 0 0 127.0.0.1:18083 0.0.0.0:* LISTEN 429/vboxwebsrv 
tcp 0 0 0.0.0.0:37959 0.0.0.0:* LISTEN - 
tcp 0 0 127.0.0.1:6600 0.0.0.0:* LISTEN 678/mpd 
tcp 0 0 0.0.0.0:49743 0.0.0.0:* LISTEN 422/rpc.statd 
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init 
...

显示所有接口的网络统计信息

可以使用命令选项-s查看界面统计信息。

sudo netstat -s

要显示 tcp 统计信息,请使用 -st, 要显示 udp 统计信息,请使用 -su

显示 IPv4 和 IPv6 的多播组成员身份

组播是组通信,其中数据传输同时发送到一组目标计算机。要获取多播组成员身份,请使用选项-g

$ sudo netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
wlp1s0 1 224.0.0.251
wlp1s0 1 all-systems.mcast.net
tun0 1 224.0.0.251
tun0 1 all-systems.mcast.net
lo 1 ff02::1
lo 1 ff01::1
wlp1s0 1 ff02::fb
wlp1s0 1 ff02::1:ff48:91f8
wlp1s0 1 ff02::1
wlp1s0 1 ff01::1
tun0 1 ff02::fb
tun0 1 ff02::1
tun0 1 ff01::1

列出所有正在侦听的 UNIX 端口

$ sudo netstat -lx
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 21766 /tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 276493 /run/user/1000/pulse/cli
unix 2 [ ACC ] STREAM LISTENING 21789 /run/user/1000/i3/ipc-socket.644
unix 2 [ ACC ] STREAM LISTENING 49182 /tmp/qtsingleapp-HipCha-9b70-3e8
unix 2 [ ACC ] STREAM LISTENING 21765 @/tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 18468 /run/gssproxy.sock
unix 2 [ ACC ] STREAM LISTENING 2609 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 2620 /run/rpcbind.sock
...

查找正在运行的进程使用的端口

$ sudo netstat -ap | grep ssh
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 7885/sshd 
tcp6 0 0 [::]:ssh [::]:* LISTEN 7885/sshd

在可能的情况下显示 IP 地址的域名:

netstat -ltF

此命令将列出侦听 tcp 端口,但在输出中显示域名。

以连续模式显示输出

使用 –c  选项可以通过每五秒刷新一次来连续显示输出。

netstat -ac 5

如果您喜欢我们所做的事情,请从下面的链接下载本教程的 pdf 版本来支持我们:

SS的用法:

本节通过示例介绍 ss 命令的用法。这些命令可能会遗漏一些您最喜欢的命令,因此请随时对任何添加内容发表评论。 ss 命令从内核命名空间获取所有数据,因此与 netstat 相比可以获取更多数据。

与 ss 命令一起使用的常见选项有:

–n, –numeric 不解析服务名称
-r, –resolve :解析主机主机名。
-l, –listening< 显示监听套接字
-o, –options 显示定时器信息
-e, –extended 显示详细的套接字信息
- m, –memory 显示套接字内存使用情况
-p, –processes 显示使用套接字的进程
–s, –summary 显示套接字使用情况摘要
-N, –net 切换到指定的网络命名空间名称
-4, –ipv4 仅显示 IP 版本 4 套接字
-6, –ipv6 仅显示 IP 版本 6 套接字
–0, –packet 显示 PACKET 套接字
-t, –tcp 仅显示TCP 套接字
-S, –sctp 仅显示 SCTP 套接字
-u, –udp 仅显示 UDP 套接字
-w, – raw 仅显示 RAW 套接字
-x, –unix 仅显示 Unix 域套接字
-f, –family=FAMILY 显示类型的套接字家庭

例子;

列出所有连接

要列出所有连接,只需执行 ss 命令,无需传递任何选项。

# ss

显示所有列出的 tcp 套接字,包括相应的进程

使用的选项是-lt,如前面显示的选项列表中所述。

# ss -tlp

显示端口 443 上连接到 192.168.1.10 的所有套接字

# ss -t dst 192.168.1.10:443

显示所有与 ssh 相关的连接

# ss -t state established '( dport = :ssh or sport = :ssh )'
Recv-Q Send-Q Local Address:Port Peer Address:Port 
0 0 192.168.0.16:60334 192.168.20.3:ssh

列出没有主机名解析的 tcp 和 udp 端口

# ss -tun
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port 
tcp ESTAB 0 0 192.168.0.16:41464 216.58.223.74:443 
tcp ESTAB 0 0 192.168.0.16:57354 5.160.200.106:80 
tcp ESTAB 0 0 192.168.0.16:60334 88.198.68.148:22 
....

拥有连接的打印进程

# ss -ltp
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* users:(("sshd",pid=7885,fd=3))
LISTEN 0 64 0.0.0.0:shilp 0.0.0.0:* 
LISTEN 0 100 127.0.0.1:18083 0.0.0.0:* users:(("vboxwebsrv",pid=429,fd=9))
...

显示套接字使用摘要

通过-s选项获取套接字相关统计信息的列表,-t和-u可分别用于仅显示 tcp 或 udp 统计信息。默认情况下两者都会显示。

# ss -s
Total: 818 (kernel 946)
TCP: 65 (estab 42, closed 3, orphaned 4, synrecv 0, timewait 1/0), ports 0

Transport Total IP IPv6
* 946 - - 
RAW 1 0 1 
UDP 14 8 6 
TCP 62 56 6 
INET 77 64 13 
FRAG 0 0 0

显示定时器信息

可以使用 -o 选项获取计时器信息。

# ss -tn -o

仅显示原始数据包

使用-w命令选项,

# ss -w
Recv-Q Send-Q Local Address:Port Peer Address:Port 
0 0 *:ipv6-icmp *:*

Linux 上的 netstat 与 ss 使用指南到此结束,我们将不断更新列表,因此请在 Twitter 和 Facebook 上关注我们以获取最新更新。通过使用下面的链接下载本指南的 pdf 版本来支持我们。

©2015-2025 Norria support@alaica.com