Socket Statistics 使用手册速览

ss 使用手册速览

一、工具基础介绍

1.1 核心功能定位

ss(Socket Statistics)是 Linux 系统核心网络统计工具,用于:

  • 实时监控 TCP/UDP 连接状态
  • 分析套接字使用情况
  • 诊断网络连接问题
  • 替代传统 netstat 工具(速度提升 10-100 倍)

1.2 工作原理

内核套接字表
netlink接口
ss命令
用户空间输出

二、核心参数详解

2.1 基础命令格式

ss [选项] [过滤表达式]

2.2 常用参数速查表

参数功能说明示例
-t仅显示 TCP 连接ss -t
-u仅显示 UDP 连接ss -u
-a显示所有套接字ss -a
-l仅显示监听套接字ss -l
-p显示进程信息ss -p
-s显示统计汇总ss -s
-m显示内存使用ss -m
-o显示计时器信息ss -o

2.3 高级过滤语法

协议过滤

ss sport = :https
ss dport = :domain

状态过滤

ss state established
ss '( dport = :ssh or sport = :ssh )'

地址过滤

ss src 192.168.1.100
ss dst 10.0.0.0/8

三、典型应用场景

3.1 连接状态监控

查看所有 TCP 连接

ss -t state established

输出示例

Netid  State    Recv-Q   Send-Q      Local Address:Port        Peer Address:Port
tcp    ESTAB    0        0           192.168.1.100:ssh        10.0.0.2:54321

监控 UDP 套接字

ss -u sport = :53

3.2 端口监听分析

查看所有监听端口

ss -lntu

输出解析

Netid  State  Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    LISTEN 0       128     0.0.0.0:22           0.0.0.0:*
tcp    LISTEN 0       128     [::]:22              [::]:*

查找异常监听

ss -lp 'sport = :8080'

3.3 进程关联分析

查看连接关联进程

ss -pt 'dst 192.168.1.100'

输出示例

PID  Program Name
1234 /usr/lib/firefox/firefox

3.4 连接数统计

统计 TCP 连接数

ss -s | awk '/TCP:/ {print $3}'

按状态统计

ss -t state | awk '{print $1}' | sort | uniq -c

四、高级诊断技巧

4.1 内存使用分析

查看套接字内存占用

ss -m 'sport = :80'

输出示例

skmem  (r=65536,rb=8232,t=65536,tb=16384,f=0,w=0,o=0,bl=0,d=0)

4.2 定时器分析

查看连接超时设置

ss -o 'state time-wait'

输出示例

timer:(keepalive,60sec,0)

4.3 原始套接字监控

查看 ICMP 流量

ss -i -a

输出示例

Netid  Recv-Q  Send-Q  Local Address:Port  Peer Address:Port
icmp   0       0       *:*                 *:*

五、性能对比与选型

5.1 ss vs netstat 性能对比

测试命令

time for i in {1..1000}; do ss -a >/dev/null; done
time for i in {1..1000}; do netstat -a >/dev/null; done

典型结果

ss: real 0m1.234s
netstat: real 0m5.678s

5.2 功能对比矩阵

特性ssnetstat
实时性×
过滤语法×
内存统计×
原始套接字支持×
进程关联

六、常见问题解决

6.1 权限不足问题

现象ss: cannot display security-related information

解决方案

sudo ss -p

6.2 过滤表达式失效

现象ss: invalid option -- 'x'

解决方案

  1. 检查过滤语法:
    ss '( dport = :https or sport = :https )'
    
  2. 使用单引号包裹表达式

6.3 输出格式定制

现象:需要机器可读格式

解决方案

ss -t json | jq '.[] | select(.state=="established")'

七、最佳实践指南

7.1 日常监控脚本

#!/bin/bash
# 网络连接健康检查
echo "=== TCP Connections ==="
ss -t state established | wc -l

echo "=== Listening Ports ==="
ss -lnt | wc -l

echo "=== SYN-RECV Count ==="
ss -t state syn-recv | wc -l

7.2 安全审计流程

  1. 检查异常监听:
    ss -lptu 'sport = :1024-'
    
  2. 分析境外连接:
    ss -t 'dst 1.2.3.0/24'
    
  3. 检测隐蔽通道:
    ss -t 'sport = :31337'
    

7.3 性能优化建议

  1. 调整内核参数:
    sysctl -w net.core.somaxconn=65535
    
  2. 优化 TIME-WAIT 重用:
    sysctl -w net.ipv4.tcp_tw_reuse=1
    
  3. 监控连接跟踪表:
    ss -s | grep 'skmem'
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值