iproute2的`ip`,`bridge`,`ss`,`tc`,`rtacct`命令 笔记250715

iproute2的ip,bridge,ss,tc,rtacct命令 笔记250715

iproute2 核心命令深度解析:ip, bridge, ss, tc, rtacct

以下是 iproute2 套件中最核心的五个命令的全面详解,包含功能说明、关键子命令、使用场景和实用示例:


🔧 1. ip 命令:全能网络配置工具

功能:统一管理网络接口、地址、路由、策略路由、邻居表、隧道等

核心对象操作:
对象 功能 关键命令
link 接口管理 ip link set dev eth0 up
address IP地址管理 ip addr add 192.168.1.10/24 dev eth0
route 路由表管理 ip route add 10.0.0.0/24 via 192.168.1.1
neighbor ARP/NDISC表管理 ip neigh add 192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0
rule 策略路由 ip rule add from 192.168.2.0/24 lookup 200
maddress 组播地址管理 ip maddr add 224.0.0.1 dev eth0
tunnel 隧道管理 ip tunnel add gre0 mode gre local 10.1.1.1 remote 20.2.2.1
netns 网络命名空间 ip netns add ns1
高级功能:
bash 复制代码
# VRF配置
ip link add vrf-red type vrf table 1000
ip link set dev eth0 master vrf-red

# MACVLAN创建
ip link add macvlan0 link eth0 type macvlan mode bridge

# 多路径路由
ip route add default \
    nexthop via 192.168.1.1 weight 1 \
    nexthop via 192.168.2.1 weight 2

# 网络诊断
ip -d link show eth0  # 显示详细接口信息
ip route get 8.8.8.8  # 查看目标IP的路由路径

🌉 2. bridge 命令:高级网桥管理

功能:管理网桥、VLAN、MAC地址表(FDB)、组播数据库(MDB)

核心子命令:
子命令 功能 示例
link 端口管理 bridge link set dev eth0 cost 10
fdb MAC地址表 bridge fdb add 00:11:22:33:44:55 dev eth0
vlan VLAN配置 bridge vlan add dev eth0 vid 100 pvid untagged
mdb 组播管理 bridge mdb add dev br0 port eth0 grp 239.1.1.1 permanent
vni VXLAN配置 bridge vni add dev vxlan0 vni 1000
monitor 事件监控 bridge monitor
完整配置示例:
bash 复制代码
# 创建带VLAN过滤的网桥
bridge vlan add dev eth0 vid 100-200
bridge vlan add dev eth1 vid 100,200 pvid untagged

# 配置STP参数
bridge link set dev eth0 priority 32
bridge link set dev eth1 guard on

# 静态MAC地址和组播配置
bridge fdb add 00:11:22:33:44:55 dev eth0 master static
bridge mdb add dev br0 port eth0 grp 239.1.1.1 src 192.168.1.10 permanent

# 查看网桥状态
bridge -s -d link show  # 显示详细统计信息

📊 3. ss 命令:套接字统计分析

功能:监控和分析套接字连接状态(替代netstat)

关键选项:
选项 功能 示例
-t TCP套接字 ss -t
-u UDP套接字 ss -u
-l 监听套接字 ss -l
-a 所有套接字 ss -a
-n 禁用服务名解析 ss -nt
-p 显示进程信息 ss -tp
-s 摘要统计 ss -s
-e 详细套接字信息 ss -te
-m 内存使用 ss -tm
-i TCP内部信息 ss -ti
高级用法:
bash 复制代码
# 状态过滤
ss -nt state established '( dport = :443 )'
ss -nt state time-wait

# 进程关联分析
ss -tup -a | grep nginx

# 内存使用诊断
ss -tem | sort -k 3n -r | head -10

# TCP参数分析
ss -ti | grep -E 'cwnd:|rtt:'

# 内核缓冲区诊断
ss -ntm -K  # 显示内核TCP缓冲区信息

🚦 4. tc 命令:流量控制与QoS

功能:实现流量整形、调度、优先级控制

核心组件:
组件 功能 常用类型
qdisc 排队规则 htb, tbf, netem
class 流量分类 htb class
filter 流量分类器 u32, flower
action 流量操作 mirred, police
完整配置示例:
bash 复制代码
# 创建HTB队列
tc qdisc add dev eth0 root handle 1: htb default 20

# 添加主类和子类
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 10mbit ceil 20mbit

# 添加过滤器(基于端口)
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
    match ip dport 80 0xffff flowid 1:10

# 添加过滤器(基于DSCP值)
tc filter add dev eth0 protocol ip parent 1:0 prio 2 flower \
    ip_tos 0x20 action mirred egress redirect dev ifb0

# 添加网络模拟(延迟+丢包)
tc qdisc add dev eth0 parent 1:10 handle 10: netem \
    delay 50ms 10ms 25% loss 0.5% 25%

# 查看统计信息
tc -s -d qdisc show dev eth0
tc -s class show dev eth0

📈 5. rtacct 命令:路由流量统计

功能:查看按路由表分类的网络流量统计

核心功能:
  • 按路由表显示流量统计
  • 按网络接口显示流量统计
  • 支持IPv4和IPv6
使用示例:
bash 复制代码
# 查看所有路由表流量统计
rtacct

# 查看特定路由表(表ID 100)
rtacct 100

# 查看IPv6流量统计
rtacct -6

# 持续监控模式
rtacct -d 2  # 每2秒刷新

# 按接口查看
rtacct -i eth0

# 显示详细字段说明
rtacct -h
输出解释:
复制代码
Route table: Local
Destination    Packets    Bytes    Errors    Dead
default        12.3M      1.2G     0         0
192.168.1.0/24 5.7M       780M     0         0
10.0.0.0/8     3.1M       420M     12        0
替代命令(新系统推荐):
bash 复制代码
# 使用ip命令查看路由统计
ip -s route show table main
ip -s -6 route show table 100

# 查看实时统计
ip -statistics route monitor

🛠️ 综合应用场景:企业级网络配置

bash 复制代码
# 1. 创建网桥并配置VLAN
ip link add br-vlan100 type bridge
bridge vlan add dev eth0 vid 100
ip link set eth0.100 master br-vlan100

# 2. 配置VRF
ip link add vrf-corp type vrf table 100
ip link set br-vlan100 master vrf-corp

# 3. 设置QoS策略
tc qdisc add dev br-vlan100 root handle 1: htb
tc class add dev br-vlan100 parent 1: classid 1:1 htb rate 1gbit
tc filter add dev br-vlan100 protocol ip parent 1: flower \
    ip_proto tcp dst_port 22 action police rate 10mbit burst 1m

# 4. 监控网络状态
rtacct vrf-corp  # VRF流量统计
ss -ntp -N vrf-corp  # VRF内的TCP连接
tc -s class show dev br-vlan100  # QoS统计

📚 命令参考速查表

任务 命令
接口管理 ip -d link show, ip link set eth0 mtu 9000
VLAN配置 bridge vlan show, bridge vlan add dev eth0 vid 100
路由诊断 ip route get 8.8.8.8, ip -s route show table 100
连接分析 ss -nt state established, ss -i src 192.168.1.0/24
流量整形 tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit
网络模拟 tc qdisc add dev eth0 netem delay 50ms loss 1%
路由统计 rtacct -d 5, ip -s route show cache

💡 专业提示

  1. 使用 -d 参数获取详细技术信息:ip -d link show
  2. 使用 -s 参数查看统计信息:tc -s qdisc show
  3. 使用 -j 生成JSON输出:ip -j addr show | jq
  4. 组合命令进行高级诊断:ss -ntp | grep ESTAB | awk '{print $6}' | sort | uniq -c

这五个命令构成了Linux网络管理的核心工具集,掌握它们可以应对从基础配置到高级调优的各种网络场景。







iproute2 工具集中 ipbridgesstcrtacct 命令的详细解析,涵盖核心功能、语法及典型应用场景:


1. ip 命令:全能网络配置

作用 :管理网络接口、IP地址、路由、策略路由、ARP/NDP邻居表、隧道等(替代 ifconfig/route/arp)。

bash 复制代码
# 接口管理
ip link show                      # 显示所有接口
ip link set eth0 up               # 启用接口
ip link add br0 type bridge       # 创建网桥

# IP地址管理
ip addr add 192.168.1.10/24 dev eth0   # 添加IP
ip addr del 192.168.1.10/24 dev eth0   # 删除IP

# 路由管理
ip route show                     # 显示路由表
ip route add 10.0.0.0/8 via 192.168.1.1   # 添加静态路由
ip route add default via 192.168.1.1      # 设置默认网关

# 邻居表(ARP/NDP)
ip neigh show                     # 显示邻居缓存
ip neigh flush dev eth0           # 清空ARP缓存

# 策略路由
ip rule add from 192.168.2.0/24 lookup 100   # 源IP匹配规则
ip route add default via 10.0.0.1 table 100  # 自定义路由表

2. bridge 命令:网桥管理

作用 :配置Linux网桥(二层交换),支持VLAN过滤、FDB表管理(替代 brctl)。

bash 复制代码
# 网桥与端口管理
bridge link add dev eth0 master br0     # 添加端口到网桥
bridge link set dev eth0 hairpin on     # 启用Hairpin模式

# VLAN配置
bridge vlan add vid 10 dev eth0         # 允许VLAN 10
bridge vlan add vid 20 pvid untagged dev eth0  # 设置PVID为20(Access端口)

# FDB表(MAC地址表)
bridge fdb add 00:11:22:33:44:55 dev eth0 master br0  # 添加静态MAC
bridge fdb show                        # 显示FDB表

3. ss 命令:套接字统计

作用 :监控套接字连接(替代 netstat),速度快、信息全。

bash 复制代码
ss -tunlp                      # 查看所有TCP/UDP监听端口及进程
ss -t state established        # 显示已建立的TCP连接
ss -s                          # 统计摘要(总连接数、类型分布)
ss dst 192.168.1.100           # 过滤目标IP
ss -o state time-wait          # 显示TIME-WAIT状态连接及计时器

4. tc 命令:流量控制(QoS)

作用:实现流量整形、调度、优先级控制(带宽管理)。

核心概念
  • Qdisc(队列规则) :附加到接口的队列策略(如 htb, sfq)。
  • Class(类):在Qdisc内划分流量类别(如按带宽分配)。
  • Filter(过滤器):将流量分类到指定类(基于IP/端口/DSCP等)。
典型配置示例
bash 复制代码
# 1. 创建HTB根队列(带宽限制)
tc qdisc add dev eth0 root handle 1: htb default 30

# 2. 创建子类(分配带宽)
tc class add dev eth0 parent 1: classid 1:10 htb rate 100mbit ceil 150mbit  # 保证100M,最大150M
tc class add dev eth0 parent 1: classid 1:20 htb rate 50mbit ceil 100mbit

# 3. 添加公平队列(防饿死)
tc qdisc add dev eth0 parent 1:10 handle 10: sfq

# 4. 过滤器(按端口分类)
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 80 0xffff flowid 1:10  # HTTP -> 1:10
tc filter add dev eth0 protocol ip parent 1: prio 2 u32 match ip dport 22 0xffff flowid 1:20  # SSH -> 1:20
常用Qdisc类型
Qdisc 用途
htb 分层令牌桶(精确带宽控制)
fq_codel 公平队列+低延迟(抗缓冲膨胀)
sfq 随机公平队列(防流量垄断)
tbf 令牌桶过滤器(简单限速)

5. rtacct 命令:路由统计

作用:查看内核路由表流量统计(按路由条目聚合)。

bash 复制代码
rtacct                   # 显示所有路由的流量统计
rtacct 192.168.1.0/24    # 查看特定网段流量

# 输出列说明:
# BytesIn/PktsIn:流入该路由的字节数/包数
# BytesOut/PktsOut:流出流量

典型输出

复制代码
Destination    Gateway     BytesIn  PktsIn  BytesOut PktsOut
192.168.1.0/24 0.0.0.0     5.6MB    4200     1.2GB    9500
default        192.168.1.1  1.1GB    88000    5.6MB    4200

关键总结

命令 核心用途 替代工具
ip L2/L3层综合配置(接口/IP/路由) ifconfig, route
bridge 网桥/VLAN管理 brctl
ss 套接字连接监控 netstat
tc QoS流量控制(整形/调度) 无直接替代
rtacct 基于路由的流量统计

进阶技巧

  • 组合使用 tc + iptables 实现基于应用的QoS(如标记DSCP值)。
  • 通过 ss -e 查看套接字的cgroup信息(容器网络排查)。
  • 使用 bridge monitor 实时监控网桥事件(如FDB变动)。

📘 文档建议

查看完整手册:man ipman tcman tc-htbman ss

复杂 tc 配置建议使用抽象工具(如 wondershapertraffic control 脚本库)。







以下是对 iproute2 套件中 ipbridgesstcrtacct 命令的详细解析,涵盖其核心功能、常用场景及示例:


1. ip 命令:全能网络配置

功能 :管理网络接口、地址、路由、策略路由、隧道、VLAN、邻居表(ARP/NDP)等,替代 ifconfig/route/arp
核心子命令

bash 复制代码
# 接口管理
ip link show                  # 显示所有接口
ip link set eth0 up           # 启用接口
ip link set eth0 mtu 9000     # 修改MTU

# IP地址管理
ip addr add 192.168.1.10/24 dev eth0  # 添加IP
ip addr del 192.168.1.10/24 dev eth0  # 删除IP

# 路由管理
ip route add default via 192.168.1.1    # 添加默认网关
ip route add 10.0.0.0/24 via 192.168.1.254 # 添加静态路由
ip route show table 100        # 查看特定路由表

# 邻居表(ARP)
ip neigh show                  # 显示ARP缓存
ip neigh add 192.168.1.50 lladdr 00:11:22:33:44:55 dev eth0 nud permanent # 添加静态ARP

# 网络命名空间
ip netns add ns1               # 创建命名空间
ip netns exec ns1 ip link show # 在命名空间中执行命令

2. bridge 命令:网桥管理

功能 :配置软件网桥(交换机)、VLAN、FDB(MAC地址表),替代 brctl
核心操作

bash 复制代码
# 创建网桥
ip link add name br0 type bridge
ip link set eth1 master br0    # 将接口加入网桥

