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

113 阅读1小时+

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

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

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


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

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

核心对象操作:
对象功能关键命令
link接口管理ip link set dev eth0 up
addressIP地址管理ip addr add 192.168.1.10/24 dev eth0
route路由表管理ip route add 10.0.0.0/24 via 192.168.1.1
neighborARP/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
高级功能:
# 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
fdbMAC地址表bridge fdb add 00:11:22:33:44:55 dev eth0
vlanVLAN配置bridge vlan add dev eth0 vid 100 pvid untagged
mdb组播管理bridge mdb add dev br0 port eth0 grp 239.1.1.1 permanent
vniVXLAN配置bridge vni add dev vxlan0 vni 1000
monitor事件监控bridge monitor
完整配置示例:
# 创建带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)

关键选项:
选项功能示例
-tTCP套接字ss -t
-uUDP套接字ss -u
-l监听套接字ss -l
-a所有套接字ss -a
-n禁用服务名解析ss -nt
-p显示进程信息ss -tp
-s摘要统计ss -s
-e详细套接字信息ss -te
-m内存使用ss -tm
-iTCP内部信息ss -ti
高级用法:
# 状态过滤
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
完整配置示例:
# 创建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
使用示例:
# 查看所有路由表流量统计
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
替代命令(新系统推荐):
# 使用ip命令查看路由统计
ip -s route show table main
ip -s -6 route show table 100

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

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

# 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)。

# 接口管理
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)。

# 网桥与端口管理
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),速度快、信息全。

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等)。
典型配置示例
# 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 命令:路由统计

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

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

关键总结

命令核心用途替代工具
ipL2/L3层综合配置(接口/IP/路由)ifconfig, route
bridge网桥/VLAN管理brctl
ss套接字连接监控netstat
tcQoS流量控制(整形/调度)无直接替代
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
核心子命令

# 接口管理
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
核心操作

# 创建网桥
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速度更快
常用选项

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/端口等)。

示例场景

# 限速 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
常用命令

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

输出解读

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速度极快,过滤灵活
tcQoS(限速/调度/延迟模拟)无直接替代内核级流量控制,功能强大
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 等)。以下是核心命令的全面解析:

graph TD
    A[iproute2] --> B[ip]
    A --> C[ss]
    A --> D[bridge]
    A --> E[tc]
    A --> F[rtacct]
    B --> G[接口管理]
    B --> H[路由控制]
    C --> I[套接字监控]
    D --> J[网桥管理]
    E --> K[流量控制]
    F --> L[路由统计]

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

1. 接口管理 (ip link)
## 查看所有接口
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)
## 查看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)
## 查看路由表
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)
## 查看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. 高级功能
## 创建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. 基本用法
## 查看所有连接
ss -a

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

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

## 查看监听端口
ss -l
2. 过滤选项
## 按状态过滤
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. 高级功能
## 显示进程信息
ss -t -p

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

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

## 统计摘要
ss -s

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

1. 基本操作
## 查看网桥信息
bridge link show

## 查看FDB表
bridge fdb show

## 查看VLAN配置
bridge vlan show
2. 网桥配置
## 添加静态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管理
## 启用STP
bridge link set dev eth0 cost 100

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

## 查看STP状态
bridge stp show

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

1. 基本组件
## 查看队列规则
tc qdisc show dev eth0

## 查看分类
tc class show dev eth0

## 查看过滤器
tc filter show dev eth0
2. 常见队列规则
## 添加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. 流量整形示例
## 限制总带宽为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. 基本使用
## 查看所有接口流量统计
rtacct

## 按接口查看
rtacct -i eth0

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

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

六、命令组合使用示例

1. 网络诊断脚本
##!/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. 流量监控脚本
##!/bin/bash
INTERVAL=5

while true; do
    clear
    echo "### 实时流量统计 ###"
    rtacct -i eth0
    echo -e "\n### 连接状态 ###"
    ss -t -a -i
    sleep $INTERVAL
done
3. QoS配置脚本
##!/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命令
接口配置ifconfigip link
IP管理ifconfigip address
路由管理routeip route
ARP管理arpip neighbour
连接监控netstatss
网桥管理brctlbridge

八、最佳实践

  1. 彩色输出

    alias ip='ip -c'
    alias ss='ss -c'
    
  2. 批量操作

    # 批量配置脚本
    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. 持久化配置

    # 使用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. 性能监控

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

    # 禁用不必要的协议
    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 addressIP地址管理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
