目录
iproute2
是现代 Linux 系统中替代传统网络工具(如 ifconfig
、route
、arp
)的集成工具集,功能更强大且设计更统一。以下是其核心命令 ip
的详细使用指南:
一、iproute2 核心命令:ip
基本语法:
ip [选项] 对象 {
操作} [参数]
- 对象:
address
(IP地址)、link
(网络接口)、route
(路由表)、neigh
(ARP缓存)等。 - 操作:
show
(查看)、add
(添加)、del
(删除)、set
(设置)等。
二、常用功能详解
1. 管理网络接口(link
对象)
-
查看所有接口状态:
ip link show # 简写 ip l
输出关键字段:
UP/DOWN
:接口启用状态mtu
:最大传输单元LOWER_UP
:物理连接状态
-
启用/禁用接口:
sudo ip link set eth0 up # 启用 sudo ip link set eth0 down # 禁用
-
修改接口属性(如 MTU、MAC 地址):
sudo ip link set eth0 mtu 9000 # 设置 MTU sudo ip link set eth0 address 00:11:22:33:44:55 # 修改 MAC 地址
2. 管理 IP 地址(address
对象)
-
查看接口 IP 地址:
ip address show # 查看所有接口 ip addr show eth0 # 指定接口 # 简写 ip a
-
添加/删除 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 地址:
sudo ip addr flush dev eth0
3. 管理路由表(route
对象)
-
查看路由表:
ip route show # 简写 ip r
-
添加/删除路由:
# 添加默认网关 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
4. 管理 ARP 和邻居缓存(neigh
对象)
-
查看 ARP 缓存:
ip neigh show
-
添加/删除 ARP 条目:
sudo ip neigh add 192.168.1.2 lladdr 00:11:22:33:44:55 dev eth0 sudo ip neigh del 192.168.1.2 dev eth0
5. 管理网络命名空间(netns
对象)
-
创建/删除网络命名空间:
sudo ip netns add ns1 # 创建 sudo ip netns delete ns1 # 删除
-
在命名空间中执行命令:
sudo ip netns exec ns1 ip a # 查看 ns1 中的网络接口
三、其他实用工具
iproute2
工具集还包含以下命令:
ss
:替代netstat
,查看套接字统计。ss -tunlp # 查看所有 TCP/UDP 监听端口
tc
:流量控制(限速、优先级管理)。tc qdisc add dev eth0 root netem delay 100ms # 模拟 100ms 网络延迟
bridge
:管理网桥。bridge link show # 查看网桥接口
四、与 ifconfig
的对比
操作 | ifconfig | iproute2 |
---|---|---|
查看接口状态 | ifconfig |
ip link show |
设置 IP 地址 | ifconfig eth0 192.168.1.100 |
ip addr add 192.168.1.100/24 dev eth0 |
查看路由表 | route -n |
ip route show |
修改 MAC 地址 | ifconfig eth0 hw ether... |
ip link set eth0 address... |
五、配置持久化
ip
命令的修改是临时的,需通过以下方式持久化:
- Debian/Ubuntu:编辑
/etc/network/interfaces
。 - RHEL/CentOS:编辑
/etc/sysconfig/network-scripts/ifcfg-eth0
。 - 通用方法:使用
NetworkManager
或netplan
(Ubuntu 18.04+)。
六、常见问题
1. 如何安装 iproute2?
大多数 Linux 系统已预装。若缺失:
sudo apt install iproute2 # Debian/Ubuntu
sudo yum install iproute # RHEL/CentOS
2. 接口名称变化(如 eth0 → enp0s3)?
这是由 systemd
的 Predictable Network Interface Names 导致,可通过以下方式禁用:
- 编辑
/etc/default/grub
,添加net.ifnames=0
。 - 运行
sudo update-grub
并重启。
七、总结
- 优势:功能全面、语法统一、支持现代网络特性(如 VRF、网络命名空间)。
- 学习建议:
- 掌握常用对象:
link
、addr
、route
。 - 使用
man ip
或ip help
查看详细文档。 - 逐步替换旧脚本中的
ifconfig
/route
命令。
- 掌握常用对象:
掌握 iproute2
是 Linux 网络管理的必备技能,尤其适用于容器化、虚拟化等复杂网络环境。