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 |
高级功能:
# 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 |
完整配置示例:
# 创建带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 |
高级用法:
# 状态过滤
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 |
💡 专业提示:
- 使用
-d参数获取详细技术信息:ip -d link show- 使用
-s参数查看统计信息:tc -s qdisc show- 使用
-j生成JSON输出:ip -j addr show | jq- 组合命令进行高级诊断:
ss -ntp | grep ESTAB | awk '{print $6}' | sort | uniq -c
这五个命令构成了Linux网络管理的核心工具集,掌握它们可以应对从基础配置到高级调优的各种网络场景。
iproute2 工具集中 ip、bridge、ss、tc 和 rtacct 命令的详细解析,涵盖核心功能、语法及典型应用场景:
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
关键总结
| 命令 | 核心用途 | 替代工具 |
|---|---|---|
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 ip、man tc、man tc-htb、man ss。
复杂tc配置建议使用抽象工具(如wondershaper或traffic control脚本库)。
以下是对 iproute2 套件中 ip、bridge、ss、tc 和 rtacct 命令的详细解析,涵盖其核心功能、常用场景及示例:
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 | 速度极快,过滤灵活 |
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 等)。以下是核心命令的全面解析:
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命令 |
|---|---|---|
| 接口配置 | ifconfig | ip link |
| IP管理 | ifconfig | ip address |
| 路由管理 | route | ip route |
| ARP管理 | arp | ip neighbour |
| 连接监控 | netstat | ss |
| 网桥管理 | brctl | bridge |
八、最佳实践
-
彩色输出:
alias ip='ip -c' alias ss='ss -c' -
批量操作:
# 批量配置脚本 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 -
持久化配置:
# 使用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 -
性能监控:
# 实时监控网络统计 watch -n 1 "ip -s link; echo; ss -s" -
安全增强:
# 禁用不必要的协议 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 |
关键技巧:
# 查看所有接口(简洁模式)
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 |
典型配置:
# 创建网桥并启用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 |
高级用法:
# 查看所有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 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
# 创建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
九、学习资源
- 手册页:
man ip man tc man bridge man ss man rtacct - 官方文档:
- 诊断工具:
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 等效命令 | 优势 |
|---|---|---|
ifconfig | ip addr, ip link | 更详细的状态信息 |
route | ip route | 支持多路由表、策略路由 |
arp | ip neigh | 更灵活的邻居管理 |
netstat | ss | 更快的执行速度 |
brctl | bridge | 支持 VLAN 过滤等高级功能 |
iptraf | tc -s, rtacct | 内核级统计更精确 |
提示:在生产环境中,建议:
- 使用
-c参数获得彩色输出提高可读性- 复杂网络配置先使用临时命令测试
- 持久化配置写入
/etc/network/interfaces或 netplan 文件- 使用
nohup或tmux执行长时间监控任务
掌握这些 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
核心用法:
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套接字摘要统计 |
过滤表达式:
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 |
典型配置:
# 创建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 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 |
七、最佳实践指南
-
现代替代方案:
ip route 代替 route ss 代替 netstat bridge 代替 brctl ip -s route 代替 rtacct -
持久化配置:
- systemd-networkd:
.network文件 - NetworkManager:
nmcli - Debian:
/etc/network/interfaces - RHEL:
/etc/sysconfig/network-scripts/
- systemd-networkd:
-
故障排查流程:
ip link show → ip addr show → ip route show → ss -tunap → tc -s qdisc -
性能敏感场景:
- 使用
ss而非netstat - 避免复杂
tc u32过滤器 - 启用硬件卸载:
ethtool -K eth0 tx-checksumming on
- 使用
-
容器网络:
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 网络管理的核心工具集,取代了传统的 ifconfig、route、arp 等命令。以下是主要命令的详细解析:
🔧 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)。
- 排队规则(QDisc - Queueing Discipline): 附着在网络接口上,控制数据包的排队和调度算法(如
- 通用语法:
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 route 与 rtacct, iptables/nftables 与 tc filter fw, ip link 与 bridge vlan)对于构建复杂网络环境至关重要。
iproute2工具集详解:ip、bridge、ss、tc、rtacct命令指南
1. ip命令:网络接口与路由管理
功能概述
ip是iproute2的核心命令,替代传统ifconfig和route,用于管理网络接口、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 工具集中 ip、bridge、ss、tc、rtacct 命令的详解,结合实际场景和用法进行说明:
1. ip 命令
ip 是 iproute2 的核心工具,用于管理网络接口、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
常用操作
- 创建网桥:
ip link add name br0 type bridge - 添加物理接口到网桥:
ip link set eth0 master br0 ip link set eth1 master br0 - 启用网桥并分配 IP:
ip link set br0 up ip addr add 192.168.1.100/24 dev br0 - 关闭 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] ...
常见场景
- 带宽限制(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 - 延迟模拟(netem):
tc qdisc add dev eth0 root netem delay 100ms
清除规则
tc qdisc del dev eth0 root
5. rtacct 命令
rtacct(Real-Time Accounting)用于实时统计网络流量数据(如带宽使用量)。
基本语法
rtacct [OPTIONS]
常见操作
- 启用流量统计:
rtacct -i eth0 -o /var/log/traffic.log - 查看统计结果:
cat /var/log/traffic.log
用途
- 监控特定接口的流量(如区分入站/出站流量)。
- 结合脚本或工具(如
vnstat)生成流量报表。
总结对比
| 命令 | 功能 | 典型用例 | 注意事项 |
|---|---|---|---|
ip | 网络接口/路由/IP管理 | 启用接口、分配 IP、添加路由 | 配置临时,需持久化 |
bridge | 创建和管理网桥 | 虚拟化、多网卡聚合 | 需加载 bridge-utils 模块 |
ss | 套接字状态查询 | 替代 netstat,快速查看连接状态 | 依赖 tcp_diag 内核模块 |
tc | 流量控制 | 限速、延迟模拟、QoS 配置 | 配置复杂,需熟悉队列规则 |
rtacct | 实时流量统计 | 监控带宽使用、生成流量报表 | 需配合日志工具使用 |
注意事项
- 权限问题:所有命令需以
root权限运行。 - 内核模块:部分功能需加载内核模块(如
8021q用于 VLAN,bridge用于网桥)。 - 持久化配置:
iproute2的配置重启后失效,需通过系统网络配置文件或systemd服务持久化。
通过合理组合这些工具,可以灵活管理 Linux 系统的网络配置和流量控制需求。
iproute2 是 Linux 系统中一套功能强大的网络管理工具集,替代了传统的 ifconfig、brctl、netstat 等工具,提供更细粒度的网络配置与监控能力。以下详解其中核心命令 ip、bridge、ss、tc、rtacct 的功能、常用操作及示例。
一、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 过滤)。
常用操作
-
模拟网络延迟/丢包(使用
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。
- 添加 100ms 延迟:
-
限制带宽(使用
tbf模块,Token Bucket Filter):- 限制 eth0 速率为 1Mbps,突发流量 10KB,延迟 50ms:
tc qdisc add dev eth0 root tbf rate 1mbit burst 10k latency 50ms。
- 限制 eth0 速率为 1Mbps,突发流量 10KB,延迟 50ms:
-
基于端口分类(如限制 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。
- 创建根 qdisc:
五、rtacct 命令:路由统计工具
rtacct 用于统计通过不同路由的数据包数量和字节数,帮助分析流量走向(如哪些路由承载了更多流量)。其数据基于内核路由缓存,需内核支持 CONFIG_IP_ROUTE_ACCT 选项。
常用操作
rtacct show:显示所有路由的统计信息(包括路由目标、数据包数、字节数)。rtacct reset:重置所有路由的统计计数器。
总结
iproute2 工具集覆盖了 Linux 网络从配置(ip、bridge)、监控(ss、rtacct)到流量控制(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 只是按路由表维度给出包/字节计数,通常结合监控脚本:
# 查看主表计数
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
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
关键对比表
| 命令 | 替代传统工具 | 核心用途 |
|---|---|---|
ip | ifconfig, route | 接口/IP/路由管理 |
bridge | brctl | 虚拟交换机配置 |
ss | netstat | 连接监控 |
tc | iptables (限速) | 流量整形/QoS |
rtacct | - | 路由流量统计 |
💡 最佳实践:
- 调试容器网络时,组合使用
ip netns和bridge命令- 使用
ss替代netstat诊断端口占用问题tc的htb算法适合企业级带宽保障场景
问题延伸
- 如何用
tc实现网络延迟模拟(如 100ms 延迟)? - 在 Kubernetes 中,
iproute2如何被 CNI 插件调用? - 如何通过
ss命令检测 TCP 半连接攻击?
引用说明:iproute2 通过 netlink 与内核交互,支持现代网络功能如 cgroup 集成、SR-IOV 等,其命令结构设计优于传统工具。
以下是 iproute2 工具集中 ip、bridge、ss、tc、rtacct 命令的详解,结合功能、语法及实际应用场景:
一、ip 命令
ip 是 iproute2 的核心命令,替代传统工具(如 ifconfig、route),支持网络接口、路由、策略路由等管理。
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 | 内核网络统计监控 | 无直接替代 |
rdma | RDMA (远程直接内存访问) 设备管理 | 无 |
🔧 核心命令深度解析
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
| 功能 | 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 |
💡 高级特性
-
网络命名空间隔离:
ip netns add ns1 ip -n ns1 link set lo up -
VRF (虚拟路由转发):
ip link add vrf-red type vrf table 1000 ip link set dev eth0 master vrf-red -
XDP (eXpress Data Path):
ip link set dev eth0 xdp obj xdp_prog.o -
TC-BPF 集成:
tc filter add dev eth0 ingress bpf da obj tc_prog.o
🚀 使用建议
-
配置持久化:
# Debian/Ubuntu (netplan) network: bridges: br0: interfaces: [eth0] addresses: [192.168.1.1/24] -
诊断组合技:
ip -d -s link show eth0; tc -s qdisc; ss -ntp -
JSON 输出处理:
ip -j addr show | jq '.[] | .ifname, .addr_info[].local'
iproute2 是 Linux 网络管理的工业级工具集,覆盖从基础配置到高级流量工程的所有场景,是网络工程师和系统管理员必须掌握的核心技能。
以下是对 iproute2 中常用命令 ip、bridge、ss、tc 和 rtacct(已过时,替换为 lnstat)的详细解析。这些工具是 Linux 中管理网络配置的核心命令集,取代了旧的 net-tools(如 ifconfig、route、netstat 等)。
1. ip 命令
ip 命令用于配置和管理网络接口、路由、隧道等。它整合了传统 ifconfig、route、arp 等工具的功能。
主要子命令及功能:
-
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 showbridge fdb: 管理 MAC 地址表。# 查看 MAC 表 bridge fdb show # 添加静态 MAC 条目 bridge fdb add 00:11:22:33:44:55 dev eth0 master br0bridge 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. rtacct 与 lnstat
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)。