ip命令是Linux系统中用于管理网络接口、IP地址、路由表、邻居缓存(ARP/NDP)和策略路由的标准工具,是传统ifconfig、route、arp等命令的现代替代品。ip命令功能强大且输出格式统一,是网络管理员和系统运维人员日常工作的核心工具。
与旧版网络工具相比,ip命令提供了更一致的语法、更丰富的功能和更好的脚本友好性。它支持IPv4和IPv6双栈管理,能够完成从接口配置到复杂策略路由的所有网络管理任务。掌握ip命令是进行Linux网络管理和故障排查的必备技能。
1. 基本语法
| 命令 | 说明 |
|---|
ip [options] object command | |
ip -br a | |
ip -c a | |
ip -4 a | |
ip -6 a | |
ip -s link | |
常用对象(object):
2. 查看接口与地址
| 命令 | 说明 |
|---|
ip link show | |
ip link show dev eth0 | |
ip addr show | |
ip addr show dev eth0 | |
ip -br addr | |
ip -br link | |
ip -4 addr | |
ip -6 addr | |
输出状态说明:
3. 添加和删除IP地址
| 命令 | 说明 |
|---|
sudo ip addr add 192.168.1.50/24 dev eth0 | |
sudo ip addr del 192.168.1.50/24 dev eth0 | |
sudo ip addr add 2001:db8::50/64 dev eth0 | |
sudo ip addr add 192.168.1.50/24 dev eth0 label eth0:0 | |
sudo ip addr flush dev eth0 | |
ip addr show dev eth0 | |
添加辅助IP地址(多IP):
# 在同一接口上添加多个IP地址
sudo ip addr add 192.168.1.10/24 dev eth0
sudo ip addr add 192.168.1.11/24 dev eth0
4. 启用/禁用接口
| 命令 | 说明 |
|---|
sudo ip link set dev eth0 up | |
sudo ip link set dev eth0 down | |
sudo ip link set dev eth0 mtu 9000 | |
sudo ip link set dev eth0 name lan0 | |
sudo ip link set dev eth0 address 00:11:22:33:44:55 | |
ip -br link | |
5. 路由表管理
| 命令 | 说明 |
|---|
ip route show | |
ip -6 route show | |
ip route get 8.8.8.8 | |
sudo ip route add default via 192.168.1.1 | |
sudo ip route del default | |
sudo ip route add 10.10.0.0/16 via 192.168.1.254 dev eth0 | |
sudo ip route del 10.10.0.0/16 | |
ip route show table all | |
路由类型说明:
6. 邻居表管理(ARP/NDP)
| 命令 | 说明 |
|---|
ip neigh show | |
ip neigh show dev eth0 | |
sudo ip neigh flush dev eth0 | |
sudo ip neigh del 192.168.1.10 dev eth0 | |
ip -s neigh | |
ip neigh show nud reachable | |
邻居状态说明:
7. 策略路由
| 命令 | 说明 |
|---|
ip rule show | |
sudo ip rule add from 192.168.10.0/24 table 100 | |
sudo ip route add default via 10.0.0.1 table 100 | |
sudo ip rule del from 192.168.10.0/24 table 100 | |
ip route show table 100 | |
ip route show table all | |
策略路由优先级: 数字越小优先级越高(默认0-32767)
8. 网络命名空间
| 命令 | 说明 |
|---|
ip netns list | |
sudo ip netns add ns1 | |
sudo ip netns exec ns1 ip addr show | |
sudo ip netns exec ns1 bash | |
sudo ip netns del ns1 | |
ip -n ns1 route show | |
sudo ip link set eth0 netns ns1 | |
9. 实用组合模式
| 命令 | 说明 |
|---|
ip -4 -br a | grep UP | |
ip route | grep default | awk '{print $3}' | |
ip -s link show eth0 | grep -A1 "RX bytes" | |
sudo ip addr add 192.168.1.100/24 dev eth0 && ip link set eth0 up | |
ip neigh | grep -v REACHABLE | |
watch -n 1 "ip -s link show eth0" | |
for ns in $(ip netns list); do echo "=== $ns ==="; ip netns exec $ns ip addr show; done | |
10. 常用选项速查
| 选项 | 完整名称 | 说明 |
|---|
-4 | | |
-6 | | |
-br | | |
-c | | |
-s | | |
-d | | |
-f | | |
-o | | |
-j | | |
-p | | |
-n | | |
11. ip vs 旧版命令对照
| ip命令 | 旧版命令 | 说明 |
|---|
ip addr show | ifconfig -a | |
ip link set dev eth0 up | ifconfig eth0 up | |
ip route show | route -n | |
ip neigh show | arp -n | |
ip -s link show | ifconfig -s | |
ip link set dev eth0 mtu 9000 | ifconfig eth0 mtu 9000 | |
ip addr add | ifconfig eth0:0 | |
12. 故障排查
| 问题 | 解决方法 |
|---|
| 接口没有IP地址 | 使用ip addr show dev eth0检查;添加地址用ip addr add |
| 接口处于DOWN状态 | 使用ip link show dev eth0检查;用ip link set dev eth0 up启用 |
| 默认路由错误 | 检查ip route show;删除错误路由,添加正确网关 |
| 无法到达目标 | 使用ip route get DEST_IP查看路由选择;检查网关 |
| ARP缓存过期 | 使用ip neigh flush dev eth0清除;重新触发ARP |
| 策略路由不生效 | 检查ip rule show规则顺序;确认路由表存在 |
| 命名空间中没有网络 | |
| 修改后配置丢失 | ip命令修改的是运行时配置,重启会丢失;需写入配置文件 |
温馨提示: ip命令是ifconfig/route/arp等传统工具的现代替代,建议逐步迁移到ip命令。配置网络时注意:1)ip命令修改的是运行时配置,系统重启后丢失,需写入网络配置文件(如/etc/network/interfaces或NetworkManager);2)添加路由前确保网关可达;3)修改远程连接的接口配置时务必小心,避免把自己锁在系统外;4)使用ip -br addr快速概览接口状态非常高效;5)策略路由需要配置规则和路由表两步,缺一不可。对于容器和虚拟化环境,网络命名空间是隔离网络的利器。