ChatGPT生成(2025年10月26日00:17:30)
修订时间:2025年10月26日18:16:23
🧰 iproute2 工具包详解
📘 一、概述
什么是 iproute2
iproute2 是 Linux 下用于网络配置和管理的一组命令行工具包,是早期 net-tools(如 ifconfig, route, netstat)的现代替代品。
| 功能分类 | 旧工具 (net-tools) |
新工具 (iproute2) |
功能说明 |
|---|---|---|---|
| 网络接口管理 | ifconfig |
ip addr, ip link |
查看/配置网络接口与IP地址 |
| 路由管理 | route |
ip route |
管理路由表,配置网关和转发规则 |
| ARP 表管理 | arp |
ip neigh |
管理邻居表(ARP/NDP) |
| Socket 信息 | netstat |
ss |
显示网络连接、监听端口和统计信息 |
| 流量控制与QoS | tc(同名) |
tc |
流量整形、带宽限制、QoS 策略配置 |
| 网桥管理 | brctl |
bridge |
管理以太网桥接与虚拟交换机 |
| VLAN 管理 | (无专用命令) | ip link add link eth0 name eth0.10 type vlan id 10 |
创建与管理 VLAN 接口 |
| 隧道与虚拟接口 | (无专用命令) | ip tunnel, ip link |
创建 GRE/IPIP/VXLAN 等隧道接口 |
| 驱动级设备管理 | (无对应) | devlink |
管理底层网络驱动与硬件资源 |
| 网络命名空间管理 | (无对应) | ip netns |
管理 Linux 网络命名空间 |
| 规则与策略路由 | (无对应) | ip rule, ip route |
定义多策略路由与优先级规则 |
✅ 总结
-
iproute2是现代 Linux 网络的标准工具集,几乎完全取代了早期的net-tools。 -
常用核心命令包括:
ip:接口、地址、路由、邻居等全能网络命令ss:Socket 状态与统计信息tc:流量控制和 QoS 管理bridge:网桥与虚拟交换管理devlink:驱动级设备控制
-
建议逐步用
iproute2替代旧命令,保证脚本与系统兼容性。
🧩 二、iproute2 包含的主要工具
1️⃣ ip —— 核心工具(接口、地址、路由、邻居)
ip 是最常用的命令,用来管理网络接口、路由、IP 地址、邻居(ARP/NDP)等。
常用子命令分类
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 网络接口 | ip link show |
查看接口 |
| IP 地址 | ip addr add 192.168.1.10/24 dev eth0 |
添加IP |
| 路由表 | ip route show |
查看路由 |
| 邻居表 | ip neigh show |
查看 ARP 表 |
| 状态控制 | ip link set eth0 up |
启动接口 |
常见示例
# 查看所有网卡
ip addr show
# 给 eth0 添加一个IP地址
ip addr add 192.168.1.100/24 dev eth0
# 删除IP
ip addr del 192.168.1.100/24 dev eth0
# 添加静态路由
ip route add 10.0.0.0/8 via 192.168.1.1
# 查看ARP缓存
ip neigh
💡 提示:
ip 命令功能非常丰富,可以统一替代 ifconfig、route、arp 等老旧命令。
2️⃣ ss —— Socket 状态统计(Socket Statistics)
ss 是 netstat 的替代工具,用来查看系统当前的网络连接和监听状态。
常用示例
# 查看所有TCP连接
ss -t
# 查看监听端口
ss -lnt
# 查看UDP连接
ss -u
# 查看哪个进程占用了端口
ss -lntp
# 查看连接统计信息
ss -s
典型输出说明
| 列名 | 含义 |
|---|---|
| State | 连接状态(LISTEN, ESTAB, TIME-WAIT等) |
| Recv-Q / Send-Q | 接收/发送队列长度 |
| Local Address | 本地地址 |
| Peer Address | 远程地址 |
| PID/Program name | 占用该连接的进程 |
💡 用途:
- 调试 TCP 连接
- 分析端口占用
- 网络性能监控
3️⃣ tc —— 流量控制(Traffic Control)
tc 是 Linux 流量控制框架的命令工具,用于:
- 流量整形(限速、优先级)
- 队列管理(QoS)
- 网络模拟(延迟、丢包)
常用示例
# 查看网卡队列状态
tc qdisc show dev eth0
# 限制 eth0 出口速率为 1Mbit/s
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
# 删除流控规则
tc qdisc del dev eth0 root
💡 用途:
- 模拟网络延迟或丢包(用于测试)
- 做带宽限速或优先级管理(QoS)
- 网络性能调优
4️⃣ bridge —— 网桥管理工具
bridge 是 Linux 内核的桥接子系统管理工具,用来配置:
- 网桥(Bridge)
- 端口(Ports)
- FDB 表(转发表)
常用示例
# 查看所有网桥
bridge link show
# 创建网桥 br0
ip link add name br0 type bridge
# 把接口 eth0 加入 br0
ip link set eth0 master br0
# 启动网桥
ip link set br0 up
# 查看网桥转发表
bridge fdb show
💡 用途:
- 虚拟机网络桥接(如 KVM、Docker)
- 软件交换机(类似二层交换机)
- VLAN 管理
5️⃣ devlink —— 网络设备链路管理工具
devlink 是高级网络设备管理工具,主要用于:
- 驱动级参数配置
- 设备固件更新
- 端口与链路属性管理
主要用于高端网卡(如 Mellanox、Intel 网卡)。
常用示例
# 查看设备列表
devlink dev show
# 查看端口信息
devlink port show
# 查看驱动信息
devlink health show
💡 用途:
- 高性能网络设备调试
- 驱动层管理(SR-IOV、DPDK 环境)
⚙️ 三、iproute2 安装与版本查看
大多数 Linux 发行版默认已安装。
# Debian/Ubuntu
sudo apt install iproute2
# CentOS/RHEL
sudo yum install iproute
# 查看版本
ip -V
🔍 四、iproute2 的结构与命令组织逻辑
iproute2 的命令风格遵循统一格式:
ip [对象] [操作] [参数...]
例如:
| 命令 | 含义 |
|---|---|
ip addr show |
查看地址 |
ip link set eth0 up |
启动网卡 |
ip route add ... |
添加路由 |
ip neigh flush all |
清除邻居表 |
这种结构化的语法让命令易于记忆和组合,非常适合脚本自动化。
📈 五、iproute2 在实际中的作用
| 场景 | 工具 | 作用 |
|---|---|---|
| 设置 IP 和路由 | ip | 网络基础配置 |
| 检查连接状态 | ss | 代替 netstat |
| 模拟网络性能 | tc | 延迟/丢包测试 |
| 桥接虚拟机接口 | bridge | 软件交换机 |
| 调试网卡驱动 | devlink | 驱动管理 |
📚 六、推荐参考资料
-
官方文档(英文)
https://man7.org/linux/man-pages/man8/ip.8.html
https://wiki.linuxfoundation.org/networking/iproute2 -
《Linux 高级网络管理与性能调优》
-
命令帮助:
man ip man ss man tc man bridge man devlink
浙公网安备 33010602011771号