# VLAN配置
bridge vlan add dev eth1 vid 10   # 允许VLAN 10
bridge vlan set dev eth1 pvid 10  # 设置PVID(默认VLAN)

# MAC地址表管理
bridge fdb show                 # 显示MAC表
bridge fdb add 00:11:22:33:44:55 dev eth1 master static  # 添加静态MAC条目

# 启用VLAN过滤
bridge link set dev br0 vlan_filtering 1

3. ss 命令:套接字统计

功能 :监控套接字连接(TCP/UDP/RAW/Unix Sockets),替代 netstat速度更快
常用选项

bash 复制代码
ss -tulnp                     # 显示所有监听端口(TCP/UDP)及进程
ss -t state established        # 显示所有已建立的TCP连接
ss -o state time-wait          # 显示TIME-WAIT状态的连接
ss src 192.168.1.100           # 过滤源IP
ss dport = :80                 # 过滤目标端口80
ss -s                          # 统计摘要(总连接数/协议分布)

4. tc 命令:流量控制(QoS)

功能 :实现限速、优先级调度、延迟模拟等复杂流量策略。
核心概念

  • Qdisc :队列规则(如 htb限速、netem模拟延迟)。
  • Class:流量分类(如划分带宽)。
  • Filter:分类规则(基于IP/端口等)。

示例场景

bash 复制代码
# 限速 eth0 出口为 10Mbps
tc qdisc add dev eth0 root tbf rate 10mbit burst 15k latency 50ms

# 模拟 100ms 延迟 + 10% 丢包
tc qdisc add dev eth0 root netem delay 100ms loss 10%

# 复杂HTB分层限速(优先级分配带宽):
tc qdisc add dev eth0 root handle 1: htb default 20
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit  # 高优先级
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 70mbit ceil 100mbit # 默认流量
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10  # SSH流量走1:10

5. rtacct 命令:路由统计

功能 :查看内核路由表的流量统计(按接口/协议/路由表分类),需安装 iproute2-doc
常用命令

bash 复制代码
rtacct                      # 显示所有接口的流量统计
rtacct -d                   # 每秒刷新动态统计(类似iftop)
rtacct -r -i eth0           # 按路由表统计eth0流量
rtacct -p tcp               # 按协议(TCP)统计

输出解读

plaintext 复制代码
FwdPkts   FwdBytes   InPkts   InBytes   OutPkts  OutBytes
1024      1.2MB      2048     2.5MB     512      0.5MB
  • Fwd:转发流量
  • In:本机接收流量
  • Out:本机发送流量

总结对比

命令 主要用途 替代工具 关键优势
ip 接口/IP/路由/隧道管理 ifconfig, route 统一接口,支持网络命名空间
bridge 网桥/VLAN/MAC表管理 brctl 原生支持VLAN过滤和现代网桥特性
ss 套接字连接监控 netstat 速度极快,过滤灵活
tc QoS(限速/调度/延迟模拟) 无直接替代 内核级流量控制,功能强大
rtacct 路由流量统计 nload, iftop 按路由表/协议细分流量

提示

  • tc 配置复杂,建议从简单限速(tbf)或网络模拟(netem)入手。
  • rtacct 需额外安装:sudo apt install iproute2-doc(Debian/Ubuntu)。
  • 查看帮助:ip link help, tc qdisc help, 或 man rtacct






Linux iproute2 命令详解:ip, ss, bridge, tc, rtacct

iproute2 是 Linux 强大的网络配置和监控工具套件,取代了传统的 net-tools(ifconfig, netstat 等)。以下是核心命令的全面解析:
iproute2 ip ss bridge tc rtacct 接口管理 路由控制 套接字监控 网桥管理 流量控制 路由统计

一、ip 命令 - 全能网络管理工具

1. 接口管理 (ip link)
bash 复制代码
## 查看所有接口
ip link show

## 启用/禁用接口
ip link set eth0 up
ip link set eth0 down

## 修改MAC地址
ip link set eth0 address 00:11:22:33:44:55

## 设置MTU
ip link set eth0 mtu 9000

## 创建虚拟接口
ip link add veth0 type veth peer name veth1
2. IP地址管理 (ip address)
bash 复制代码
## 查看IP配置
ip address show

## 添加IP地址
ip address add 192.168.1.100/24 dev eth0

## 添加辅助IP
ip address add 192.168.1.101/24 dev eth0 label eth0:1

## 删除IP地址
ip address del 192.168.1.100/24 dev eth0

## 清空接口IP
ip address flush dev eth0
3. 路由管理 (ip route)
bash 复制代码
## 查看路由表
ip route show

## 添加默认网关
ip route add default via 192.168.1.1

## 添加静态路由
ip route add 10.0.0.0/8 via 192.168.1.2

## 添加策略路由
ip route add table 100 default via 10.0.0.1

## 删除路由
ip route del 10.0.0.0/8
4. ARP/邻居表管理 (ip neighbour)
bash 复制代码
## 查看ARP表
ip neighbour show

## 添加静态ARP条目
ip neighbour add 192.168.1.50 lladdr 00:0c:29:xx:xx:xx dev eth0

## 删除ARP条目
ip neighbour del 192.168.1.50 dev eth0
5. 高级功能
bash 复制代码
## 创建GRE隧道
ip tunnel add gre0 mode gre local 10.1.1.1 remote 20.2.2.1 ttl 255

## 策略路由
ip rule add from 192.168.1.100 lookup 100

## 多播管理
ip maddress add 224.0.0.1 dev eth0

二、ss 命令 - 套接字统计工具

1. 基本用法
bash 复制代码
## 查看所有连接
ss -a

## 查看TCP连接
ss -t -a

## 查看UDP连接
ss -u -a

## 查看监听端口
ss -l
2. 过滤选项
bash 复制代码
## 按状态过滤
ss -t state established
ss -t state time-wait

## 按端口过滤
ss -t sport = :80
ss -t dport = :443

## 按IP过滤
ss -t src 192.168.1.100
ss -t dst 10.0.0.1
3. 高级功能
bash 复制代码
## 显示进程信息
ss -t -p

## 显示计时器信息
ss -t -o

## 显示内核信息
ss -t -i

## 统计摘要
ss -s

三、bridge 命令 - 网桥管理工具

1. 基本操作
bash 复制代码
## 查看网桥信息
bridge link show

## 查看FDB表
bridge fdb show

## 查看VLAN配置
bridge vlan show
2. 网桥配置
bash 复制代码
## 添加静态MAC条目
bridge fdb add 00:11:22:33:44:55 dev eth0 master static

## 删除MAC条目
bridge fdb del 00:11:22:33:44:55 dev eth0

## 添加VLAN
bridge vlan add vid 10 dev eth0

## 删除VLAN
bridge vlan del vid 10 dev eth0
3. STP管理
bash 复制代码
## 启用STP
bridge link set dev eth0 cost 100

## 设置端口优先级
bridge link set dev eth0 priority 32

## 查看STP状态
bridge stp show

四、tc 命令 - 流量控制工具

1. 基本组件
bash 复制代码
## 查看队列规则
tc qdisc show dev eth0

## 查看分类
tc class show dev eth0

## 查看过滤器
tc filter show dev eth0
2. 常见队列规则
bash 复制代码
## 添加HTB队列
tc qdisc add dev eth0 root handle 1: htb

## 添加子类
tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit

## 添加SFQ队列
tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10
3. 流量整形示例
bash 复制代码
## 限制总带宽为10Mbit
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit

## 为特定IP限速2Mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.100 flowid 1:10

五、rtacct 命令 - 路由统计工具

1. 基本使用
bash 复制代码
## 查看所有接口流量统计
rtacct

## 按接口查看
rtacct -i eth0

## 查看指定路由表统计
rtacct -t 100
2. 输出字段解析
复制代码
BytesIn    # 接收字节数
PktsIn     # 接收数据包数
BytesOut   # 发送字节数
PktsOut    # 发送数据包数
3. 替代命令(新版本)
bash 复制代码
## 使用ip命令查看路由统计
ip -s route show table all

## 详细统计
ip -s -s route show

六、命令组合使用示例

1. 网络诊断脚本
bash 复制代码
##!/bin/bash
echo "### 接口状态 ###"
ip -c link show

echo -e "\n### 路由表 ###"
ip -c route show

echo -e "\n### TCP连接 ###"
ss -t -a -p

echo -e "\n### 网桥状态 ###"
bridge link show
2. 流量监控脚本
bash 复制代码
##!/bin/bash
INTERVAL=5

while true; do
    clear
    echo "### 实时流量统计 ###"
    rtacct -i eth0
    echo -e "\n### 连接状态 ###"
    ss -t -a -i
    sleep $INTERVAL
done
3. QoS配置脚本
bash 复制代码
##!/bin/bash
## 清空现有规则
tc qdisc del dev eth0 root

## 创建HTB队列
tc qdisc add dev eth0 root handle 1: htb

## 添加主类
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit

## 添加子类 - 语音优先
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit prio 0

## 添加子类 - 标准流量
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 80mbit prio 1

## 添加过滤器
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 5060 0xffff flowid 1:10

七、命令对比表

功能 传统命令 iproute2命令
接口配置 ifconfig ip link
IP管理 ifconfig ip address
路由管理 route ip route
ARP管理 arp ip neighbour
连接监控 netstat ss
网桥管理 brctl bridge

八、最佳实践

  1. 彩色输出

    bash 复制代码
    alias ip='ip -c'
    alias ss='ss -c'
  2. 批量操作

    bash 复制代码
    # 批量配置脚本
    ip -batch <<EOF
    link set eth0 up
    address add 192.168.1.100/24 dev eth0
    route add default via 192.168.1.1
    EOF
  3. 持久化配置

    bash 复制代码
    # 使用systemd-networkd或netplan
    # 示例:/etc/netplan/01-config.yaml
    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          addresses: [192.168.1.100/24]
          routes:
            - to: default
              via: 192.168.1.1
  4. 性能监控

    bash 复制代码
    # 实时监控网络统计
    watch -n 1 "ip -s link; echo; ss -s"
  5. 安全增强

    bash 复制代码
    # 禁用不必要的协议
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

通过掌握这些命令,您可以全面管理 Linux 网络栈,从基础配置到高级流量控制和监控,满足各种网络运维需求。







iproute2 核心命令全解:ip, bridge, ss, tc, rtacct

iproute2 是现代 Linux 网络管理的终极工具套件,取代了传统的 net-tools。以下是五大核心命令的深度解析:


一、ip:全能网络管理工具

功能:接口、地址、路由、隧道等全栈管理

核心模块:
模块 功能 常用命令
ip link 接口管理 ip link set eth0 up
ip address IP地址管理 ip addr add 192.168.1.100/24 dev eth0
ip route 路由管理 ip route add default via 192.168.1.1
ip neigh 邻居表(ARP)管理 ip neigh show
ip tunnel 隧道管理 ip tunnel add gre0 mode gre local...
ip rule 策略路由 ip rule add from 10.0.0.0/24 table 100
关键技巧:
bash 复制代码
# 查看所有接口(简洁模式)
ip -br link show

# 添加多路径路由
ip route add default \
    nexthop via 192.168.1.1 weight 1 \
    nexthop via 192.168.2.1 weight 1

# 创建VXLAN隧道
ip link add vxlan42 type vxlan id 42 dev eth0 dstport 4789

# 实时监控地址变化
ip monitor address

二、bridge:二层交换管理

功能:网桥、VLAN、MAC地址表等二层管理

核心功能:
对象 功能 常用命令
fdb MAC地址表管理 bridge fdb add 00:11:22:33:44:55 dev eth0
vlan VLAN配置 bridge vlan add dev eth0 vid 100 pvid
link 端口管理 bridge link set dev eth0 learning on
mdb 组播管理 bridge mdb add dev br0 port eth0 grp 224.0.0.100
典型配置:
bash 复制代码
# 创建网桥并启用VLAN过滤
ip link add br0 type bridge vlan_filtering 1
ip link set br0 up

# 添加端口并配置VLAN
ip link set eth0 master br0
bridge vlan add dev eth0 vid 100 pvid untagged

# 设置STP参数
bridge link set dev eth0 cost 10 priority 32

三、ss:套接字统计工具

功能:替代 netstat,提供深度套接字分析

常用参数:
参数 功能 示例
-t TCP套接字 ss -t -a
-u UDP套接字 ss -u
-l 监听套接字 ss -ltn
-p 显示进程信息 ss -tp
-s 摘要统计 ss -s
-i TCP内部信息 ss -ti
-m 内存使用 ss -tm
高级用法:
bash 复制代码
# 查看所有ESTABLISHED连接
ss -t state established

# 监控443端口实时流量
ss -it '( dport = :443 )'

# 查看进程关联的套接字
ss -tulp | grep nginx

# 分析TCP性能问题
ss -tinmo
# Recv-Q: 接收队列 | Send-Q: 发送队列 | rtt: 往返时间 | cwnd: 拥塞窗口

四、tc:流量控制工具

功能:QoS、流量整形、优先级调度

核心概念:
组件 功能
qdisc 队列规则(调度算法)
class 流量分类容器
filter 流量分类器
常用算法:
类型 说明
htb 分层令牌桶(精确带宽控制)
tbf 令牌桶过滤器(简单限速)
sfq 随机公平队列(防止饥饿)
netem 网络模拟(延迟、丢包等)
配置示例:
bash 复制代码
# 创建HTB队列
tc qdisc add dev eth0 root handle 1: htb default 10

# 添加父类(总带宽100Mbps)
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit

# 添加子类(Web服务保证30Mbps)
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit

# 基于端口分类
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \
    match ip dport 80 0xffff flowid 1:10

五、rtacct:路由统计工具

功能:按路由表分类的网络流量统计

基本用法:
bash 复制代码
# 查看所有路由表统计
rtacct

# 数值格式输出
rtacct -n

# 实时刷新(类似top)
rtacct -r

# 查看特定子网统计
rtacct 192.168.1.0/24
输出解析:
bash 复制代码
Destination    Gateway       Interface   BytesIn   PktsIn   BytesOut  PktsOut 
default        192.168.1.1   eth0        15.4GB    12M      8.2GB     6.5M
10.0.0.0/24    10.0.0.1      tun0        2.1GB     1.2M     3.7GB     2.8M

注意 :新系统可用 ip -s route 替代部分功能