关键技巧:
# 查看所有接口(简洁模式)
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地址表等二层管理

核心功能:
对象功能常用命令
fdbMAC地址表管理bridge fdb add 00:11:22:33:44:55 dev eth0
vlanVLAN配置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
典型配置:
# 创建网桥并启用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,提供深度套接字分析

常用参数:
参数功能示例
-tTCP套接字ss -t -a
-uUDP套接字ss -u
-l监听套接字ss -ltn
-p显示进程信息ss -tp
-s摘要统计ss -s
-iTCP内部信息ss -ti
-m内存使用ss -tm
高级用法:
# 查看所有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网络模拟(延迟、丢包等)
配置示例:
# 创建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:路由统计工具

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

基本用法:
# 查看所有路由表统计
rtacct

# 数值格式输出
rtacct -n

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

# 查看特定子网统计
rtacct 192.168.1.0/24
输出解析:
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 linkss -iip -br link show && ss -i
网桥配置bridge vlanip linkbridge vlan show && ip -d link show
路由诊断ip route getrtacctip route get 8.8.8.8 && rtacct
QoS配置tcip -s linktc qdisc show && ip -s link show
连接分析ss -tinpip neighss -tinp && ip neigh show
隧道监控ip -s tunnelss -uip -s tun show gre0 && ss -u

七、高级集成示例

1. 容器网络QoS
# 创建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
# 策略路由
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. 网络诊断工作流
# 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
# /etc/systemd/network/eth0.network
[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
2. NetworkManager
nmcli con add type ethernet ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1
3. 自定义服务
# /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. 手册页
    man ip
    man tc
    man bridge
    man ss
    man rtacct
    
  2. 官方文档
  3. 诊断工具
    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)
# 查看所有接口
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)
# 添加 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)
# 添加默认路由
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)
# 查看 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)
# 创建 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. 基本操作
# 创建网桥
ip link add br0 type bridge

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

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

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

# 查看 VLAN
bridge vlan show
3. FDB (MAC 地址表) 管理
# 添加静态 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 管理
# 启用 STP
ip link set br0 type bridge stp_state 1

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

# 查看 STP 状态
bridge stp show

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

1. 基本用法
# 查看所有 TCP 连接
ss -t -a

# 查看监听端口
ss -l

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

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

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

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

# 显示进程 cgroup 信息
ss -c

四、tc 命令:流量控制

1. QDisc (队列规则)
# 添加 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 (类)
# 创建 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 (过滤器)
# 基于端口过滤
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. 监控与统计
# 查看 QDisc 统计
tc -s qdisc show dev eth0

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

# 查看 Filter
tc -s filter show dev eth0

五、rtacct 命令:路由统计

基本用法
# 查看所有接口统计
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 的网桥
# 创建网桥
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. 网络诊断工作流
# 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. 减少命令输出处理时间
# 使用 -br 简化输出
ip -br link
ip -br addr
2. 持续监控
# 实时监控连接
watch -n 1 "ss -t -a -p"

# 实时流量统计
tc -s qdisc show dev eth0 | grep -A 2 "Sent"
3. 脚本自动化
#!/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 等效命令优势
ifconfigip addr, ip link更详细的状态信息
routeip route支持多路由表、策略路由
arpip neigh更灵活的邻居管理
netstatss更快的执行速度
brctlbridge支持 VLAN 过滤等高级功能
iptraftc -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 addrIP地址管理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 neighARP/邻居表管理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

核心用法:
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 -sUDP套接字摘要统计

过滤表达式

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 fdbMAC地址表管理bridge fdb add 00:11:22:33:44:55 dev eth0
bridge vlanVLAN配置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

典型配置

# 创建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

典型应用

# 带宽限制 (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%

监控命令

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

现代替代方案:
# 显示所有路由统计
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  # 最后使用时间

历史数据查看

# 安装rtacct工具
apt install iproute2-rtacct

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

监控脚本

watch -n 1 "ip -s route | grep -A1 192.168.1.0/24"

六、命令对比与协作

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

七、最佳实践指南

  1. 现代替代方案

    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. 故障排查流程

    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. 容器网络

    ip netns + veth pair + bridge + tc cgroup
    

八、版本特性

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

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



























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

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


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

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

