如何在 Rocky Linux 中使用 ss 命令查看系统的网络连接?

问题浏览数Icon
17
问题创建时间Icon
2025-04-12 04:57:00
作者头像
riverwind88

在Rocky Linux中,使用ss(Socket Statistics)命令可高效分析网络连接。以下是专业场景的实践方法:

  1. 基础命令
    ss -tulnp

    • -t:显示TCP连接
    • -u:显示UDP连接
    • -l:仅监听状态
    • -n:禁用DNS反向解析
    • -p:显示进程信息(需root权限)
  2. 高级过滤

    • 查看特定端口:ss sport = :80
    • 显示ESTABLISHED连接:ss state established
    • 按IP过滤:ss dst 192.168.1.100
  3. 生产环境技巧

    • 实时监控:watch -n 1 'ss -t -a'
    • 统计TCP状态:ss -s | grep tcp
    • 深度分析:ss -ti(显示TCP堆栈信息)

注:结合grep/jq可实现复杂过滤,排查防火墙规则或服务绑定问题时,优先检查LISTEN状态的进程绑定IP是否为0.0.0.0或特定接口。

更多回答

作者头像
firegear33
  1. 基本用法:执行 ss 查看所有网络连接(含TCP/UDP/UNIX sockets)。

  2. 常用参数

    • -t:仅显示TCP连接
    • -u:仅显示UDP连接
    • -l:仅显示监听(LISTEN)状态的连接
    • -n:禁用域名/服务解析(显示IP和端口号)
    • -p:显示关联进程信息
    • -4/-6:仅IPv4/IPv6连接
  3. 示例命令

    • 查看所有TCP监听端口:ss -tlnp
    • 查看所有ESTABLISHED的TCP连接:ss -t state established
    • 查看目标IP为192.168.1.100的连接:ss dst 192.168.1.100
    • 显示UDP连接及进程:ss -uap
  4. 高级过滤

    • 按端口过滤:ss sport = :80(源端口80)
    • 按连接状态过滤:ss state time-wait(显示TIME-WAIT状态)

输出字段说明:Local Address:Port为本地地址,Peer Address:Port为远端地址,Process显示进程名/PID。

作者头像
qingjian88

在Rocky Linux中使用ss命令查看网络连接时,建议结合以下实践经验:

  1. 优先使用 ss -tunlp 查看TCP/UDP监听端口及进程,可快速定位服务绑定情况
  2. 排查异常连接时,使用 ss -o state established '( dport = :443 || sport = :443 )' 过滤特定状态和端口的连接
  3. 通过 ss -s 获取全局统计信息,重点关注timewait/synrecv等异常状态数量
  4. 高并发场景下建议用 ss -nt 禁用DNS解析提升输出效率
  5. 对比 ssnetstat 结果时,注意两者对连接状态的命名差异(如TIME-WAIT vs timewait) 长期经验表明,合理搭配状态过滤和字段显示参数,能显著提升网络问题排查效率。
作者头像
qingxiao99

在Rocky Linux中使用ss(Socket Statistics)命令监控网络连接时,我通常会结合以下实践经验和参数组合:

  1. 基础场景
    ss -tunlp可同时查看TCP/UDP监听端口及进程信息,这对排查服务占用端口特别有效。我曾遇到Nginx未启动却显示端口占用的情况,用该命令快速定位到残留的Docker容器进程。

  2. 状态过滤技巧
    通过ss state TIME-WAIT筛选特定状态连接。某次服务器出现6万+ TIME-WAIT连接导致端口耗尽,结合ss -s统计发现需调整net.ipv4.tcp_tw_reuse内核参数。

  3. 进程关联分析
    使用ss -tp时需sudo权限才能显示完整进程名,这点容易忽略。曾遇到显示nginx却实际是自定义编译的/openresty进程,通过sudo ss -tp才准确显示二进制路径。

  4. 性能挑战
    在10万+连接的Kubernetes节点上,ss执行延迟明显。改用ss -nt关闭DNS解析,并通过awk '{print $5}' | cut -d: -f1 | sort | uniq -c快速统计IP连接数,避免完整输出导致的卡顿。

  5. 容器网络调试
    调试Calico网络时,nsenter -n ss -tdocker exec更直接查看容器网络栈。曾发现容器大量FIN-WAIT2状态,最终追踪到Java应用未正确关闭连接。

  6. 防火墙联动
    ss显示连接但无法通信时,用ss -o查看TCP定时器信息。某次AWS环境MTU问题导致重传超时,通过ss -eionpt发现retrans字段持续增长,最终调整MTU解决。

关键挑战在于海量连接时的信息筛选和性能平衡。建议将常用命令封装成alias ssmon='ss -ntp state established',并定期用watch -n 5 ss -s监控连接状态趋势。