ip 命令是 Linux 系统中用于显示和管理路由、网络设备、策略路由和隧道的强大工具,它已经逐渐取代了老旧的 ifconfig 和 route 命令,成为现代 Linux 系统管理网络事实上的标准。

ip 命令的基本语法
ip 命令的基本结构如下:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OPTIONS: 修改ip命令行为的全局选项。-s, -stats, -statistics: 输出更详细的统计信息。-l, -list: 使用列表格式输出,更适合脚本。-o, -oneline: 将每条信息输出到一行,方便解析。-r, -resolve: 使用主机名而不是 IP 地址。-4: 只显示 IPv4 信息。-6: 只显示 IPv6 信息。
OBJECT: 要操作的网络对象,常见的有:link: 网络接口(网卡、网桥等)。addr: IP 地址。route: 路由表。rule: 路由策略。neigh(或neighbor): ARP/NDP 缓存(邻居表)。maddr: 多播地址。tunnel: IP 隧道。
COMMAND: 针对指定对象要执行的命令。help: 显示指定对象(如ip link help)的可用命令列表。
常用 ip 命令详解
下面我们通过最常用的几个 OBJECT 来了解 ip 命令的具体用法。
ip link - 管理网络接口
ip link 用于查看、启用、禁用和修改网络接口的属性。
-
查看所有网络接口状态
(图片来源网络,侵删)# 显示所有网络接口的详细信息 ip link show # 或者简写 ip link # 使用 -s 获取更详细的统计信息(如接收/发送的字节数、包数) ip -s link show # 使用 -o 以单行格式显示,方便用 awk 等工具处理 ip -o link show
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:1c:23:45:67:89 brd ff:ff:ff:ff:ff:ffUP/DOWN: 接口是否已启用。mtu: 最大传输单元。link/ether: MAC 地址。state UP: 接口处于活动状态。
-
启用或禁用接口
# 启用 eth0 接口 sudo ip link set eth0 up # 禁用 eth0 接口 sudo ip link set eth0 down
-
修改接口名称
# 将 eth0 重命名为 mynet0 sudo ip link set eth0 name mynet0
-
修改 MAC 地址
(图片来源网络,侵删)# 将 eth0 的 MAC 地址改为新的地址 sudo ip link set eth0 address 00:11:22:33:44:55
ip addr - 管理 IP 地址
ip addr 用于在接口上添加、删除和显示 IP 地址。
-
显示所有接口的 IP 地址
# 显示所有接口的 IP 地址信息 ip addr show # 查看特定接口 eth0 的 IP 地址 ip addr show eth0 # 使用 -o 单行显示 ip -o addr show
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:1c:23:45:67:89 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft foreverinet: IPv4 地址。inet6: IPv6 地址。/24: 子网掩码长度。brd: 广播地址。
-
添加 IP 地址
# 为 eth0 添加一个 IPv4 地址 192.168.1.101,子网掩码 24位 sudo ip addr add 192.168.1.101/24 dev eth0 # 为 eth0 添加一个 IPv6 地址 sudo ip addr add 2001:db8::1/64 dev eth0
-
删除 IP 地址
# 从 eth0 上删除指定的 IPv4 地址 sudo ip addr del 192.168.1.101/24 dev eth0
ip route - 管理路由表
ip route 用于查看、添加和删除系统的路由规则,决定数据包应该从哪个接口发往哪里。
-
查看路由表
# 显示完整的路由表 ip route show # 或者简写 ip route
输出示例:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100 192.168.1.1 dev eth0 proto dhcp scope link metric 100default via ...: 默认网关。168.1.0/24 ...: 直连网络,通过eth0接口访问。dev eth0: 出口设备。via 192.168.1.1: 下一跳地址。
-
添加路由
# 添加一个默认网关 (如果路由表里没有 default 的话) sudo ip route add default via 192.168.1.1 # 添加一条静态路由,目标网络 10.10.0.0/24 下一跳是 192.168.1.254 sudo ip route add 10.10.0.0/24 via 192.168.1.254 # 添加一条直连路由,指定从 eth0 接口访问 172.16.0.0/16 sudo ip route add 172.16.0.0/16 dev eth0
-
删除路由
# 删除默认网关 sudo ip route del default # 删除指定的静态路由 sudo ip route del 10.10.0.0/24 via 192.168.1.254
-
临时使路由失效(用于故障排查)
# 将 eth0 接口的路由设为 down,但接口本身还是 UP 状态 sudo ip link set eth0 down # 恢复 sudo ip link set eth0 up
ip neigh - 管理 ARP/NDP 缓存
ip neigh 用于查看和管理 ARP (IPv4) 和 NDP (IPv6) 缓存,即“邻居表”。
-
查看邻居表
ip neigh show
输出示例:
168.1.1 dev eth0 REACHABLE 192.168.1.102 dev eth0 STALEREACHABLE: 节点是可达的。STALE: 条目已过期,但可能仍然有效。DELAY: 正在重新探测节点。PROBE: 正在发送探测包。FAILED: 探测失败。
-
手动添加/删除邻居条目
# 手动添加一个静态 ARP 条目 sudo ip neigh add 192.168.1.200 lladdr 00:aa:bb:cc:dd:ee dev eth0 # 删除一个邻居条目 sudo ip neigh del 192.168.1.200 dev eth0
ip vs. ifconfig 和 route (对比)
| 功能 | ip 命令 (现代) |
ifconfig / route (传统) |
|---|---|---|
| 查看接口 | ip link show |
ifconfig |
| 启用/禁用 | ip link set eth0 up/down |
ifconfig eth0 up/down |
| 添加IP | ip addr add 192.168.1.1/24 dev eth0 |
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 |
| 查看路由 | ip route show |
route -n |
| 添加网关 | ip route add default via 192.168.1.1 |
route add default gw 192.168.1.1 |
为什么推荐使用 ip?
- 功能更强大:
ip提供了ifconfig和route的所有功能,并且增加了策略路由、隧道管理等高级功能。 - 输出更结构化:
-oneline选项的输出非常适合脚本编程,而ifconfig的输出格式比较杂乱。 - 设计更统一:
ip命令采用OBJECT COMMAND的统一语法,更容易学习和记忆。 - 持续发展:
iproute2套件是积极维护的,而net-tools(包含ifconfig)已基本停止开发。
ip 命令是每一位 Linux 系统管理员和网络工程师必须熟练掌握的工具,虽然初学时可能会觉得命令比 ifconfig 长,但一旦理解了 ip [OPTIONS] OBJECT COMMAND 的逻辑,就会发现它非常强大和灵活。
建议: 在日常工作中,有意识地使用 ip 命令替代 ifconfig 和 route,很快它就会成为你的得力助手,如果忘记了某个命令的用法,ip OBJECT help 是最好的老师。ip addr help 会列出所有与地址相关的子命令。