六、命令对比与协作

场景 首选命令 辅助命令 示例
接口状态查看 ip -br link ss -i ip -br link show && ss -i
网桥配置 bridge vlan ip link bridge vlan show && ip -d link show
路由诊断 ip route get rtacct ip route get 8.8.8.8 && rtacct
QoS配置 tc ip -s link tc qdisc show && ip -s link show
连接分析 ss -tinp ip neigh ss -tinp && ip neigh show
隧道监控 ip -s tunnel ss -u ip -s tun show gre0 && ss -u

七、高级集成示例

1. 容器网络QoS
bash 复制代码
# 创建veth对
ip link add veth-host type veth peer name veth-container

# 添加HTB队列
tc qdisc add dev veth-host root handle 1: htb
tc class add dev veth-host parent 1: classid 1:1 htb rate 100mbit
tc class add dev veth-host parent 1:1 classid 1:10 htb rate 30mbit

# 基于DSCP标记分类
tc filter add dev veth-host protocol ip parent 1: prio 1 \
    basic match "ip_dscp 46" flowid 1:10
2. 多WAN策略路由+QoS
bash 复制代码
# 策略路由
ip rule add from 192.168.10.0/24 lookup wan1
ip route add default via 192.168.1.1 table wan1

# QoS配置
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit

# 路由统计监控
watch -n1 "rtacct -n table wan1"
3. 网络诊断工作流
bash 复制代码
# 1. 检查接口状态
ip -br link show

# 2. 检查IP配置
ip -br addr show

# 3. 检查路由
ip route show

# 4. 检查连接
ss -tunp

# 5. 检查ARP
ip neigh show

# 6. 流量统计
rtacct -r

八、持久化配置方法

