御风灰灰
Published on 2025-12-11 / 137 Visits
0
0

linux的网络命令使用

1. ip命令使用

1.1 接口控制

  1. 启用接口
ip link set eth0 up
  1. 禁用接口
ip link set eth0 down

1.2 地址模块

  1. 查看地址
ip addr  
#简写 `ip r`
  1. 添加地址
ip addr add 192.168.1.100/24 dev eth0
  1. 删除地址
ip addr del 192.168.1.100/24 dev eth0
  1. 清理所有地址
ip addr flush

1.3 路由模块

1.3.1 路由表

  1. 查看路由表
ip route show 
# 简写 `ip r`

# 查看指定表
ip route show table main/表id
  1. 查看所有表
for t in $(grep -v '^#' /etc/iproute2/rt_tables | awk '{print $2}'); do
  echo === table $t ===; ip route show table $t;
done
  1. 只看某一条来源/标记
ip route get 8.8.8.8       # 模拟发包,看实际选路
ip route get 8.8.8.8 from 10.0.0.100 iif lo  # 指定源地址

1.3.2 网关相关

  1. 添加默认网关
ip route add default via 192.168.1.1 
ip route add default via 192.168.1.1 dev eth0
  1. 删除默认网关
ip route del default
  1. 添加网段路由
sudo ip route add 10.0.0.0/24 via 10.10.10.1 dev eth0
  1. 添加主机路由
sudo ip route add 172.16.1.5/32 dev eth0

1.3.3 路由规则

  1. 查看策略
ip rule show
  1. 添加/删除网段路由规则
# 来自 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
  1. 添加/删除标记路由规则
# 添加带 fwmark 1 查表 300
sudo ip rule add fwmark 0x1 table 300
# 删除
sudo ip rule add fwmark 0x1 table 300

1.4 arp模块

  1. 查看arp表
ip neigh show
# 简写 `ip n`

1.5 链路相关

1.5.1 MAC地址相关

  1. 查看mac地址
ip link show dev eth0
  1. 设置mac地址
ip link set dev eth0 address 02:aa:bb:cc:dd:ee

1.5.2 VLAN应用

  1. 创建VLAN接口
# 创建 VLAN ID 100 的接口
ip link add link eth0 name eth0.100 type vlan id 100
  1. 查看VLAN信息
ip -d link show eth0.100
  1. 删除VLAN
ip link delete eth0.100

1.5.3 MACVLAN模块

  1. 创建接口
# 创建接口
ip link add mac0 link eth0 type macvlan mode bridge

模式说明

  • bridge:与父接口互通(最常用)
  • vepa:头发丝模式,需交换机支持 hairpin
  • private:完全隔离,父接口收不到 mac0 流量
  • passthru:只允许单个子接口,用于 SR-IOV 场景
  1. 查看macvlan信息
ip -d link show mac0
  1. 删除macvlan
ip link delete mac0

1.5.4 统计信息

  1. 看错包,丢包
ip -s link show eth0

1.6 监控

  1. 监控实时变动
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 可看到 keepalivetimewait 倒计时。
  • uid/inode​:ss -e 显示所属用户与 inode,快速定位日志。

Comment