ss命令是用于linux系统上显示网络套接字相关信息的工具。这个工具显示的信息比用于现实活动套接字连接的netstat命令更详细。下文中华纳云总结了ss命令显示linux中各种套接字连接信息实例。
没有任何选项的基本ss命令只是列出全部连接,不管状态:
$ ss
列出监听和非监听端口:
$ ss -a
显示监听套接字:
$ ss -l
列出全部TCP连接:
$ ss -t
列出全部正在监听的TCP套接字连接:
$ ss -lt
查看全部UDP套接字连接:
$ ss -ua
列出监听的 UDP 连接,请使用该-lu选项。
$ ss -lu
显示出套接字相关进程ID:
$ ss -p
要列出摘要统计数据:
$ ss -s
显示IPv4套接字连接:
$ ss -4
显示IPv6套接字连接:
$ ss -6
ss命令还会允许过滤套接字端口号或地址好,如显示所有具有 ssh 目标或源端口的套接字连接。
$ ss -at '( dport = :22 or sport = :22 )'
或者使用:
$ ss -at '( dport = :ssh or sport = :ssh )'
按照特定端口号过滤,如查看所有和端口9876相关连接:
ss -t '( sport = :9876 or dport = :9876 )'
使用 -o 选项可以显示 TCP 套接字的计时器信息,适合分析连接超时、TCP 重传等问题:
ss -o
用输出运算符将 ss 命令的输出保存到文件中以供以后参考:
ss > output.txt
ss 命令可以和其他工具结合使用,如 watch 或 grep来监控网络连接并实时警报异常情况。使用 watch 命令可以实时监控网络连接的变化。例如,以下命令每秒更新一次所有TCP连接的状态:
watch -n 1 'ss -t state established'
这个命令会持续运行,并实时显示所有已建立的TCP连接。
如想要监控特定状态的连接,比如 SYN-SENT 或 FIN-WAIT-1,这些状态可能与网络攻击有关:
watch -n 1 'ss -t state SYN-SENT'
或
watch -n 1 'ss -t state FIN-WAIT-1'
这些命令会实时显示处于 SYN-SENT 或 FIN-WAIT-1 状态的TCP连接。
如果想要监控特定端口的连接,比如端口 80(HTTP)或 443(HTTPS),可以使用以下命令:
watch -n 1 'ss -t "( dport = :80 or sport = :80 )"'
或者
watch -n 1 'ss -t "( dport = :443 or sport = :443 )"'
这些命令会实时显示与端口 80 或 443 相关的TCP连接。
使用 grep 来过滤 ss 命令的输出,以找到包含特定关键词的行,这可能表示异常连接:
watch -n 1 'ss -t | grep "异常关键词"'
替换 "异常关键词" 为可能表示异常的连接状态或地址。
可以将 ss 命令的输出与 mail 命令或其他通知工具结合使用,当检测到异常时发送警报:
ss -t state ESTABLISHED | grep -q "异常条件" && mail -s "网络异常警报" your-email@example.com
这个命令会检查是否存在满足 "异常条件" 的已建立连接,如果存在,则发送邮件警报
如果想要过滤 ss 提供的数据,可以使用 ss 管道 grep 以获得所需的结果。例如,获取所有已建立的 TCP 连接的列表
ss -t | grep ESTAB
要进一步了解ss 命令的用法,请使用该命令查看手册页。
$ man ss
这些高级功能使得 ss 命令成为一个多功能的网络监控工具,可以帮助系统管理员更高效地管理和维护 Linux 系统的网络部分。