1. systemd-networkd
ini 复制代码
# /etc/systemd/network/eth0.network
[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
2. NetworkManager
bash 复制代码
nmcli con add type ethernet ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1
3. 自定义服务
bash 复制代码
# /etc/systemd/system/netconfig.service
[Unit]
Description=Custom Network Config

[Service]
Type=oneshot
ExecStart=/usr/local/bin/netconfig.sh

[Install]
WantedBy=multi-user.target

九、学习资源

  1. 手册页

    bash 复制代码
    man ip
    man tc
    man bridge
    man ss
    man rtacct
  2. 官方文档

  3. 诊断工具

    bash 复制代码
    ip -s -s link show eth0  # 详细统计
    tc -s qdisc show         # QoS统计
    ss -it                   # TCP内部状态

掌握这五大命令,您可以:

  • 构建复杂网络架构
  • 实施精细流量控制
  • 深度诊断网络问题
  • 优化网络性能
  • 实现企业级网络管理






iproute2 命令详解:ip, bridge, ss, tc, rtacct

iproute2 是现代 Linux 网络管理的核心工具集,提供了比传统 net-tools 更强大灵活的功能。以下是各主要命令的深度解析:

一、ip 命令:全能网络管理工具

1. 接口管理 (ip link)
bash 复制代码
# 查看所有接口
ip -c link show

# 启用/禁用接口
ip link set eth0 up
ip link set eth0 down

# 创建 VLAN
ip link add link eth0 name eth0.10 type vlan id 10

# 修改 MAC 地址
ip link set eth0 address 00:11:22:33:44:55

# 设置 MTU
ip link set eth0 mtu 9000
2. IP 地址管理 (ip address)
bash 复制代码
# 添加 IP
ip addr add 192.168.1.100/24 dev eth0

# 删除 IP
ip addr del 192.168.1.100/24 dev eth0

# 刷新所有 IP
ip addr flush dev eth0

# 查看 IP 配置
ip -br addr
3. 路由管理 (ip route)
bash 复制代码
# 添加默认路由
ip route add default via 192.168.1.1

# 添加静态路由
ip route add 10.0.0.0/24 via 192.168.1.254

# 查看路由表
ip -c route show

# 策略路由
ip rule add from 192.168.2.0/24 table 100
ip route add default via 10.0.0.1 table 100
4. 邻居表管理 (ip neigh)
bash 复制代码
# 查看 ARP 表
ip -c neigh

# 添加静态 ARP
ip neigh add 192.168.1.50 lladdr 00:aa:bb:cc:dd:ee dev eth0 nud permanent

# 删除 ARP 条目
ip neigh del 192.168.1.50 dev eth0
5. 隧道管理 (ip tunnel)
bash 复制代码
# 创建 GRE 隧道
ip tunnel add gre0 mode gre remote 203.0.113.5 local 192.168.1.100
ip link set gre0 up
ip addr add 10.0.0.1/24 dev gre0

二、bridge 命令:高级网桥管理

1. 基本操作
bash 复制代码
# 创建网桥
ip link add br0 type bridge

# 添加端口
bridge link set dev eth0 master br0

# 查看网桥
bridge link show
2. VLAN 管理
bash 复制代码
# 添加 VLAN
bridge vlan add vid 10 dev eth0

# 设置 PVID
bridge vlan add vid 10 dev eth0 pvid

# 查看 VLAN
bridge vlan show
3. FDB (MAC 地址表) 管理
bash 复制代码
# 添加静态 MAC
bridge fdb add 00:11:22:33:44:55 dev eth0 master static

# 删除 MAC
bridge fdb del 00:11:22:33:44:55 dev eth0

# 查看 MAC 表
bridge fdb show
4. STP 管理
bash 复制代码
# 启用 STP
ip link set br0 type bridge stp_state 1

# 设置端口优先级
bridge link set dev eth0 priority 32

# 查看 STP 状态
bridge stp show

三、ss 命令:高级套接字统计

1. 基本用法
bash 复制代码
# 查看所有 TCP 连接
ss -t -a

# 查看监听端口
ss -l

# 按进程显示
ss -t -p
2. 高级过滤
bash 复制代码
# 查看特定端口的连接
ss -t 'sport = :443'

# 查看 ESTABLISHED 状态的连接
ss -t state established

# 查看来自特定 IP 的连接
ss src 192.168.1.100
3. 诊断选项
bash 复制代码
# 显示详细计时器信息
ss -t -o

# 显示内核内存使用
ss -m

# 显示进程 cgroup 信息
ss -c

四、tc 命令:流量控制

1. QDisc (队列规则)
bash 复制代码
# 添加 HTB 队列
tc qdisc add dev eth0 root handle 1: htb default 12

# 添加 TBF 队列
tc qdisc add dev eth0 root tbf rate 1mbit burst 32k latency 400ms
2. Class (类)
bash 复制代码
# 创建 HTB 类
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 100mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 70mbit ceil 100mbit
3. Filter (过滤器)
bash 复制代码
# 基于端口过滤
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \
  match ip dport 80 0xffff flowid 1:10

# 基于 IP 过滤
tc filter add dev eth0 parent 1: protocol ip prio 2 u32 \
  match ip src 192.168.1.100/32 flowid 1:20
4. 监控与统计
bash 复制代码
# 查看 QDisc 统计
tc -s qdisc show dev eth0

# 查看 Class 统计
tc -s class show dev eth0

# 查看 Filter
tc -s filter show dev eth0

五、rtacct 命令:路由统计

基本用法
bash 复制代码
# 查看所有接口统计
rtacct

# 查看特定接口
rtacct eth0

# 按 CIDR 查看
rtacct 192.168.1.0/24

# 持续监控
watch -n 1 rtacct
输出解析示例:
复制代码
Destination   Gateway       Interface   Packets    Bytes 
192.168.1.0/24 0.0.0.0      eth0        12345      10MB
default       192.168.1.1   eth0         9876       5MB

六、综合应用场景

1. 创建带 QoS 的网桥
bash 复制代码
# 创建网桥
ip link add br0 type bridge
ip link set br0 up

# 添加端口
ip link set eth0 master br0
ip link set eth1 master br0

# 配置 HTB
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate 1gbit
tc class add dev br0 parent 1:1 classid 1:10 htb rate 300mbit
tc class add dev br0 parent 1:1 classid 1:20 htb rate 700mbit

# 基于 VLAN 分流
tc filter add dev br0 parent 1: protocol 802.1q \
  u32 match u16 0x000a 0x0fff at -4 flowid 1:10  # VLAN 10
tc filter add dev br0 parent 1: protocol 802.1q \
  u32 match u16 0x0014 0x0fff at -4 flowid 1:20  # VLAN 20
2. 网络诊断工作流
bash 复制代码
# 1. 检查接口状态
ip -c link

# 2. 检查 IP 配置
ip -c addr

# 3. 检查路由
ip -c route

# 4. 检查 ARP
ip -c neigh

# 5. 检查连接
ss -t -a -p

# 6. 检查流量统计
rtacct

# 7. 深度包检查
tcpdump -i eth0 -nnv

七、性能优化技巧

1. 减少命令输出处理时间
bash 复制代码
# 使用 -br 简化输出
ip -br link
ip -br addr
2. 持续监控
bash 复制代码
# 实时监控连接
watch -n 1 "ss -t -a -p"

# 实时流量统计
tc -s qdisc show dev eth0 | grep -A 2 "Sent"
3. 脚本自动化
bash 复制代码
#!/bin/bash
# 自动监控网络状态
while true; do
  clear
  echo "===== $(date) ====="
  ip -br addr | grep UP
  ss -t -a -p | grep ESTAB
  tc -s qdisc | grep Sent
  sleep 5
done

八、命令替代关系

传统命令 iproute2 等效命令 优势
ifconfig ip addr, ip link 更详细的状态信息
route ip route 支持多路由表、策略路由
arp ip neigh 更灵活的邻居管理
netstat ss 更快的执行速度
brctl bridge 支持 VLAN 过滤等高级功能
iptraf tc -s, rtacct 内核级统计更精确

提示:在生产环境中,建议:

  1. 使用 -c 参数获得彩色输出提高可读性
  2. 复杂网络配置先使用临时命令测试
  3. 持久化配置写入 /etc/network/interfaces 或 netplan 文件
  4. 使用 nohuptmux 执行长时间监控任务

掌握这些 iproute2 工具将使您能够高效管理各种复杂网络环境,从简单的家庭网络到大型数据中心网络架构。







Linux iproute2 套件核心命令详解

iproute2 是 Linux 网络管理的现代工具集,完全取代了传统的 net-tools。以下是对其核心命令的全面解析:


一、ip 命令:网络全能管家

功能:管理网络接口、地址、路由、隧道、命名空间等

核心子命令:
子命令 功能 示例
ip link 接口管理 ip link set eth0 mtu 9000
ip addr IP地址管理 ip addr add 192.168.1.10/24 dev eth0
ip route 路由管理 ip route add default via 192.168.1.1
ip rule 策略路由 ip rule add from 10.0.0.0/24 table 100
ip neigh ARP/邻居表管理 ip neigh show
ip tunnel 隧道管理 ip tunnel add gre1 mode gre remote...
ip netns 网络命名空间 ip netns add ns1
ip maddress 组播地址管理 ip maddress show
ip monitor 实时监控网络事件 ip monitor link

高级特性

  • VRF 支持:ip link add vrf-blue type vrf table 10
  • JSON 输出:ip -j addr show | jq
  • 批量操作:ip -batch -force < config.txt

二、ss 命令:套接字侦探

功能:监控和分析网络连接,替代 netstat

核心用法:
bash 复制代码
ss [选项] [过滤表达式]

常用选项组合

场景 命令 输出内容
所有TCP连接 ss -t -a 所有TCP套接字
监听端口 ss -l -n 数字格式的监听端口
进程信息 ss -t -p 显示占用端口的进程
状态过滤 ss -t state established 已建立的TCP连接
详细TCP信息 ss -t -e -i 拥塞窗口/RTT等内部信息
UDP统计 ss -u -s UDP套接字摘要统计

过滤表达式

bash 复制代码
ss 'dport = 443'           # 目标端口443
ss 'src 192.168.1.100'     # 源IP过滤
ss 'sport > 8000'          # 源端口大于8000

优势

  • 比 netstat 快 10 倍以上
  • 显示 TCP 内部状态(cwnd, ssthresh)
  • 支持 BPF 过滤语法
  • 容器友好:nsenter -t <pid> -n ss

三、bridge 命令:二层交换大师

功能:管理网桥、VLAN、MAC地址表等二层功能

核心子命令:
子命令 功能 示例
bridge link 桥接端口管理 bridge link set dev eth0 cost 100
bridge fdb MAC地址表管理 bridge fdb add 00:11:22:33:44:55 dev eth0
bridge vlan VLAN配置 bridge vlan add dev eth0 vid 10 pvid
bridge mdb 组播数据库管理 bridge mdb add dev br0 grp 239.1.2.3
bridge monitor 实时监控事件 bridge monitor fdb

典型配置

bash 复制代码
# 创建VLAN感知网桥
ip link add br0 type bridge
bridge link set dev br0 type bridge vlan_filtering 1
bridge vlan add dev eth0 vid 10 pvid untagged
bridge vlan add dev eth1 vid 10

高级特性

  • PVLAN 支持:private, isolated, community 模式
  • VXLAN 集成:bridge vni add dev br0 vni 42
  • EVPN 支持:bridge fdb add ... dst 192.168.1.100 vni 42
  • MDB 代理:IGMP/MLD 监听支持

四、tc 命令:流量控制宗师

功能:实现 QoS、流量整形、网络模拟

核心组件:
组件 功能 常见类型
qdisc 队列规则 HTB, TBF, SFQ, Netem, FQ_Codel
class 流量类别 用于 HTB 分层
filter 流量分类器 u32, fwmark, cgroup, route

典型应用

bash 复制代码
# 带宽限制 (TBF)
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

# 分层带宽 (HTB)
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit

# 网络模拟 (Netem)
tc qdisc add dev eth0 root netem delay 100ms loss 5% duplicate 1%

监控命令

bash 复制代码
tc -s qdisc show dev eth0      # 队列统计
tc -s class show dev eth0      # 类别统计
tc filter show dev eth0        # 过滤器

高级功能

  • 入口限速:ingress qdisc
  • cgroup 集成:容器 QoS
  • eBPF 分类器:tc filter add ... bpf
  • 负载均衡:多WAN出口平衡

五、rtacct 命令:路由统计专家

功能 :显示路由表流量统计(已整合到 ip -s route

现代替代方案:
bash 复制代码
# 显示所有路由统计
ip -s route show

# 按路由表显示
ip -s route show table main

# 特定路由统计
ip -s route get 192.168.1.0/24

输出解析

复制代码
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10 
    cache < 10.24.0.1 > 
    metrics 10 
    used 1254   # 路由使用次数
    used 2m34s  # 最后使用时间

历史数据查看

bash 复制代码
# 安装rtacct工具
apt install iproute2-rtacct

# 查看统计
rtacct -j | jq  # JSON格式

监控脚本

bash 复制代码
watch -n 1 "ip -s route | grep -A1 192.168.1.0/24"

六、命令对比与协作

功能 主要命令 辅助命令 协作示例
接口配置 ip link ethtool ip link set eth0 mtu 9000
网桥管理 bridge ip link ip link add br0 type bridge + bridge vlan
流量控制 tc iptables iptables -t mangle -A POSTROUTING -j CLASSIFY
连接分析 ss lsof ss -t -p + lsof -i :80
路由统计 ip -s route nload ip -s route + nload eth0

七、最佳实践指南

  1. 现代替代方案

    bash 复制代码
    ip route 代替 route
    ss 代替 netstat
    bridge 代替 brctl
    ip -s route 代替 rtacct
  2. 持久化配置

    • systemd-networkd:.network 文件
    • NetworkManager:nmcli
    • Debian:/etc/network/interfaces
    • RHEL:/etc/sysconfig/network-scripts/
  3. 故障排查流程

    bash 复制代码
    ip link show → ip addr show → ip route show → ss -tunap → tc -s qdisc
  4. 性能敏感场景

    • 使用 ss 而非 netstat
    • 避免复杂 tc u32 过滤器
    • 启用硬件卸载:ethtool -K eth0 tx-checksumming on
  5. 容器网络

    bash 复制代码
    ip netns + veth pair + bridge + tc cgroup

八、版本特性

命令 新增特性 (v5.0+)
ip VRF 支持、SRv6、JSON 输出增强
ss BPF 过滤增强、TCP 诊断信息扩展
bridge MAB 支持、EVPN-VXLAN 集成
tc eBPF 分类器/动作、MPLS QoS
rtacct 功能已合并到 ip -s route

掌握 iproute2 套件是 Linux 网络管理的核心技能,从基础的接口配置到复杂的流量工程,这些工具提供了完整、一致的解决方案,特别适合云环境、容器网络和 SDN 场景。







iproute2 命令详解:ip, bridge, ss, tc, rtacct

iproute2 是现代 Linux 网络管理的核心工具集,取代了传统的 ifconfigroutearp 等命令。以下是主要命令的详细解析:


🔧 1. ip 命令 - 全能网络配置工具

ip 是 iproute2 的核心命令,用于管理网络接口、地址、路由、策略路由等。

主要功能模块:
bash 复制代码
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | rule | neigh | maddr | tunnel | ... }
常用子命令详解:
bash 复制代码
### 查看所有接口
ip -c link show

### 启用/禁用接口
sudo ip link set eth0 up
sudo ip link set eth0 down

### 修改接口属性(MTU、MAC地址)
sudo ip link set eth0 mtu 9000
sudo ip link set eth0 address 00:11:22:33:44:55

### 创建虚拟接口
sudo ip link add name veth0 type veth peer name veth1
ip addr - IP地址管理
bash 复制代码
### 查看所有地址
ip -c addr show

### 添加/删除IP地址
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip addr del 192.168.1.100/24 dev eth0

### 添加多个IP地址
sudo ip addr add 192.168.1.101/24 dev eth0 label eth0:1
ip route - 路由表管理
bash 复制代码
### 查看路由表
ip -c route show

### 添加/删除路由
sudo ip route add 10.0.0.0/8 via 192.168.1.1
sudo ip route add default via 192.168.1.1
sudo ip route del 10.0.0.0/8
ip rule - 策略路由
bash 复制代码
### 查看策略路由规则
ip rule show

### 添加基于源IP的路由规则
sudo ip rule add from 192.168.1.100 lookup 100
sudo ip route add default via 10.0.0.1 table 100
ip neigh - ARP/NDP邻居表
bash 复制代码
### 查看ARP缓存
ip neigh show

### 添加/删除静态ARP条目
sudo ip neigh add 192.168.1.50 lladdr 00:11:22:33:44:55 dev eth0 nud permanent
sudo ip neigh del 192.168.1.50 dev eth0

🌉 2. bridge 命令 - 网桥管理

专门用于管理 Linux 网桥(软件交换机)

常用操作:
bash 复制代码
### 查看网桥信息
bridge link show

### 查看MAC地址表
bridge fdb show

### 添加静态MAC条目
sudo bridge fdb add 00:11:22:33:44:55 dev eth0 master static

### 查看VLAN配置
bridge vlan show

### 添加接口到VLAN
sudo bridge vlan add vid 10 dev eth0

### 实时监控网桥事件
bridge monitor all
网桥管理示例:
bash 复制代码
### 创建网桥
sudo ip link add name br0 type bridge

### 添加接口到网桥
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0

### 设置网桥参数
sudo bridge link set dev eth0 cost 10
sudo bridge link set dev eth1 priority 32

📊 3. ss 命令 - 套接字统计

替代 netstat 的现代工具,性能更好,功能更强

常用选项:
bash 复制代码
ss [options] [ FILTER ]
选项:
  -t : TCP sockets
  -u : UDP sockets
  -n : 不解析服务名
  -l : 监听中的套接字
  -p : 显示进程信息
  -s : 摘要统计
  -o : 显示计时器信息
  -m : 显示套接字内存使用
  -i : 显示TCP内部信息
实用示例:
bash 复制代码
### 查看所有TCP连接
ss -t -a

### 查看监听中的TCP端口
ss -tln

### 查看指定端口的连接
ss -t sport = :80

### 显示进程信息
ss -t -p

### 显示摘要统计
ss -s

### 按状态过滤连接
ss -t state established
ss -t state time-wait
连接状态类型:
状态 描述
established 已建立的连接
syn-sent 主动发起连接
syn-recv 收到SYN请求
fin-wait-1 等待远程TCP终止确认
fin-wait-2 等待远程TCP终止请求
time-wait 等待处理仍在网络中的分组
closed 关闭状态
close-wait 等待本地应用终止
last-ack 等待原远程TCP终止确认
listening 监听状态

🚦 4. tc 命令 - 流量控制

Linux 内核的高级流量控制工具(QoS)

核心概念:
  • qdisc (排队规则): 定义数据包如何排队和调度
  • class (类): 在分层qdisc中用于划分带宽
  • filter (过滤器): 将数据包分类到不同的类
常用操作:
bash 复制代码
### 查看接口的流量控制设置
tc qdisc show dev eth0

### 添加HTB队列规则
sudo tc qdisc add dev eth0 root handle 1: htb default 10

### 添加带宽限制类
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit

### 添加子类
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 70mbit ceil 100mbit

### 添加过滤器(基于端口)
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
  match ip dport 80 0xffff flowid 1:10
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
  match ip dport 443 0xffff flowid 1:20

### 添加网络延迟和丢包
sudo tc qdisc add dev eth0 root netem delay 100ms loss 1%
常见qdisc类型:
类型 描述
pfifo_fast 默认的FIFO队列
htb 分层令牌桶(带宽控制)
fq_codel 公平队列拥塞控制
sfq 随机公平队列
tbf 令牌桶过滤器
netem 网络模拟(延迟/丢包)

📈 5. rtacct 命令 - 路由统计

显示按路由表分类的流量统计(已整合到 ip -s route

替代用法:
bash 复制代码
### 查看所有路由表的流量统计
ip -s route show table all

### 查看特定路由表的统计
ip -s route show table 100

### 实时监控路由流量
watch -n 1 "ip -s route show table main"
输出示例:
复制代码
default via 192.168.1.1 dev eth0 
    cache  users 2 age 12sec 
    mtu 1500 rtt 25ms rttvar 100ms cwnd 10 
    packets 12345 bytes 12345678 
    errors 0 dropped 5 overlimits 0

🧠 高级技巧与组合使用

1. 网络诊断流程
bash 复制代码
### 1. 查看接口状态
ip -c link show

### 2. 检查IP配置
ip -c addr show

### 3. 检查路由表
ip -c route show

### 4. 检查ARP缓存
ip neigh show

### 5. 检查活动连接
ss -tunap

### 6. 检查流量控制
tc -s qdisc show dev eth0
2. 创建复杂网络拓扑
bash 复制代码
### 创建VLAN
sudo ip link add link eth0 name eth0.100 type vlan id 100

### 创建网桥
sudo ip link add name br0 type bridge

### 添加VLAN到网桥
sudo ip link set eth0.100 master br0

### 设置IP地址
sudo ip addr add 192.168.100.1/24 dev br0

### 启用所有接口
sudo ip link set eth0 up
sudo ip link set eth0.100 up
sudo ip link set br0 up
3. 流量监控组合
bash 复制代码
### 实时监控TCP连接
watch -n 1 "ss -t -i -n"

### 监控网络吞吐量
nload eth0

### 捕获特定流量
tcpdump -i eth0 -nn 'port 80'

### 分析路由统计
watch -n 1 "ip -s route show table all"

💾 持久化配置

iproute2 命令是临时的,重启后失效。持久化方法:

1. 使用 netplan (Ubuntu)
yaml 复制代码
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
  bridges:
    br0:
      interfaces: [eth1]
      addresses: [10.0.0.1/24]
2. 使用 systemd-networkd
ini 复制代码
### /etc/systemd/network/20-br0.netdev
[NetDev]
Name=br0
Kind=bridge

### /etc/systemd/network/20-br0.network
[Match]
Name=br0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
3. 使用 network-scripts (RHEL/CentOS)
bash 复制代码
### /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.1.100
NETMASK=255.255.255.0
ONBOOT=yes

掌握这些 iproute2 工具将使您能够高效管理 Linux 网络,从基本配置到高级流量控制和网络诊断。







iproute2 是现代 Linux 系统中用于网络配置、管理和监控 的核心工具集,取代了过时的 net-tools(如 ifconfig, route, arp, netstat)。你提到的 ip, bridge, ss, tc, rtacct 是其中最常用的命令。下面是对它们的详细解释:

核心思想: iproute2 采用对象模型 。你操作的是网络对象(如 link, address, route, rule, neighbour, tunnel, qdisc, class 等),使用统一的 ip 命令通过不同的子命令(如 add, delete, show, list, change, replace)来管理它们。其他命令(bridge, ss, tc, rtacct)则专注于特定领域。


1. ip - 全能网络配置工具

  • 功能: 配置和管理几乎所有网络层对象:网络接口(link)、IP地址(address/addr)、路由表(route/rule)、邻居缓存(ARP/NDP - neighbour/neigh)、隧道(tunnel)、策略路由(rule)、组播(maddr)、路由属性(rttable)等。
  • 通用语法: ip [ OPTIONS ] OBJECT { COMMAND | help }ip [ -all ] OBJECT { COMMAND | help }
    • OBJECT: link | addr | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm | token | tcp_metrics | netns | l2tp | fou | macsec | tcp_metrics | ... (常用对象已加粗)
    • COMMAND: show | add | delete | flush | replace | change | get | set | ...
    • OPTIONS: -s (统计信息), -d (详细信息), -4 (IPv4), -6 (IPv6), -br (简洁表格输出), -j (JSON 输出), -p (易读输出) 等。
  • 主要子命令详解:
    • ip link (ip l): 管理网络接口(Link)
      • show: 显示所有接口状态 (ip -s link show 显示带统计信息)。
      • set DEVICE { up | down | arp { on | off } | multicast { on | off } | name NEWNAME | address LLADDR | mtu MTU | ... }: 启用/禁用接口、修改属性(MTU, MAC地址, 名称等)。
      • add DEVICE type TYPE { ... }: 添加虚拟接口(如 veth, bridge, vlan, macvlan, ipvlan)。
      • delete DEVICE: 删除接口。
      • 示例:
        • ip link show (查看所有接口)
        • ip link set eth0 up (启用 eth0)
        • ip link set eth0 mtu 9000 (设置 eth0 MTU 为 9000)
        • ip link add name br0 type bridge (创建网桥 br0)
        • ip link add link eth0 name eth0.10 type vlan id 10 (在 eth0 上创建 VLAN 10 的接口 eth0.10)
    • ip address (ip addr / ip a): 管理IP地址(Address)
      • show [DEVICE]: 显示指定接口或所有接口的 IP 地址 (ip -4 addr 只显示 IPv4)。
      • add ADDRESS dev DEVICE [label LABEL] [scope SCOPE]: 添加 IP 地址到接口(可指定标签和作用域)。
      • del ADDRESS dev DEVICE: 从接口删除 IP 地址。
      • flush [dev DEVICE] [scope SCOPE]: 清除接口上的地址。
      • 示例:
        • ip addr show eth0 (查看 eth0 的 IP 地址)
        • ip addr add 192.168.1.100/24 dev eth0 (给 eth0 添加 IP)
        • ip addr add 2001:db8::1/64 dev eth0 (给 eth0 添加 IPv6 地址)
        • ip addr del 192.168.1.100/24 dev eth0 (删除 eth0 上的 IP)
        • ip addr flush dev eth1 (清除 eth1 上的所有地址)
    • ip route (ip r): 管理路由表(Routing Table)
      • show [table TABLE_ID]: 显示主路由表或指定表的路由 (ip -6 route 显示 IPv6 路由)。
      • add { PREFIX | default } via GATEWAY dev DEVICE [table TABLE_ID] [metric METRIC] [proto PROTO] ...: 添加路由。
      • del { PREFIX | default } via GATEWAY dev DEVICE ...: 删除路由。
      • replace: 替换现有路由。
      • flush [table TABLE_ID]: 清除路由表。
      • get ADDRESS: 查询去往特定地址的路由路径。
      • 示例:
        • ip route show (显示主路由表)
        • ip route add default via 192.168.1.1 dev eth0 (添加默认网关)
        • ip route add 10.0.0.0/8 via 172.16.0.1 dev tun0 (添加静态路由)
        • ip route add unreachable 203.0.113.0/24 (添加黑洞路由)
        • ip route del default via 192.168.1.1 dev eth0 (删除默认网关)
        • ip route get 8.8.8.8 (查询去 8.8.8.8 的路由)
    • ip rule: 管理策略路由规则(Routing Policy Database)
      • show: 显示所有规则。
      • add { from SRC | to DST | iif DEVICE | oif DEVICE | fwmark MARK | ... } [table TABLE_ID] [priority PRIO]: 添加规则(根据源地址、目标地址、入接口、出接口、防火墙标记等选择路由表)。
      • del SELECTOR: 删除规则。
      • 示例:
        • ip rule show (显示规则)
        • ip rule add from 192.168.2.0/24 table 100 (源 IP 在 192.168.2.0/24 的流量查表 100)
        • ip rule add fwmark 1 table 200 (防火墙标记为 1 的流量查表 200)
    • ip neighbour (ip neigh): 管理ARP/NDP 缓存(Neighbour Cache)
      • show: 显示邻居表(ARP/NDP)。
      • flush: 清除邻居表。
      • add ADDRESS lladdr LLADDR dev DEVICE [nud STATE]: 添加静态 ARP 条目。
      • del ADDRESS dev DEVICE: 删除邻居条目。
      • change: 修改现有条目。
      • 示例:
        • ip neigh show (显示 ARP/NDP 表)
        • ip neigh flush dev eth0 (清除 eth0 的 ARP 缓存)
        • ip neigh add 192.168.1.5 lladdr 00:11:22:33:44:55 dev eth0 nud permanent (添加永久静态 ARP 条目)
    • ip netns: 管理网络命名空间(Network Namespaces)
      • list: 列出所有网络命名空间。
      • add NAME: 创建命名空间。
      • del NAME: 删除命名空间。
      • exec NAME COMMAND: 在指定命名空间中执行命令。
      • 示例:
        • ip netns add ns1 (创建命名空间 ns1)
        • ip netns exec ns1 ip link show (在 ns1 中执行 ip link show)

2. bridge - 专门管理 Linux 网桥

  • 功能: 提供比 ip link 更精细的网桥(Bridge) 控制,特别是管理 VLAN 过滤(VLAN-aware bridge)STP(生成树协议)组播FDB(转发数据库)VLAN 隧道协议(如 VXLAN)端点 等。它是 ip link 命令操作网桥功能的补充和增强。
  • 通用语法: bridge [ OPTIONS ] OBJECT { COMMAND | help }
    • OBJECT: link | fdb | mdb | vlan | monitor | ... (常用对象已加粗)
    • COMMAND: show | add | delete | flush | ...
  • 主要子命令详解:
    • bridge link (brctl show 的现代替代): 显示连接到网桥的端口信息 (包括 VLAN 过滤状态)
      • show [dev BRIDGE]: 显示指定网桥或所有网桥的端口信息。
      • 示例: bridge link show dev br0 (查看 br0 网桥上的端口状态)
    • bridge fdb: 管理网桥的转发数据库(Forwarding Database - MAC 地址表)
      • show [dev DEVICE]: 显示 FDB 条目。
      • add LLADDR dev DEVICE [ master BRIDGE ] [ vlan VID ] [ dynamic | static | local ]: 添加静态 FDB 条目(通常让网桥自己学习动态条目)。
      • del LLADDR dev DEVICE: 删除 FDB 条目。
      • 示例:
        • bridge fdb show (显示所有 FDB 条目)
        • bridge fdb add 00:11:22:33:44:55 dev eth1 master br0 vlan 10 static (添加静态条目,MAC 00:11:22:33:44:55 在 br0 的 eth1 端口上属于 VLAN 10)
    • bridge vlan: 管理网桥端口的 VLAN 成员关系和过滤设置 (VLAN-aware bridge 核心)
      • show [ dev DEVICE ]: 显示端口的 VLAN 配置。
      • add dev DEVICE vid VID [ pvid ] [ untagged ]: 添加端口到 VLAN VID,可设为 PVID(端口默认 VLAN),可设为不打标签(untagged)。
      • del dev DEVICE vid VID: 从 VLAN VID 中移除端口。
      • 示例:
        • bridge vlan show (显示所有端口的 VLAN 配置)
        • bridge vlan add dev eth0 vid 10 pvid untagged master br0 (将 eth0 加入 br0,设置其 PVID 为 10,对 VLAN 10 的帧不打标签发送)
        • bridge vlan add dev eth0 vid 20 master br0 (将 eth0 加入 br0 的 VLAN 20,帧带 VLAN 20 标签发送)
    • bridge mdb: 管理网桥的组播数据库(Multicast Database) (用于 IGMP/MLD 嗅探)

3. ss - Socket Statistics (替代 netstat)

  • 功能: 用于转储详细的套接字(Socket)统计信息 。比 netstat 更快、更强大、显示信息更丰富(如 TCP 内部状态信息、内存使用、cgroup 信息、过滤功能强大)。
  • 通用语法: ss [ OPTIONS ] [ FILTER ]
  • 常用选项:
    • -t / --tcp: TCP sockets
    • -u / --udp: UDP sockets
    • -U / --udplite: UDPLite sockets
    • -S / --sctp: SCTP sockets
    • -w / --raw: RAW sockets
    • -x / --unix: Unix domain sockets (UDS)
    • -a / --all: 显示所有 sockets (监听 + 非监听)
    • -l / --listening: 仅显示监听 sockets
    • -o / --options: 显示计时器信息
    • -e / --extended: 显示详细 socket 信息 (用户, inode, cgroup 等)
    • -m / --memory: 显示 socket 内存使用
    • -p / --processes: 显示使用 socket 的进程/PID
    • -i / --info: 显示 TCP 内部信息 (拥塞控制算法, RTT, RTO, cwnd, ssthresh, bytes in flight, etc.)
    • -s / --summary: 打印 socket 使用统计摘要
    • -4 / -6: 仅 IPv4 / 仅 IPv6
    • -n / --numeric: 不解析服务名称 (显示端口号) 和主机名 (显示 IP)
    • -r / --resolve: 尝试解析主机名和服务名
    • -H / --no-header: 不显示标题行
    • --tipc: TIPC sockets
    • 过滤表达式 (FILTER): 极其强大!基于 state, addresses, ports, cgroup 等过滤。
      • state STATE: 按 TCP 状态过滤 (e.g., state established, state listening, state time-wait, state fin-wait-1)。可用 all 表示所有状态。
      • ( dport OP PORT | sport OP PORT ): 目标端口 / 源端口 比较 (OP: =, !=, <, <=, >, >=, eq, neq, lt, le, gt, ge)。
      • dst ADDRESS[:PORT] / src ADDRESS[:PORT]: 目标地址/端口 / 源地址/端口。
      • cgroup CGCLASS: 按 cgroup 过滤。
      • 组合: 使用 and, or, not 或括号组合过滤条件。
  • 示例:
    • ss -tunap (显示所有 TCP/UDP sockets,数字格式,显示进程,包括非监听)
    • ss -tlpn (显示所有 TCP 监听 sockets,数字格式,显示进程)
    • ss -s (打印 socket 统计摘要)
    • ss -t -i (显示所有 TCP sockets 的内部信息)
    • ss -o state time-wait (显示所有处于 TIME-WAIT 状态的 sockets)
    • ss -nt dst 8.8.8.8 (显示目标地址是 8.8.8.8 的数字格式 TCP sockets)
    • ss -nt '( dport = :80 or dport = :443 )' (显示目标端口是 80 或 443 的数字格式 TCP sockets)
    • ss -nt src 192.168.1.0/24 (显示源 IP 在 192.168.1.0/24 网段的数字格式 TCP sockets)

4. tc - Traffic Control

  • 功能: 配置 Linux 内核的流量控制 功能,实现 QoS(服务质量) 。核心组件包括:
    • 排队规则(QDisc - Queueing Discipline): 附着在网络接口上,控制数据包的排队和调度算法(如 pfifo_fast, htb, hfsc, fq_codel, cake)。
    • 类(Class): 存在于某些 QDisc(如 HTB, HFSC)内部,用于划分流量类别。每个类可以有独立的带宽限制和优先级。
    • 过滤器(Filter): 将流量分类到不同的 QDisc 或 Class 中。分类依据可以是源/目标 IP/端口、协议、TOS/DSCP、防火墙标记(fwmark)、cgroup 等。
    • 动作(Action): 在分类后对数据包执行的操作(如丢弃、延迟、标记、重定向到另一个 QDisc/Class)。
  • 通用语法: tc [ OPTIONS ] OBJECT { COMMAND | help }
    • OBJECT: qdisc | class | filter | action | monitor | ...
    • COMMAND: add | delete | change | replace | show | list | ...
  • 主要子命令详解:
    • tc qdisc: 管理排队规则(QDisc)
      • add dev DEVICE [ handle QDISC-HANDLE ] root QDISC-TYPE [ QDISC-PARAMETERS ]: 在设备上添加根 QDisc。
      • add dev DEVICE [ parent CLASSID | root ] [ handle QDISC-HANDLE ] QDISC-TYPE [ QDISC-PARAMETERS ]: 在根或父类下添加子 QDisc。
      • del dev DEVICE [ handle QDISC-HANDLE | root | parent CLASSID ]: 删除 QDisc。
      • replace dev DEVICE [ handle QDISC-HANDLE | root ] QDISC-TYPE [ QDISC-PARAMETERS ]: 替换现有 QDisc (通常用于修改配置而无需删除)。
      • show dev DEVICE: 显示设备上的 QDisc 树。
      • 示例:
        • tc qdisc add dev eth0 root handle 1: htb default 12 (在 eth0 上添加根 HTB QDisc,handle 为 1:,默认流量发送到 classid 1:12)
        • tc qdisc add dev eth0 parent 1:1 handle 10: sfq (在 HTB class 1:1 下添加 SFQ 子 QDisc)
        • tc qdisc replace dev eth0 root fq_codel (用 fq_codel 替换 eth0 上的根 QDisc)
        • tc qdisc show dev eth0 (显示 eth0 的 QDisc 树)
    • tc class: 管理类(Class) (主要在 classful QDiscs 如 HTB, HFSC 中使用)
      • add dev DEVICE parent PARENT-HANDLE classid CLASSID CLASS-TYPE [ CLASS-PARAMETERS ]: 在父 QDisc/Class 下添加一个类。
      • del dev DEVICE parent PARENT-HANDLE classid CLASSID: 删除类。
      • change dev DEVICE parent PARENT-HANDLE classid CLASSID CLASS-TYPE [ CLASS-PARAMETERS ]: 修改类参数。
      • show dev DEVICE: 显示设备上的类层次结构。
      • 示例 (配合 HTB):
        • tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit (在根 QDisc 1: 下创建 classid 1:1,保证速率 100Mbps,最高速率 100Mbps)
        • tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit ceil 100mbit (在父类 1:1 下创建 classid 1:10,保证 50Mbps,最高 100Mbps)
        • tc class show dev eth0 (显示 eth0 的类)
    • tc filter: 管理过滤器(Filter)
      • add dev DEVICE [ parent PARENT-HANDLE | root ] protocol PROTO prio PRIORITY FILTER-TYPE [ FILTER-PARAMETERS ] flowid CLASSID: 添加过滤器,将匹配的流量导向指定 CLASSID。
      • del dev DEVICE [ parent PARENT-HANDLE | root ] [ handle FILTER-HANDLE ] prio PRIORITY: 删除过滤器(通常通过 parent, prio 定位)。
      • change: 修改过滤器。
      • replace: 替换过滤器。
      • show dev DEVICE: 显示设备上的过滤器。
      • 常用 FILTER-TYPE:
        • u32: 最强大灵活,基于任意包头字段匹配。
        • fw: 基于防火墙标记 (iptables/nftables 打的 MARK) 匹配。
        • route: 基于路由结果(源地址、TOS 等)匹配。
        • cgroup: 基于 cgroup 匹配。
        • basic: 基于 ematch (可扩展匹配) 表达式,更易读。
      • 示例:
        • tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 80 0xffff flowid 1:10 (将目标端口 80 的流量导向 class 1:10)
        • tc filter add dev eth0 parent 1: protocol ip prio 2 fw flowid 1:11 (将防火墙标记过的流量导向 class 1:11 - 标记需用 iptables/nftables 设置)
        • tc filter add dev eth0 parent 1: protocol ip prio 3 basic match 'meta(sport eq 22)' flowid 1:12 (将源端口 22 的流量导向 class 1:12 - 使用 basic 和 ematch)
        • tc filter show dev eth0 parent 1: (显示附加在根 QDisc 1: 上的过滤器)
  • 重要概念: handle, parent, classid 的命名约定(如 1:, 1:0, 1:1, 10:, 8001::1)用于构建树状层次结构。

5. rtacct - Routing Table Statistics

  • 功能: 显示内核路由表统计信息 ,按路由表(table)网络接口(interface) 汇总流量(字节数、包数)。这些统计信息记录在 /proc/net/rt_acct/proc/net/rt_acct/<table_id> 中。它是 ip -s route 命令输出中统计信息的替代/补充视图,提供按表聚合的数据。
  • 语法:
    • rtacct [ OPTIONS ] [ ROUTE-TABLE | INTERFACE ] ...
  • 常用选项:
    • -n, --numeric: 不解析主机名(显示 IP)。
    • -r, --resolve: 解析主机名(如果可能)。
    • -h, --human: 以人类可读格式(K, M, G)显示字节数。
    • -s, --short: 短格式输出(无表头)。
    • -d, --dump: 显示原始数据(用于脚本处理)。
    • -v, --version: 显示版本信息。
    • -z, --zero: 在显示后清零统计计数器。
  • 输出列解释:
    • Tos: 服务类型 (TOS) 值或范围 (通常 0 表示默认)。
    • Bytes: 通过该路由表项转发的总字节数。
    • Pkts: 通过该路由表项转发的总数据包数。
    • Target: 目标网络地址(或接口名称,如果指定了接口)。
    • Gateway: 下一跳网关地址(如果适用)。
    • Iface: 出站接口。
  • 示例:
    • rtacct: 显示所有路由表的聚合统计信息。
    • rtacct -h: 以人类可读格式显示所有路由表的聚合统计信息。
    • rtacct 0: 显示主路由表 (table main, ID 254) 的详细统计信息(按路由项)。
    • rtacct eth0: 显示所有通过 eth0 接口发送流量的路由表项的统计信息。
    • rtacct -z: 显示并清零所有路由表统计信息。

总结:

  • ip: 网络配置的瑞士军刀(接口、地址、路由、邻居、命名空间等)。
  • bridge: 高级网桥管理(VLAN 过滤、FDB、VLAN 成员关系)。
  • ss: 强大的套接字连接和统计查看工具(替代 netstat)。
  • tc: 复杂的流量控制(QoS)配置工具(QDiscs, Classes, Filters, Actions)。
  • rtacct: 查看按路由表或接口汇总的流量统计。

掌握这五个命令是进行高级 Linux 网络管理、排错和优化的关键。每个命令都有极其丰富的选项和功能,强烈建议结合 man 手册页(如 man ip, man bridge, man ss, man tc, man rtacct)和在线资源进行深入学习。理解它们之间的协作(如 ip routertacct, iptables/nftablestc filter fw, ip linkbridge vlan)对于构建复杂网络环境至关重要。







iproute2工具集详解:ip、bridge、ss、tc、rtacct命令指南

1. ip命令:网络接口与路由管理

功能概述

ip是iproute2的核心命令,替代传统ifconfigroute,用于管理网络接口、IP地址、路由表及策略路由。

常用子命令
1.1 接口管理(ip link
  • 启用/禁用接口

    bash 复制代码
    ip link set eth0 up    # 启用eth0
    ip link set eth0 down  # 禁用eth0
  • 配置MTU

    bash 复制代码
    ip link set eth0 mtu 9000
  • 创建虚拟接口

    bash 复制代码
    ip link add veth0 type veth peer name veth1  # 创建veth对
    ip link add bond0 type bond mode 802.3ad     # 创建链路聚合
1.2 IP地址管理(ip addr
  • 添加/删除IP

    bash 复制代码
    ip addr add 192.168.1.10/24 dev eth0    # 添加IPv4地址
    ip addr del 192.168.1.10/24 dev eth0    # 删除IPv4地址
    ip addr add 2001:db8::1/64 dev eth0     # 添加IPv6地址
  • 显示接口IP

    bash 复制代码
    ip addr show eth0
1.3 路由管理(ip route
  • 添加静态路由

    bash 复制代码
    ip route add 10.0.0.0/8 via 192.168.1.1       # 指定网关
    ip route add default via 192.168.1.1          # 默认路由
  • 查看路由表

    bash 复制代码
    ip route show table main      # 主路由表
    ip route get 8.8.8.8          # 查询路径
1.4 策略路由(ip rule
  • 基于源IP的路由

    bash 复制代码
    ip rule add from 192.168.2.0/24 lookup 100   # 源IP策略
    ip rule add fwmark 0x1 lookup 200            # 防火墙标记策略

2. bridge命令:网桥与VLAN管理

功能概述

bridge替代brctl,用于创建和管理Linux网桥,支持VLAN、STP及MAC地址表操作。

常用操作
2.1 网桥基础操作
  • 创建网桥

    bash 复制代码
    ip link add name br0 type bridge    # 创建网桥接口
    ip link set eth0 master br0         # 将eth0加入网桥
  • 启用STP

    bash 复制代码
    ip link set br0 type bridge stp_state 1  # 启用生成树协议
2.2 VLAN配置
  • 添加VLAN

    bash 复制代码
    bridge vlan add dev eth0 vid 10         # 添加VLAN 10
    bridge vlan add dev eth0 vid 10 pvid    # 设置PVID
  • 配置Trunk端口

    bash 复制代码
    bridge vlan add dev eth0 vid 10-20      # 允许VLAN 10-20通过
2.3 MAC地址表管理
  • 添加静态MAC条目

    bash 复制代码
    bridge fdb add 00:11:22:33:44:55 dev eth0 master static
  • 显示MAC表

    bash 复制代码
    bridge fdb show

3. ss命令:套接字统计与监控

功能概述

ss替代netstat,高效显示TCP/UDP/UNIX套接字状态,支持进程关联和过滤。

常用选项
  • 显示所有套接字

    bash 复制代码
    ss -a          # 所有套接字
    ss -t          # 仅TCP
    ss -u          # 仅UDP
  • 过滤监听端口

    bash 复制代码
    ss -l          # 监听中的套接字
    ss -tln        # TCP监听(数字格式)
  • 关联进程信息

    bash 复制代码
    ss -tp         # 显示TCP进程
    ss -tlnp | grep ':80'  # 查找占用80端口的进程

4. tc命令:流量控制与QoS

功能概述

tc用于网络流量整形、优先级调度及带宽限制,是Linux QoS的核心工具。

常用场景
4.1 简单限速(TBF)
bash 复制代码
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms
4.2 优先级调度(HTB)
bash 复制代码
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit

5. rtacct命令:路由统计与监控

功能概述

rtacct用于统计路由性能数据,如字节数、数据包数及错误率。

基本用法
  • 显示统计摘要

    bash 复制代码
    rtacct -s
  • 按协议过滤

    bash 复制代码
    rtacct -p tcp        # 仅TCP统计
    rtacct -p udp        # 仅UDP统计

总结

iproute2工具集提供了现代、高效的Linux网络管理方案:

  • ip:网络接口、地址、路由及策略路由的全面管理。
  • bridge:网桥、VLAN及STP的高级配置。
  • ss :实时监控套接字状态,替代传统netstat
  • tc:实现复杂的流量控制和QoS策略。
  • rtacct:路由性能统计,辅助网络优化。

通过结合这些命令,可高效完成网络配置、故障排查及性能优化任务。







以下是 iproute2 工具集中 ipbridgesstcrtacct 命令的详解,结合实际场景和用法进行说明:


1. ip 命令

ipiproute2 的核心工具,用于管理网络接口、IP地址、路由表等。

基本语法
bash 复制代码
ip [OPTIONS] OBJECT { COMMAND | help }
常见对象(OBJECT)
  • link:管理网络接口(如启用/禁用接口、修改 MTU)。
  • addr:管理 IP 地址。
  • route:管理路由表。
  • neigh:管理 ARP 表。
  • rule:管理路由策略。
常用操作
  • 启用/禁用接口

    bash 复制代码
    ip link set eth0 up/down
  • 分配 IP 地址

    bash 复制代码
    ip addr add 192.168.1.10/24 dev eth0
  • 查看接口信息

    bash 复制代码
    ip addr show
  • 添加默认路由

    bash 复制代码
    ip route add default via 192.168.1.1 dev eth0
注意事项
  • 配置是临时的,重启后失效。需通过系统配置文件(如 /etc/network/interfaces/etc/sysconfig/network-scripts/)持久化。

2. bridge 命令

bridge 用于创建和管理网桥(Bridge),实现二层网络互联。

基本语法
bash 复制代码
ip link add name <bridge_name> type bridge
常用操作
  1. 创建网桥

    bash 复制代码
    ip link add name br0 type bridge
  2. 添加物理接口到网桥

    bash 复制代码
    ip link set eth0 master br0
    ip link set eth1 master br0
  3. 启用网桥并分配 IP

    bash 复制代码
    ip link set br0 up
    ip addr add 192.168.1.100/24 dev br0
  4. 关闭 STP(生成树协议)

    bash 复制代码
    bridge link set dev br0 stp_state 0
持久化配置
  • /etc/network/interfaces(Debian/Ubuntu)中添加:

    bash 复制代码
    auto br0
    iface br0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        bridge_ports eth0 eth1
        bridge_stp off

3. ss 命令

ss(Socket Statistics)用于查询和监控套接字(Socket)状态,比 netstat 更高效。

基本语法
bash 复制代码
ss [OPTIONS]
常用操作
  • 查看所有 TCP 连接

    bash 复制代码
    ss -t -a
  • 查看监听端口

    bash 复制代码
    ss -lntup
  • 解析主机名和端口

    bash 复制代码
    ss -r -t -a
  • 统计连接状态

    bash 复制代码
    ss -s
优势
  • 使用 tcp_diag 内核模块,性能优于 netstat
  • 支持过滤条件(如 -f 指定协议族)。

4. tc 命令

tc(Traffic Control)用于配置流量控制策略,如带宽限制、延迟模拟、丢包率设置等。

基本语法
bash 复制代码
tc [OPTIONS] qdisc [ADD|CHANGE|DELETE] ... 
tc class [ADD|CHANGE|DELETE] ...
tc filter [ADD|CHANGE|DELETE] ...
常见场景
  1. 带宽限制(HTB)

    bash 复制代码
    # 添加根队列(HTB)
    tc qdisc add dev eth0 root handle 1: htb default 12
    # 创建主类(总带宽 100M)
    tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
    # 创建子类(限制为 10M)
    tc class add dev eth0 parent 1:1 classid 1:12 htb rate 10mbit
    # 绑定过滤器(限制 HTTP 流量)
    tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:12
  2. 延迟模拟(netem)

    bash 复制代码
    tc qdisc add dev eth0 root netem delay 100ms
清除规则
bash 复制代码
tc qdisc del dev eth0 root

5. rtacct 命令

rtacct(Real-Time Accounting)用于实时统计网络流量数据(如带宽使用量)。

基本语法
bash 复制代码
rtacct [OPTIONS]
常见操作
  1. 启用流量统计

    bash 复制代码
    rtacct -i eth0 -o /var/log/traffic.log
  2. 查看统计结果

    bash 复制代码
    cat /var/log/traffic.log
用途
  • 监控特定接口的流量(如区分入站/出站流量)。
  • 结合脚本或工具(如 vnstat)生成流量报表。

总结对比

命令 功能 典型用例 注意事项
ip 网络接口/路由/IP管理 启用接口、分配 IP、添加路由 配置临时,需持久化
bridge 创建和管理网桥 虚拟化、多网卡聚合 需加载 bridge-utils 模块
ss 套接字状态查询 替代 netstat,快速查看连接状态 依赖 tcp_diag 内核模块
tc 流量控制 限速、延迟模拟、QoS 配置 配置复杂,需熟悉队列规则
rtacct 实时流量统计 监控带宽使用、生成流量报表 需配合日志工具使用

注意事项

  1. 权限问题 :所有命令需以 root 权限运行。
  2. 内核模块 :部分功能需加载内核模块(如 8021q 用于 VLAN,bridge 用于网桥)。
  3. 持久化配置iproute2 的配置重启后失效,需通过系统网络配置文件或 systemd 服务持久化。

通过合理组合这些工具,可以灵活管理 Linux 系统的网络配置和流量控制需求。







iproute2 是 Linux 系统中一套功能强大的网络管理工具集,替代了传统的 ifconfigbrctlnetstat 等工具,提供更细粒度的网络配置与监控能力。以下详解其中核心命令 ipbridgesstcrtacct 的功能、常用操作及示例。

一、ip 命令:核心网络配置工具

ip 命令是 iproute2 的核心,用于管理网络接口、IP 地址、路由表、ARP 缓存、隧道等,功能覆盖网络层核心配置。其基本语法为 ip [选项] 子命令 [参数],常用子命令如下:

1. 链路管理(ip link

用于管理网络接口(如网卡、网桥、隧道等)的状态、名称、MTU 等物理属性。

  • 常用操作
    • ip link show [dev 接口名]:显示接口信息(不指定接口则显示所有)。
      示例:ip link show eth0(查看 eth0 的详细信息,包括状态、MAC 地址、MTU 等)。
    • ip link set 接口名 [选项]:修改接口属性。
      选项:up(启用接口)、down(禁用接口)、name 新名(重命名)、mtu 数值(设置 MTU)、address MAC地址(修改 MAC 地址)。
      示例:ip link set eth0 up(启用 eth0);ip link set eth0 mtu 1450(设置 eth0 的 MTU 为 1450)。
2. IP 地址管理(ip addr

用于管理接口的 IP 地址(IPv4/IPv6)。

  • 常用操作
    • ip addr show [dev 接口名]:显示接口的 IP 地址(不指定接口则显示所有)。
      示例:ip addr show eth0(查看 eth0 的 IP 地址、子网掩码等)。
    • ip addr add IP/掩码 dev 接口名:为接口添加 IP 地址。
      示例:ip addr add 192.168.1.10/24 dev eth0(给 eth0 添加 IPv4 地址);ip addr add 2001:db8::1/64 dev eth0(添加 IPv6 地址)。
    • ip addr del IP/掩码 dev 接口名:删除接口的 IP 地址。
      示例:ip addr del 192.168.1.10/24 dev eth0
3. 路由管理(ip route

用于管理路由表(静态路由、默认路由等)。

  • 常用操作
    • ip route show:显示当前路由表。
    • ip route add 目标网段 via 网关 dev 接口名:添加静态路由。
      示例:ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0(访问 10.0.0.0/8 网段时,通过网关 192.168.1.1 从 eth0 发送)。
    • ip route add default via 网关 dev 接口名:添加默认路由(所有未匹配的流量走此路由)。
      示例:ip route add default via 192.168.1.1 dev eth0
    • ip route del 目标网段:删除路由。
      示例:ip route del 10.0.0.0/8
4. 邻居管理(ip neigh

用于管理 ARP 缓存(IPv4)或 NDP 缓存(IPv6),即 IP 与 MAC 地址的映射关系。

  • 常用操作
    • ip neigh show:显示所有邻居记录(IP-MAC 映射)。
    • ip neigh add IP lladdr MAC dev 接口名:手动添加 ARP 记录。
      示例:ip neigh add 192.168.1.2 lladdr 00:11:22:33:44:55 dev eth0
    • ip neigh del IP dev 接口名:删除 ARP 记录。
5. 隧道管理(ip tunnel

用于创建网络隧道(如 GRE、IPIP 等),实现跨网段通信。

  • 示例:ip tunnel add tun0 mode gre remote 203.0.113.1 local 198.51.100.1 ttl 255(创建 GRE 隧道 tun0,本地 IP 198.51.100.1,对端 IP 203.0.113.1)。

二、bridge 命令:网桥管理工具

bridge 命令用于管理 Linux 网桥(二层交换机功能),替代传统的 brctl,支持网桥创建、接口绑定、VLAN 隔离等。

常用子命令
  • bridge show:显示所有网桥及绑定的接口。
  • bridge add name 网桥名 [stp on/off]:创建网桥(可选开启 STP 防止环路)。
    示例:bridge add name br0 stp on(创建网桥 br0 并开启 STP)。
  • bridge link set 接口名 master 网桥名:将接口绑定到网桥(接口需先禁用 IP 地址)。
    示例:bridge link set eth0 master br0(将 eth0 加入 br0)。
  • bridge link set 接口名 nomaster:将接口从网桥中移除。
  • bridge del name 网桥名:删除网桥(需先移除所有绑定的接口)。

三、ss 命令:套接字监控工具

ss 用于查看系统套接字(TCP/UDP/UNIX 等)的状态,比传统 netstat 更高效(尤其高并发场景),支持过滤和状态查询。

常用选项
  • -t:只显示 TCP 套接字。
  • -u:只显示 UDP 套接字。
  • -l:只显示监听状态(LISTEN)的套接字。
  • -a:显示所有状态的套接字(包括已连接、监听等)。
  • -n:以数字形式显示 IP/端口(不解析域名/服务名)。
  • -p:显示套接字关联的进程(需 root 权限)。
  • -o:显示定时器信息(如 TCP 超时重传)。
示例
  • ss -tuln:显示所有监听状态的 TCP/UDP 套接字(数字形式),常用于查看开放的端口。
  • ss -anp | grep 80:查看所有与 80 端口相关的套接字及关联进程。
  • ss -t state established:显示所有已建立的 TCP 连接。

四、tc 命令:流量控制工具

tc(Traffic Control)用于管理网络流量的速率、延迟、丢包等,通过队列规则(qdisc)、分类(class)、过滤器(filter)实现精细化控制,常用于带宽限制、网络模拟(如测试延迟对应用的影响)。

核心概念
  • qdisc(队列规则):控制数据包的排队/转发策略(如限制速率、添加延迟),每个网络接口只能有一个"根 qdisc"。
  • class(分类):对流量分组,不同类可应用不同规则(如给 HTTP 流量更高优先级)。
  • filter(过滤器):将数据包分配到不同的 class(如按端口、IP 过滤)。
常用操作
  1. 模拟网络延迟/丢包 (使用 netem 模块,常用于测试):

    • 添加 100ms 延迟:tc qdisc add dev eth0 root netem delay 100ms
    • 添加 10% 丢包:tc qdisc add dev eth0 root netem loss 10%
    • 清除规则:tc qdisc del dev eth0 root
  2. 限制带宽 (使用 tbf 模块,Token Bucket Filter):

    • 限制 eth0 速率为 1Mbps,突发流量 10KB,延迟 50ms:
      tc qdisc add dev eth0 root tbf rate 1mbit burst 10k latency 50ms
  3. 基于端口分类(如限制 SSH 端口 22 的带宽):

    • 创建根 qdisc:tc qdisc add dev eth0 root handle 1: htb default 10
    • 创建总带宽类(10Mbps):tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit
    • 创建 SSH 子分类(1Mbps):tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit
    • 添加过滤器(匹配端口 22 到子分类):
      tc filter add dev eth0 parent 1: protocol ip u32 match ip dport 22 0xffff flowid 1:10

五、rtacct 命令:路由统计工具

rtacct 用于统计通过不同路由的数据包数量和字节数,帮助分析流量走向(如哪些路由承载了更多流量)。其数据基于内核路由缓存,需内核支持 CONFIG_IP_ROUTE_ACCT 选项。

常用操作
  • rtacct show:显示所有路由的统计信息(包括路由目标、数据包数、字节数)。
  • rtacct reset:重置所有路由的统计计数器。

总结

iproute2 工具集覆盖了 Linux 网络从配置(ipbridge)、监控(ssrtacct)到流量控制(tc)的全场景,是网络管理员和开发人员必备工具。实际使用中需结合具体场景(如配置静态路由、排查端口占用、限制带宽)选择对应命令及参数。







下面按 命令 → 子命令/选项 → 典型场景 的顺序,把 iproute2 套件中 5 个核心命令(ip、bridge、ss、tc、rtacct)拆成"功能速查表 + 关键示例"。

所有示例都可直接复制粘贴到 ≥3.10 的内核系统验证。


1. ip ------ "瑞士军刀"

对象(OBJECT)极多,常用 6 个:link, addr, route, neigh, rule, netns。

场景 命令示例 说明
看接口摘要 ip -br link 一行一个接口,脚本最爱
起/关接口 ip link set ens33 up/down 替代 ifconfig up/down
配地址 ip addr add 10.0.0.1/24 dev ens33 支持 /32/0
删地址 ip addr del 10.0.0.1/24 dev ens33 必须写掩码
查路由 ip route / ip -6 route 主表
加静态路由 ip route add 192.168.0.0/24 via 10.0.0.254 立即生效
策略路由 ip rule add from 192.168.1.0/24 table 100 多线路/VRF 场景
建 VLAN ip link add link ens33 name ens33.100 type vlan id 100 无需 vconfig
建 Bridge ip link add br0 type bridge 下一步把端口塞进去
建 VETH 对 ip link add veth0 type veth peer name veth1 容器/Namespace 必用
建 netns ip netns add ns1 网络隔离沙箱
看 ARP ip neigh 取代 arp -a

2. bridge ------ 专门管桥

底层调 netlink,功能与 brctl 重叠但脚本更友好。

场景 命令示例
建桥 ip link add br0 type bridge && ip link set br0 up
端口加入桥 ip link set ens33 master br0
端口离桥 ip link set ens33 nomaster
查桥端口 bridge -d link show master br0
查 MAC 转发表 bridge fdb show br br0
设置 STP ip link set br0 type bridge stp_state 1

3. ss ------ 取代 netstat 的 socket 查看器

直接读内核,连接多时速度秒杀 netstat 。

场景 命令示例 备注
全表 ss -a 监听+已建
只看 TCP ss -t / -tn(数字格式)
监听端口+进程 ss -tulnp netstat -tulnp
按状态过滤 ss -t state established
按端口过滤 ss -t '( dport = :80 or dport = :443 )'
实时监控 watch -n1 'ss -t state established'

4. tc ------ Traffic Control,QoS/限速/排队规则

最复杂,这里给出最常用 3 类示例。

场景 命令示例
出方向限速 100 Mbit tc qdisc add dev ens33 root tbf rate 100mbit burst 100kb latency 50ms
多队列公平排队 tc qdisc add dev ens33 root fq
清除规则 tc qdisc del dev ens33 root

5. rtacct ------ 路由/转发计数器(很少用到)

内核必须开启 CONFIG_IP_ROUTE_MULTIPATH=y 才会生成 /proc/net/rt_acct

rtacct 只是按路由表维度给出包/字节计数,通常结合监控脚本:

bash 复制代码
# 查看主表计数
rtacct -s
# 只显示 table 100
rtacct -t 100

6. 迁移速查表(老 vs 新)

老命令 新命令
ifconfig ip addr / ip link
route -n ip route
arp -a ip neigh
netstat -tulnp ss -tulnp
brctl show bridge link
vconfig add ip link add ... type vlan

7. 必备安装

Debian/Ubuntu

bash 复制代码
apt-get install iproute2

RHEL/CentOS

bash 复制代码
yum install -y iproute

8. 一页小抄(打印贴墙)

复制代码
ip -br a               # 地址一览
ip -br l               # 接口一览
ip r get 8.8.8.8       # 实际选路
ss -tulnp | grep :80   # 谁在监听 80
tc qdisc show dev eth0 # 当前队列规则
bridge link show       # 桥端口状态

掌握以上 5 个命令,即可覆盖 90 % 的日常 Linux 网络配置、排障与调优场景。







以下是 iproute2 工具集中核心命令的详细解析及使用示例:


1. ip 命令(网络配置核心)

功能 :管理网络接口、IP地址、路由表、邻居表等。
常用子命令

bash 复制代码
# 查看所有网络接口
ip link show

# 启用/禁用接口
ip link set eth0 up
ip link set eth0 down

# 添加/删除 IP 地址
ip addr add 192.168.1.10/24 dev eth0
ip addr del 192.168.1.10/24 dev eth0

# 查看路由表
ip route list
# 添加默认网关
ip route add default via 192.168.1.1
# 添加静态路由
ip route add 10.0.0.0/24 via 192.168.1.2

# 管理 ARP 表
ip neigh show        # 查看邻居表
ip neigh flush dev eth0  # 清空接口 ARP 缓存

2. bridge 命令(虚拟交换机管理)

功能 :配置 Linux 网桥(软件交换机),用于容器、虚拟机网络。
典型操作

bash 复制代码
# 创建网桥
ip link add name br0 type bridge
ip link set br0 up

# 将接口加入网桥
ip link set eth0 master br0
ip link set tap0 master br0

# 查看网桥拓扑
bridge link show
# 显示网桥 MAC 地址表
bridge fdb show

3. ss 命令(网络连接分析)

功能 :替代 netstat,监控 TCP/UDP 连接、套接字状态。
常用参数

bash 复制代码
ss -tulnp  # 查看所有监听端口(TCP/UDP)
ss -t      # 所有 TCP 连接
ss -s      # 统计摘要
ss dst 192.168.1.1  # 过滤目标地址
ss -o state established  # 仅显示已建立连接

4. tc 命令(流量控制)

功能 :实现 QoS(服务质量),控制带宽、延迟、丢包率。
核心概念

  • qdisc :队列调度算法(如 htb 分层令牌桶)
  • class:流量分类
  • filter:规则匹配

示例:限制带宽为 10Mbps

bash 复制代码
# 添加 HTB 队列
tc qdisc add dev eth0 root handle 1: htb default 10
# 创建子类(速率 10Mbps,突发 15M)
tc class add dev eth0 parent 1: classid 1:10 htb rate 10mbit ceil 15mbit burst 15k
# 绑定过滤器
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.0/24 flowid 1:10

5. rtacct 命令(路由统计)

功能 :查看内核路由表统计信息(如流量计数)。
使用场景

bash 复制代码
rtacct  # 显示所有路由表流量摘要
rtacct 192.168.1.0/24  # 查看特定网段流量

输出示例:

复制代码
Destination    Bytes   Pkts   Failed  
192.168.1.0    1.2GB   980K   0

关键对比表

命令 替代传统工具 核心用途
ip ifconfig, route 接口/IP/路由管理
bridge brctl 虚拟交换机配置
ss netstat 连接监控
tc iptables (限速) 流量整形/QoS
rtacct - 路由流量统计

💡 最佳实践

  • 调试容器网络时,组合使用 ip netnsbridge 命令
  • 使用 ss 替代 netstat 诊断端口占用问题
  • tchtb 算法适合企业级带宽保障场景

问题延伸

  1. 如何用 tc 实现网络延迟模拟(如 100ms 延迟)?
  2. 在 Kubernetes 中,iproute2 如何被 CNI 插件调用?
  3. 如何通过 ss 命令检测 TCP 半连接攻击?

引用说明:iproute2 通过 netlink 与内核交互,支持现代网络功能如 cgroup 集成、SR-IOV 等,其命令结构设计优于传统工具。







以下是 iproute2 工具集中 ipbridgesstcrtacct 命令的详解,结合功能、语法及实际应用场景:


一、ip 命令

ipiproute2 的核心命令,替代传统工具(如 ifconfigroute),支持网络接口、路由、策略路由等管理。

  • 查看接口状态

    bash 复制代码
    ip link show          # 查看所有接口状态
    ip -s link show eth0  # 查看 eth0 的统计信息(如 MTU、丢包率)

    关键字段:UP/DOWN(启用状态)、mtu(最大传输单元)、LOWER_UP(物理链路状态)。

  • 启用/禁用接口

    bash 复制代码
    sudo ip link set eth0 up    # 启用
    sudo ip link set eth0 down  # 禁用
  • 修改接口属性

    bash 复制代码
    sudo ip link set eth0 mtu 9000       # 设置 MTU 为 9000
    sudo ip link set eth0 address 00:11:22:33:44:55  # 修改 MAC 地址
2. IP 地址管理(addr 对象)
  • 添加/删除 IP 地址

    bash 复制代码
    sudo ip addr add 192.168.1.100/24 dev eth0  # 添加 IPv4
    sudo ip addr del 192.168.1.100/24 dev eth0  # 删除 IPv4
  • 查看 IP 地址

    bash 复制代码
    ip addr show eth0       # 查看 eth0 的 IP 信息
    ip a                    # 简写形式
3. 路由管理(route 对象)
  • 查看路由表

    bash 复制代码
    ip route show          # 查看所有路由
    ip route get 8.8.8.8   # 查看到 8.8.8.8 的路由路径
  • 添加/删除路由

    bash 复制代码
    sudo ip route add default via 192.168.1.1 dev eth0  # 默认网关
    sudo ip route add 10.0.0.0/24 via 192.168.1.2 dev eth0  # 静态路由
    sudo ip route del 10.0.0.0/24  # 删除路由
  • 策略路由

    bash 复制代码
    ip rule add from 192.168.1.100 lookup 100  # 按源 IP 选择路由表
    ip route add default via 10.0.0.1 table 100  # 定义路由表 100 的默认路由
4. 其他功能
  • 网络命名空间

    bash 复制代码
    sudo ip netns add ns1          # 创建命名空间
    sudo ip netns exec ns1 ip a    # 在命名空间中执行命令

二、bridge 命令

用于管理 Linux 网桥,支持 VLAN、STP(生成树协议)等高级功能。

1. 基本操作
  • 创建/删除网桥

    bash 复制代码
    sudo ip link add name br0 type bridge  # 创建网桥 br0
    sudo ip link del br0                   # 删除网桥
  • 启用/禁用网桥

    bash 复制代码
    sudo ip link set br0 up
    sudo ip link set br0 down
2. 接口管理
  • 添加接口到网桥

    bash 复制代码
    sudo ip link set eth0 master br0  # 将物理接口 eth0 加入网桥
    sudo ip link set vlan10 master br0  # 将 VLAN 接口加入网桥
  • 配置 STP

    bash 复制代码
    sudo ip link set br0 type bridge stp_state 1  # 启用 STP(默认关闭)
3. VLAN 支持
  • 创建 VLAN 接口

    bash 复制代码
    sudo ip link add link eth0 name eth0.100 type vlan id 100
    sudo ip link set eth0.100 master br0  # 将 VLAN 接口加入网桥
4. 监控与过滤
  • 查看 MAC 地址表

    bash 复制代码
    bridge fdb show br0  # 查看网桥的 MAC 转发表

三、ss 命令

ss(Socket Statistics)是 netstat 的替代品,提供更高效的套接字统计信息。

1. 基本用法
  • 查看所有 TCP 连接

    bash 复制代码
    ss -t    # 列出所有 TCP 连接
    ss -tn   # 不解析主机名,仅显示 IP 和端口
  • 查看监听端口

    bash 复制代码
    ss -ltnp  # 列出所有监听的 TCP 端口及关联进程
2. 过滤与状态分析
  • 按状态筛选

    bash 复制代码
    ss -t state established  # 查看已建立的 TCP 连接
    ss -t state time-wait    # 查看 TIME_WAIT 状态的连接
  • 显示计时器信息

    bash 复制代码
    ss -t -o state established  # 显示 TCP 连接的计时器细节
3. 高级功能
  • 实时监控

    bash 复制代码
    watch -n 1 'ss -ant'  # 每秒刷新 TCP 连接状态

四、tc 命令

tc(Traffic Control)用于流量整形、限速和优先级管理,支持分层队列(HTB、SFQ 等)。

1. 队列规则(Qdisc)
  • HTB(分层令牌桶)

    bash 复制代码
    tc qdisc add dev eth0 root handle 1: htb default 30  # 根队列
    tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit  # 主类
    tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit  # 子类
  • TBF(令牌桶过滤器)

    bash 复制代码
    tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms  # 限速 10Mbps
2. 过滤器(Filter)
  • 基于 IP 的流量分类

    bash 复制代码
    tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.1.0/24 flowid 1:10

五、rtacct 命令

用于监控网络接口的统计信息,如流量计数、错误包等。

1. 基本统计
  • 查看所有接口统计

    bash 复制代码
    rtacct  # 显示所有接口的 SNMP 计数器
  • 更新历史数据

    bash 复制代码
    rtacct -n  # 更新统计历史
    rtacct -r  # 重置统计
2. 应用场景
  • 故障排查 :通过 rtacct 分析接口丢包率、吞吐量等。
  • 性能监控:结合脚本定期记录流量数据。

总结

  • ip:网络配置的核心工具,覆盖接口、路由、策略路由等。
  • bridge:管理二层网络,支持 VLAN 和 STP。
  • ss :高效替代 netstat,适合实时监控连接状态。
  • tc:实现复杂流量控制,需结合 Qdisc 和 Filter。
  • rtacct:基础网络统计工具,适用于简单监控。

参考资料

  • ip 命令详解
  • bridge 配置
  • ss 的高级用法
  • tc 的流量控制原理
  • rtacct 的统计功能






iproute2 是 Linux 系统上最强大的网络配置工具套件 ,它取代了传统的 net-tools(如 ifconfig、route、arp 等),提供更现代、更全面的网络管理功能。以下是其包含的核心命令及其功能详解:


📦 iproute2 主要命令及功能概览

命令 核心功能 替代的传统命令
ip 全能网络配置工具 ifconfig, route, arp, iptunnel
ss 套接字连接统计与分析 netstat
bridge 高级网桥管理 brctl
tc 流量控制 (QoS) 无直接替代
rtacct 路由流量统计 无直接替代
devlink 设备硬件参数管理 ethtool 部分功能
nstat 网络统计信息查看 netstat -s
lnstat 内核网络统计监控 无直接替代
rdma RDMA (远程直接内存访问) 设备管理

🔧 核心命令深度解析

1. ip 命令 - 网络配置瑞士军刀

功能模块
ip link 接口管理 address IP地址 route 路由表 neighbor ARP/NDISC rule 策略路由 tunnel 隧道 maddress 组播 monitor 实时监控 netns 网络命名空间 tcp_metrics TCP参数

典型应用

bash 复制代码
# 创建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100

# 配置VRF
ip link add vrf-red type vrf table 1000
ip link set dev eth0 master vrf-red

# 多路径路由
ip route add default \
    nexthop via 192.168.1.1 weight 1 \
    nexthop via 192.168.2.1 weight 2

2. ss 命令 - 套接字统计分析

核心功能

  • 实时监控 TCP/UDP/UNIX 套接字连接
  • 支持高级过滤(端口、状态、进程等)
  • 显示内核级套接字详细信息

关键选项

bash 复制代码
ss -nto state established '( dport = :443 )'  # 过滤HTTPS连接
ss -tem -K src 192.168.1.0/24                # 显示内存和内核缓冲信息
ss -i -p | grep nginx                        # 关联进程信息

3. bridge 命令 - 高级网桥管理

功能架构
bridge link/port 端口管理 fdb MAC地址表 vlan VLAN配置 mdb 组播数据库 vni VXLAN配置 monitor 事件监控

配置示例

bash 复制代码
# VLAN过滤配置
bridge vlan add dev eth0 vid 100-200
bridge vlan add dev eth1 vid 100 pvid untagged

# 静态MAC地址
bridge fdb add 00:11:22:33:44:55 dev eth0 master static

# 组播配置
bridge mdb add dev br0 port eth0 grp 239.1.1.1 permanent

4. tc 命令 - 流量控制

核心组件

组件 功能 常用类型
qdisc 排队规则 htb, tbf, netem, pfifo
class 流量分类 htb class
filter 流量分类器 u32, flower, matchall
action 流量操作 mirred, police, drop

完整配置示例

bash 复制代码
# 创建HTB队列
tc qdisc add dev eth0 root handle 1: htb default 20

# 添加带宽限制类
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit

# 添加网络延迟模拟
tc qdisc add dev eth0 parent 1:10 handle 10: netem delay 50ms 10ms 25%

# 基于端口的过滤器
tc filter add dev eth0 protocol ip parent 1:0 \
    flower ip_proto tcp dst_port 80 action mirred egress redirect dev ifb0

5. rtacct 命令 - 路由流量统计

功能特点

  • 按路由表分类统计流量
  • 支持IPv4/IPv6双栈
  • 实时监控模式

使用示例

bash 复制代码
rtacct -d 5      # 每5秒刷新统计
rtacct 100       # 查看路由表100的流量
rtacct -i eth0   # 按接口过滤统计

输出解析

复制代码
Route table: main
Destination    Packets    Bytes    Errors    Dead
default        12.3M      1.2G     0         0
192.168.1.0/24 5.7M       780M     0         0

🛠️ 辅助工具

bash 复制代码
devlink dev show                   # 显示设备信息
devlink port set eth0 type eth     # 设置端口类型
devlink resource show pci/0000:03:00.0  # 查看PCI设备资源
7. nstat 命令 - 网络统计摘要
bash 复制代码
nstat -a              # 显示所有计数器
nstat -z; sleep 1; nstat  # 每秒刷新
8. lnstat 命令 - 内核网络统计
bash 复制代码
lnstat -d 2 -c 5      # 每2秒采样,共5次
lnstat -f ipExt       # 过滤特定统计项
9. rdma 命令 - RDMA设备管理
bash 复制代码
rdma dev show         # 显示RDMA设备
rdma res show qp      # 显示队列对资源

📊 功能对比:iproute2 vs net-tools

功能 iproute2 net-tools
接口管理 ip link ifconfig
路由管理 ip route route
ARP表 ip neigh arp
VLAN ip link add type vlan vconfig
隧道 ip tunnel iptunnel
策略路由 ip rule 不支持
网络命名空间 ip netns 不支持
流量控制 tc 不支持
套接字分析 ss netstat

💡 高级特性

  1. 网络命名空间隔离

    bash 复制代码
    ip netns add ns1
    ip -n ns1 link set lo up
  2. VRF (虚拟路由转发)

    bash 复制代码
    ip link add vrf-red type vrf table 1000
    ip link set dev eth0 master vrf-red
  3. XDP (eXpress Data Path)

    bash 复制代码
    ip link set dev eth0 xdp obj xdp_prog.o
  4. TC-BPF 集成

    bash 复制代码
    tc filter add dev eth0 ingress bpf da obj tc_prog.o

🚀 使用建议

  1. 配置持久化

    bash 复制代码
    # Debian/Ubuntu (netplan)
    network:
      bridges:
        br0:
          interfaces: [eth0]
          addresses: [192.168.1.1/24]
  2. 诊断组合技

    bash 复制代码
    ip -d -s link show eth0; tc -s qdisc; ss -ntp
  3. JSON 输出处理

    bash 复制代码
    ip -j addr show | jq '.[] | .ifname, .addr_info[].local'

iproute2 是 Linux 网络管理的工业级工具集,覆盖从基础配置到高级流量工程的所有场景,是网络工程师和系统管理员必须掌握的核心技能。







以下是对 iproute2 中常用命令 ipbridgesstcrtacct(已过时,替换为 lnstat)的详细解析。这些工具是 Linux 中管理网络配置的核心命令集,取代了旧的 net-tools(如 ifconfigroutenetstat 等)。


1. ip 命令

ip 命令用于配置和管理网络接口、路由、隧道等。它整合了传统 ifconfigroutearp 等工具的功能。

主要子命令及功能
  • ip link: 管理网络接口(物理/虚拟)。

    bash 复制代码
    # 查看所有接口
    ip link show
    # 启用/禁用接口
    ip link set dev eth0 up/down
    # 创建虚拟接口(veth)
    ip link add veth0 type veth peer name veth1
  • ip addr: 管理 IP 地址。

    bash 复制代码
    # 查看 IP 地址
    ip addr show
    # 添加/删除 IP 地址
    ip addr add 192.168.1.10/24 dev eth0
    ip addr del 192.168.1.10/24 dev eth0
  • ip route: 管理路由表。

    bash 复制代码
    # 查看路由表
    ip route show
    # 添加默认网关
    ip route add default via 192.168.1.1
    # 添加静态路由
    ip route add 10.0.0.0/24 via 192.168.1.2
  • ip neigh: 管理 ARP/NDISC 缓存。

    bash 复制代码
    # 查看 ARP 缓存
    ip neigh show
    # 删除 ARP 条目
    ip neigh del 192.168.1.2 dev eth0
  • ip netns: 管理网络命名空间(用于容器化/虚拟化)。

    bash 复制代码
    # 创建网络命名空间
    ip netns add ns1
    # 在命名空间中执行命令
    ip netns exec ns1 ip link show

2. bridge 命令

bridge 命令用于管理 Linux 桥接设备(软件实现的虚拟交换机),常用于虚拟化网络或容器网络。

常用子命令
  • bridge link : 查看桥接接口。

    bash 复制代码
    bridge link show
  • bridge fdb : 管理 MAC 地址表。

    bash 复制代码
    # 查看 MAC 表
    bridge fdb show
    # 添加静态 MAC 条目
    bridge fdb add 00:11:22:33:44:55 dev eth0 master br0
  • bridge vlan : 管理 VLAN。

    bash 复制代码
    # 查看接口的 VLAN 配置
    bridge vlan show
    # 添加 VLAN 到接口
    bridge vlan add vid 100 dev eth0
示例:创建桥接网络
bash 复制代码
# 创建桥设备 br0
ip link add name br0 type bridge
# 将 eth0 加入桥接
ip link set dev eth0 master br0
# 启用桥设备
ip link set br0 up

3. ss 命令

ss(Socket Statistics)用于查看网络连接信息,替代传统的 netstat,速度更快、信息更详细。

常用选项
bash 复制代码
# 查看所有 TCP 连接
ss -t -a
# 查看监听端口
ss -lntp
# 查看 UDP 连接
ss -u
# 显示进程信息(需要 root)
ss -tp
# 按状态过滤(如 TIME-WAIT)
ss -o state time-wait
示例
bash 复制代码
ss -s  # 统计所有连接的摘要信息
ss dst 192.168.1.100  # 过滤目标 IP
ss src :80  # 过滤源端口 80

4. tc 命令

tc(Traffic Control)用于流量控制,可实现带宽限制、优先级调度、流量整形等。

核心组件
  • qdisc: 队列规则(排队规则)。
  • class: 流量分类(用于分层调度)。
  • filter: 流量分类规则(根据包内容匹配)。
常见用法
  • 限制接口带宽 (使用 TBF 令牌桶):

    bash 复制代码
    tc qdisc add dev eth0 root tbf rate 1mbit burst 32k latency 400ms
  • 优先级调度 (使用 HTB 分层令牌桶):

    bash 复制代码
    tc qdisc add dev eth0 root handle 1: htb
    tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
    tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit
    tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 80 0xffff flowid 1:10
  • 清除配置

    bash 复制代码
    tc qdisc del dev eth0 root

5. rtacctlnstat

  • rtacct: 已过时,用于查看内核路由表和接口的统计信息(如接收/发送的数据包)。

  • lnstat : 替代 rtacct,提供更强大的网络统计功能。

    bash 复制代码
    lnstat -k  # 查看所有统计键值
    lnstat -c -1 -i 1  # 持续刷新(每秒一次)
    lnstat -f rt_cache  # 过滤特定统计项

总结

  • ip: 网络接口、路由、ARP、命名空间管理。
  • bridge: 虚拟桥接设备和 VLAN 管理。
  • ss: 快速分析网络连接和端口状态。
  • tc: 复杂流量控制(限速、优先级调度)。
  • lnstat/rtacct: 网络统计监控。

这些命令是 Linux 网络运维和故障排查的必备工具,建议结合 man 文档深入使用(如 man tc)。







iproute2笔记250714

iproute2的ip,ss,bridge,tc命令详解,笔记250714

Linux的 iproute2 配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250713

Linux的NetworkManger的nmcli配置网桥(bridge) 笔记250712

Linux的systemd-networkd配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250712

Linux的NetworkManager的nmcli con add type vlan中的: ifname , dev ,vlan.parent, id,vlan.id

Linux的NetworkManager的nmcli con add type vlan中, iframedev 的区别

Linux的NetworkManager的nmcli connection add 笔记250712

Linux的NetworkManager的nmcli配置网络网卡(ethernet),网桥(bridge),绑定(bond),虚拟网络(vlan) 笔记250711

NetworkManager配置网桥(bridge)虚拟网络(vlan) 笔记250711

Netplan 中 bridges、bonds、ethernets、vlans 之间的关系 笔记250711

Linux创建网桥Bridge的方法有哪些? 笔记250710

用Netplan配置网桥bridge笔记250711

Netplan 配置网桥(Bridge)的模板笔记250711