主要功能模块:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | rule | neigh | maddr | tunnel | ... }
常用子命令详解:
ip link - 网络接口管理
### 查看所有接口
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地址管理
### 查看所有地址
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 - 路由表管理
### 查看路由表
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 - 策略路由
### 查看策略路由规则
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邻居表
### 查看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 网桥(软件交换机)

常用操作:
### 查看网桥信息
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
网桥管理示例:
### 创建网桥
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 的现代工具,性能更好,功能更强

常用选项:
ss [options] [ FILTER ]
选项:
  -t : TCP sockets
  -u : UDP sockets
  -n : 不解析服务名
  -l : 监听中的套接字
  -p : 显示进程信息
  -s : 摘要统计
  -o : 显示计时器信息
  -m : 显示套接字内存使用
  -i : 显示TCP内部信息
实用示例:
### 查看所有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 (过滤器): 将数据包分类到不同的类
常用操作:
### 查看接口的流量控制设置
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

替代用法:
### 查看所有路由表的流量统计
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. 网络诊断流程
### 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. 创建复杂网络拓扑
### 创建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. 流量监控组合
### 实时监控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)
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
### /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)
### /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
  • 启用/禁用接口
    ip link set eth0 up    # 启用eth0
    ip link set eth0 down  # 禁用eth0
    
  • 配置MTU
    ip link set eth0 mtu 9000
    
  • 创建虚拟接口
    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
    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
    ip addr show eth0
    
