如何监控网络连接 ss命令替代netstat

ss 是替代 netstat 的更高效工具,因其性能更高、输出更清晰且功能更强,主流系统已推荐使用。1. 查看所有活动连接:ss -tuln;2. 查看所有 tcp 连接:ss -tn;3. 查看监听端口:ss -ln;4. 查看指定端口连接:ss -tn ‘( dport = :80 or sport = :80 )’;5. 查看已建立连接:ss -tn state established;6. 查看进程信息:ss -tunlp(需 root 权限);7. 查看统计信息:ss -s。高级用法包括组合过滤、watch 实时监控及指定 ip 协议版本,需注意通过 -x、-w 查看 unix 和 raw 套接字,未安装时可通过 iproute2 包部署,ss 可完全取代 netstat 并提升诊断效率。

如何监控网络连接 ss命令替代netstat

在现代 linux 系统中,

netstat

命令虽然广为人知,但由于其性能较差且已停止维护,逐渐被更高效、更快速的

ss

(Socket Statistics)命令所取代。如果你需要监控网络连接状态,

ss

是更推荐的工具。以下是

ss

如何替代

netstat

的详细说明和常用用法。


一、为什么用 ss 替代 netstat?

  • 性能更高
    ss

    直接从内核的

    TCP/udp

    套接字信息中读取数据(通过

    netlink

    接口),而

    netstat

    是通过解析

    /proc/net/

    下的文件,效率较低。

  • 输出更清晰
    ss

    的输出更简洁,信息更全面。

  • 功能更强大:支持更灵活的过滤和状态筛选。
  • 系统默认推荐:主流发行版(如 centos 8+、ubuntu 20.04+)已默认不再安装
    netstat

    ,建议使用

    ss


二、常见 netstat 命令与 ss 的等效替换

1. 查看所有活动连接(TCP/UDP)

# netstat 方式 netstat -tuln  # ss 等效命令 ss -tuln
  • -t

    :显示 TCP 连接

  • -u

    :显示 UDP 连接

  • -l

    :仅显示监听状态(LISTEN)

  • -n

    :以数字形式显示端口和 IP(不解析服务名/主机名)

2. 查看所有 TCP 连接(包括 ESTABLISHED)

# netstat netstat -tn  # ss ss -tn

3. 查看所有监听端口

# netstat netstat -ln  # ss ss -ln

4. 查看某个端口的连接(如 80 端口)

# netstat netstat -an | grep :80  # ss(推荐方式) ss -tn sport = :80 ss -tn dport = :80    # 目标端口为 80 ss -tn '( dport = :80 or sport = :80 )'

使用 sport(源端口)、dport(目标端口)配合 =、!=、 等操作符,支持复杂过滤。

5. 查看 ESTABLISHED(已建立)的连接

# netstat netstat -tn | grep ESTABLISHED  # ss ss -tn state established

其他可用状态包括:

  • syn-sent
  • syn-recv
  • fin-wait-1
  • fin-wait-2
  • time-wait
  • closed
  • close-wait
  • last-ack
  • listening
  • closing

6. 查看进程信息(需权限)

# netstat netstat -tunlp  # ss ss -tunlp
  • -p

    :显示关联的进程(PID/程序名)

  • 注意:需要 root 权限才能看到所有进程信息。

7. 查看 TCP 连接统计信息

# netstat netstat -s  # ss ss -s

输出各协议的连接统计,如 SYN 溢出、重传等,适合快速诊断网络异常。


三、实用技巧与高级用法

1. 组合过滤(逻辑表达式)

# 查看目标端口是 22 且状态为 ESTABLISHED 的连接 ss -tn 'dport = :22 and state established'  # 查看非本地回环的连接 ss -t src != 127.0.0.1

2. 监控连接变化(配合 watch)

watch -n 1 'ss -tn state established'

每秒刷新一次已建立的 TCP 连接,适合排查连接数波动。

3. 查看 IPv4 或 IPv6 连接

ss -4 -tn    # 仅 IPv4 ss -6 -tn    # 仅 IPv6

四、注意事项

  • ss

    默认不显示所有协议(如 RAW、UNIX 套接字),需加

    -x

    查看 Unix 套接字,

    -w

    查看 RAW 套接字。

  • 某些旧系统可能未安装
    iproute2

    包(

    ss

    所属包),可通过以下命令安装:

# Ubuntu/Debian sudo apt install iproute2  # CentOS/RHEL sudo yum install iproute

基本上就这些。

ss

不仅更快,语法也更清晰,配合过滤功能可以精准定位网络问题。日常使用中,完全可以替代

netstat

,建议尽早熟悉。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享