如何使用 Linux的 ss命令来监视我们的网络

ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中 tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss命令快捷高效。在没有 tcp_diag,ss也可以正常运行。

ss的选项比较简洁,下面是它的一些选项:

   -h, --help		帮助信息
   -V, --version	程序版本信息
   -n, --numeric	不解析服务名称
   -r, --resolve        解析主机名
   -a, --all		显示所有套接字(sockets)
   -l, --listening	显示监听状态的套接字(sockets)
   -o, --options        显示计时器信息
   -e, --extended       显示详细的套接字(sockets)信息
   -m, --memory         显示套接字(socket)的内存使用情况
   -p, --processes	显示使用套接字(socket)的进程
   -i, --info		显示 TCP内部信息
   -s, --summary	显示套接字(socket)使用概况
   -4, --ipv4           仅显示IPv4的套接字(sockets)
   -6, --ipv6           仅显示IPv6的套接字(sockets)
   -0, --packet	        显示 PACKET 套接字(socket)
   -t, --tcp		仅显示 TCP套接字(sockets)
   -u, --udp		仅显示 UCP套接字(sockets)
   -d, --dccp		仅显示 DCCP套接字(sockets)
   -w, --raw		仅显示 RAW套接字(sockets)
   -x, --unix		仅显示 Unix套接字(sockets)
   -f, --family=FAMILY  显示 FAMILY类型的套接字(sockets),FAMILY可选,支持  unix, inet, inet6, link, netlink
   -A, --query=QUERY, --socket=QUERY
       QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
   -D, --diag=FILE     将原始TCP套接字(sockets)信息转储到文件
   -F, --filter=FILE   从文件中都去过滤器信息
       FILTER := [ state TCP-STATE ] [ EXPRESSION ]
#举例:
显示所有 TCP套接字
ss -t -a

#显示所有 UDP套接字
ss -u -a

#显示所有已建立连接的 ssh连接
ss -o state established '( dport = :ssh or sport = :ssh )'

#找出所有连接到 X server的本地进程
ss -x src /tmp/.X11-unix/*
              Find all local processes connected to X server.

#列举出处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 193.233.7/24所有 tcp套接字
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24

#查看所有打开的网络端口
ss -l

#查看当前服务器的网络连接统计
ss -s

Post a Comment

Your email is never shared. Required fields are marked *

*
*