1.3 路由管理(ip route
  • 添加静态路由
    ip route add 10.0.0.0/8 via 192.168.1.1       # 指定网关
    ip route add default via 192.168.1.1          # 默认路由
    
  • 查看路由表
    ip route show table main      # 主路由表
    ip route get 8.8.8.8          # 查询路径
    
1.4 策略路由(ip rule
  • 基于源IP的路由
    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 网桥基础操作
  • 创建网桥
    ip link add name br0 type bridge    # 创建网桥接口
    ip link set eth0 master br0         # 将eth0加入网桥
    
  • 启用STP
    ip link set br0 type bridge stp_state 1  # 启用生成树协议
    
2.2 VLAN配置
  • 添加VLAN
    bridge vlan add dev eth0 vid 10         # 添加VLAN 10
    bridge vlan add dev eth0 vid 10 pvid    # 设置PVID
    
  • 配置Trunk端口
    bridge vlan add dev eth0 vid 10-20      # 允许VLAN 10-20通过
    
2.3 MAC地址表管理
  • 添加静态MAC条目
    bridge fdb add 00:11:22:33:44:55 dev eth0 master static
    
  • 显示MAC表
    bridge fdb show
    

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

功能概述

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

常用选项
  • 显示所有套接字
    ss -a          # 所有套接字
    ss -t          # 仅TCP
    ss -u          # 仅UDP
    
  • 过滤监听端口
    ss -l          # 监听中的套接字
    ss -tln        # TCP监听(数字格式)
    
  • 关联进程信息
    ss -tp         # 显示TCP进程
    ss -tlnp | grep ':80'  # 查找占用80端口的进程
    

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

功能概述

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

常用场景
4.1 简单限速(TBF)
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms
4.2 优先级调度(HTB)
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用于统计路由性能数据,如字节数、数据包数及错误率。

基本用法
  • 显示统计摘要
    rtacct -s
    
  • 按协议过滤
    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地址、路由表等。

基本语法
ip [OPTIONS] OBJECT { COMMAND | help }
常见对象(OBJECT)
  • link:管理网络接口(如启用/禁用接口、修改 MTU)。
  • addr:管理 IP 地址。
  • route:管理路由表。
  • neigh:管理 ARP 表。
  • rule:管理路由策略。
常用操作
  • 启用/禁用接口
    ip link set eth0 up/down
    
  • 分配 IP 地址
    ip addr add 192.168.1.10/24 dev eth0
    
  • 查看接口信息
    ip addr show
    
  • 添加默认路由
    ip route add default via 192.168.1.1 dev eth0
    
注意事项
  • 配置是临时的,重启后失效。需通过系统配置文件(如 /etc/network/interfaces/etc/sysconfig/network-scripts/)持久化。

2. bridge 命令

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

基本语法
ip link add name <bridge_name> type bridge
常用操作
  1. 创建网桥
    ip link add name br0 type bridge
    
  2. 添加物理接口到网桥
    ip link set eth0 master br0
    ip link set eth1 master br0
    
  3. 启用网桥并分配 IP
    ip link set br0 up
    ip addr add 192.168.1.100/24 dev br0
    
  4. 关闭 STP(生成树协议)
    bridge link set dev br0 stp_state 0
    
持久化配置
  • /etc/network/interfaces(Debian/Ubuntu)中添加:
    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 更高效。

基本语法
ss [OPTIONS]
常用操作
  • 查看所有 TCP 连接
    ss -t -a
    
  • 查看监听端口
    ss -lntup
    
  • 解析主机名和端口
    ss -r -t -a
    
  • 统计连接状态
    ss -s
    
优势
  • 使用 tcp_diag 内核模块,性能优于 netstat
  • 支持过滤条件(如 -f 指定协议族)。

4. tc 命令

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

基本语法
tc [OPTIONS] qdisc [ADD|CHANGE|DELETE] ... 
tc class [ADD|CHANGE|DELETE] ...
tc filter [ADD|CHANGE|DELETE] ...
常见场景
  1. 带宽限制(HTB)
    # 添加根队列(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)
    tc qdisc add dev eth0 root netem delay 100ms
    
清除规则
tc qdisc del dev eth0 root

5. rtacct 命令

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

基本语法
rtacct [OPTIONS]
常见操作
  1. 启用流量统计
    rtacct -i eth0 -o /var/log/traffic.log
    
  2. 查看统计结果
    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 场景
建 VLANip link add link ens33 name ens33.100 type vlan id 100无需 vconfig
建 Bridgeip link add br0 type bridge下一步把端口塞进去
建 VETH 对ip link add veth0 type veth peer name veth1容器/Namespace 必用
建 netnsip netns add ns1网络隔离沙箱
看 ARPip 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
设置 STPip link set br0 type bridge stp_state 1

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

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

场景命令示例备注
全表ss -a监听+已建
只看 TCPss -t / -tn(数字格式)
监听端口+进程ss -tulnpnetstat -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 Mbittc 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 只是按路由表维度给出包/字节计数,通常结合监控脚本:

# 查看主表计数
rtacct -s
# 只显示 table 100
rtacct -t 100

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

老命令新命令
ifconfigip addr / ip link
route -nip route
arp -aip neigh
netstat -tulnpss -tulnp
brctl showbridge link
vconfig addip link add … type vlan

7. 必备安装

Debian/Ubuntu

apt-get install iproute2

RHEL/CentOS

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地址、路由表、邻居表等。
常用子命令

# 查看所有网络接口
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 网桥(软件交换机),用于容器、虚拟机网络。
典型操作

# 创建网桥
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 连接、套接字状态。
常用参数

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

# 添加 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 命令(路由统计)

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

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

输出示例:

Destination    Bytes   Pkts   Failed  
192.168.1.0    1.2GB   980K   0

关键对比表

命令替代传统工具核心用途
ipifconfig, route接口/IP/路由管理
bridgebrctl虚拟交换机配置
ssnetstat连接监控
tciptables (限速)流量整形/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),支持网络接口、路由、策略路由等管理。

1. 网络接口管理(link 对象)
  • 查看接口状态

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

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

  • 启用/禁用接口

    sudo ip link set eth0 up    # 启用
    sudo ip link set eth0 down  # 禁用
    
  • 修改接口属性

    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 地址

    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 地址

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

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

    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  # 删除路由
    
  • 策略路由

    ip rule add from 192.168.1.100 lookup 100  # 按源 IP 选择路由表
    ip route add default via 10.0.0.1 table 100  # 定义路由表 100 的默认路由
    
4. 其他功能
  • 网络命名空间
    sudo ip netns add ns1          # 创建命名空间
    sudo ip netns exec ns1 ip a    # 在命名空间中执行命令
    

二、bridge 命令

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

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

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

    sudo ip link set br0 up
    sudo ip link set br0 down
    
2. 接口管理
  • 添加接口到网桥

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

    sudo ip link set br0 type bridge stp_state 1  # 启用 STP(默认关闭)
    
3. VLAN 支持
  • 创建 VLAN 接口
    sudo ip link add link eth0 name eth0.100 type vlan id 100
    sudo ip link set eth0.100 master br0  # 将 VLAN 接口加入网桥
    
4. 监控与过滤
  • 查看 MAC 地址表
    bridge fdb show br0  # 查看网桥的 MAC 转发表
    

三、ss 命令

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

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

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

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

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

    ss -t -o state established  # 显示 TCP 连接的计时器细节
    
3. 高级功能
  • 实时监控
    watch -n 1 'ss -ant'  # 每秒刷新 TCP 连接状态
    

四、tc 命令

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

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

    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(令牌桶过滤器)

    tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms  # 限速 10Mbps
    
2. 过滤器(Filter)
  • 基于 IP 的流量分类
    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. 基本统计
  • 查看所有接口统计

    rtacct  # 显示所有接口的 SNMP 计数器
    
  • 更新历史数据

    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内核网络统计监控无直接替代
rdmaRDMA (远程直接内存访问) 设备管理

🔧 核心命令深度解析

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

功能模块

graph LR
    ip-->link[link 接口管理]
    ip-->addr[address IP地址]
    ip-->route[route 路由表]
    ip-->neigh[neighbor ARP/NDISC]
    ip-->rule[rule 策略路由]
    ip-->tunnel[tunnel 隧道]
    ip-->maddr[maddress 组播]
    ip-->monitor[monitor 实时监控]
    ip-->netns[netns 网络命名空间]
    ip-->tcp_metrics[tcp_metrics TCP参数]

典型应用

# 创建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 套接字连接
  • 支持高级过滤(端口、状态、进程等)
  • 显示内核级套接字详细信息

关键选项

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

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

功能架构

graph TD
    bridge-->link[link/port 端口管理]
    bridge-->fdb[fdb MAC地址表]
    bridge-->vlan[vlan VLAN配置]
    bridge-->mdb[mdb 组播数据库]
    bridge-->vni[vni VXLAN配置]
    bridge-->monitor[monitor 事件监控]

配置示例

# 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

完整配置示例

# 创建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双栈
  • 实时监控模式

使用示例

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

🛠️ 辅助工具

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

📊 功能对比:iproute2 vs net-tools

功能iproute2net-tools
接口管理ip linkifconfig
路由管理ip routeroute
ARP表ip neigharp
VLANip link add type vlanvconfig
隧道ip tunneliptunnel
策略路由ip rule不支持
网络命名空间ip netns不支持
流量控制tc不支持
套接字分析ssnetstat

💡 高级特性

  1. 网络命名空间隔离

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

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

    ip link set dev eth0 xdp obj xdp_prog.o
    
  4. TC-BPF 集成

    tc filter add dev eth0 ingress bpf da obj tc_prog.o
    

🚀 使用建议

  1. 配置持久化

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

    ip -d -s link show eth0; tc -s qdisc; ss -ntp
    
  3. JSON 输出处理

    ip -j addr show | jq '.[] | .ifname, .addr_info[].local'
    

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



























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


1. ip 命令

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

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

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

    # 查看 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: 管理路由表。

    # 查看路由表
    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 缓存。

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

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

2. bridge 命令

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

常用子命令
  • bridge link: 查看桥接接口。
    bridge link show
    
  • bridge fdb: 管理 MAC 地址表。
    # 查看 MAC 表
    bridge fdb show
    # 添加静态 MAC 条目
    bridge fdb add 00:11:22:33:44:55 dev eth0 master br0
    
  • bridge vlan: 管理 VLAN。
    # 查看接口的 VLAN 配置
    bridge vlan show
    # 添加 VLAN 到接口
    bridge vlan add vid 100 dev eth0
    
示例:创建桥接网络
# 创建桥设备 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,速度更快、信息更详细。

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

4. tc 命令

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

核心组件
  • qdisc: 队列规则(排队规则)。
  • class: 流量分类(用于分层调度)。
  • filter: 流量分类规则(根据包内容匹配)。
常见用法
  • 限制接口带宽(使用 TBF 令牌桶):
    tc qdisc add dev eth0 root tbf rate 1mbit burst 32k 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 50mbit
    tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 80 0xffff flowid 1:10
    
  • 清除配置
    tc qdisc del dev eth0 root
    

5. rtacctlnstat

  • rtacct: 已过时,用于查看内核路由表和接口的统计信息(如接收/发送的数据包)。
  • lnstat: 替代 rtacct,提供更强大的网络统计功能。
    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