1. ip命令使用
1.1 接口控制
- 启用接口
ip link set eth0 up
- 禁用接口
ip link set eth0 down
1.2 地址模块
- 查看地址
ip addr
#简写 `ip r`
- 添加地址
ip addr add 192.168.1.100/24 dev eth0
- 删除地址
ip addr del 192.168.1.100/24 dev eth0
- 清理所有地址
ip addr flush
1.3 路由模块
1.3.1 路由表
- 查看路由表
ip route show
# 简写 `ip r`
# 查看指定表
ip route show table main/表id
- 查看所有表
for t in $(grep -v '^#' /etc/iproute2/rt_tables | awk '{print $2}'); do
echo === table $t ===; ip route show table $t;
done
- 只看某一条来源/标记
ip route get 8.8.8.8 # 模拟发包,看实际选路
ip route get 8.8.8.8 from 10.0.0.100 iif lo # 指定源地址
1.3.2 网关相关
- 添加默认网关
ip route add default via 192.168.1.1
ip route add default via 192.168.1.1 dev eth0
- 删除默认网关
ip route del default
- 添加网段路由
sudo ip route add 10.0.0.0/24 via 10.10.10.1 dev eth0
- 添加主机路由
sudo ip route add 172.16.1.5/32 dev eth0
1.3.3 路由规则
- 查看策略
ip rule show
- 添加/删除网段路由规则
# 来自 192.168.2.0/24 的包查表 200
sudo ip rule add from 192.168.2.0/24 table 200
# 删除
sudo ip rule del from 192.168.2.0/24 table 200
- 添加/删除标记路由规则
# 添加带 fwmark 1 查表 300
sudo ip rule add fwmark 0x1 table 300
# 删除
sudo ip rule add fwmark 0x1 table 300
1.4 arp模块
- 查看arp表
ip neigh show
# 简写 `ip n`
1.5 链路相关
1.5.1 MAC地址相关
- 查看mac地址
ip link show dev eth0
- 设置mac地址
ip link set dev eth0 address 02:aa:bb:cc:dd:ee
1.5.2 VLAN应用
- 创建VLAN接口
# 创建 VLAN ID 100 的接口
ip link add link eth0 name eth0.100 type vlan id 100
- 查看VLAN信息
ip -d link show eth0.100
- 删除VLAN
ip link delete eth0.100
1.5.3 MACVLAN模块
- 创建接口
# 创建接口
ip link add mac0 link eth0 type macvlan mode bridge
模式说明
bridge:与父接口互通(最常用)vepa:头发丝模式,需交换机支持 hairpinprivate:完全隔离,父接口收不到 mac0 流量passthru:只允许单个子接口,用于 SR-IOV 场景
- 查看macvlan信息
ip -d link show mac0
- 删除macvlan
ip link delete mac0
1.5.4 统计信息
- 看错包,丢包
ip -s link show eth0
1.6 监控
- 监控实时变动
ip monitor
2. ss命令
2.1 基本语法
ss [ 选项 ] [ 过滤表达式 ]
常用选项速记:
-t TCP -u UDP -l 监听 -a 所有 -n 数字 -p 进程 -r 解析 -e 扩展 -m 内存 -o 计时器 -s 汇总
2.2 场景速查表
| 需求 | 命令 |
|---|---|
| 所有监听端口 | ss -tulnp |
| 所有 TCP 连接 | ss -tn |
| 所有 UDP 连接 | ss -un |
| 已建立连接 | ss -t state established |
| 查看进程 PID/名称 | ss -tulnp(需要 root) |
| 只看 22 端口 | ss -tulnp '( sport = :22 or dport = :22 )' |
| 看本机 80 端口的连接 | ss -tn state established '( dport = :80 or sport = :80 )' |
| 看计时器(keepalive、timewait) | ss -to |
| 看内存用量 | ss -tm |
| 汇总统计 | ss -s |
2.3 状态过滤(state 关键字)
ss -t state ESTABLISHED
ss -t state TIME-WAIT
ss -t state CLOSE-WAIT
ss -t state LISTEN
支持多状态或:
ss -t state '( established or time-wait )'
2.4 地址/端口过滤(布尔表达式)
ss -tn '( src 192.168.1.100/24 and sport > :30000 )'
ss -tn '( dst 8.8.8.8 and dport = :53 )'
支持比较符:
= != > < >= <=
2.5 持续监控(类似 tail -f)
ss -tanp | grep ESTABLISHED
watch -n1 'ss -tanp | grep :80'
2.6 输出字段解读(ss -tin 示例)
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.1.10:45678 93.184.216.34:443
- Recv-Q/Send-Q:内核队列未拷贝到用户空间的数据长度,长期非 0 说明程序读/写慢。
- timer:
ss -to可看到keepalive、timewait倒计时。 - uid/inode:
ss -e显示所属用户与 inode,快速定位日志。