🧭 说明
ip命令是现代 Linux 系统中功能强大的网络配置工具,它取代了传统的ifconfig、route等命令,提供了更统一和强大的网络管理功能。
下表汇总了ip命令的核心操作对象和主要功能。
| 操作对象 | 核心功能简介 | 替代的传统命令 |
|---|---|---|
link | 管理网络设备(网卡)本身的状态,如启用/禁用、修改MTU、MAC地址等。 | ifconfig,ifup,ifdown |
address/addr | 管理网络设备上的IP地址(IPv4/IPv6),包括添加、删除、查看地址。 | ifconfig |
route | 管理内核的路由表,包括添加、删除静态路由和设置默认网关。 | route |
neighbor/neigh | 管理ARP缓存(邻居表),查看或修改IP地址与MAC地址的映射关系。 | arp |
netns | 管理网络命名空间,实现网络环境的隔离。 | 无 |
🖥️ 管理网络接口
使用ip link可以操作物理和虚拟网络设备。
- 查看接口状态:使用
ip link show或简写ip l查看所有网络接口的详细信息。更简洁的显示可以使用ip -br link show,只列出名称、状态和MAC地址等关键信息。 - 启用/禁用接口:在修改配置前,通常需要先关闭接口。
# 禁用接口sudoiplinkseteth0 down# 启用接口sudoiplinkseteth0 up - 修改接口属性:可以更改网卡的MAC地址(需先禁用网卡)或MTU(最大传输单元)。
# 修改MAC地址sudoiplinkseteth0 address 00:11:22:33:44:55# 设置MTU值sudoiplinkseteth0 mtu1500
🌐 配置IP地址
使用ip address为网络接口管理IP地址。
- 查看IP地址:使用
ip address show或ip a查看所有接口的IP地址信息。同样,可以使用ip -br addr获得简洁输出。 - 添加/删除IP地址:
# 添加IP地址sudoipaddradd192.168.1.10/24 dev eth0# 删除IP地址sudoipaddr del192.168.1.10/24 dev eth0 - 清空所有IP地址:使用
ip addr flush dev eth0可以一次性移除指定设备上的所有IP地址,请谨慎使用。
🧭 管理路由表
使用ip route控制数据包的转发路径。
- 查看路由表:使用
ip route show或ip r查看当前系统的IPv4路由表。使用ip -6 route查看IPv6路由表。 - 添加/删除路由:
# 添加静态路由,使访问 10.0.0.0/8 网段的流量通过 192.168.1.1 转发sudoiprouteadd10.0.0.0/8 via192.168.1.1 dev eth0# 删除该路由sudoiproute del10.0.0.0/8# 设置默认网关sudoiprouteadddefault via192.168.1.1 dev eth0# 删除默认路由sudoiproute del default
🤖 管理ARP缓存
使用ip neighbor查看和操作邻居表(ARP缓存)。
- 查看ARP缓存:
ip neighbor show显示当前的IP-MAC地址映射及其状态(如REACHABLE、STALE)。 - 手动添加/删除条目:
# 添加静态ARP条目sudoipneighadd192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0# 删除ARP条目sudoipneigh del192.168.1.100 dev eth0
💡 高级功能简介
ip命令还有一些更强大的高级功能,在复杂网络环境中非常有用:
- 网络命名空间:可以创建完全隔离的网络环境,常用于容器技术。
# 创建一个名为myns的网络命名空间ipnetnsaddmyns - 策略路由:基于源IP、目的IP等策略决定路由路径,而不仅仅是目标地址,实现更复杂的流量控制。
🛠️ 实用技巧与示例
这里是一个简单的配置示例,演示如何组合使用上述命令:
# 1. 查看初始状态ip-br addr show eth0ip-brlinkshow eth0# 2. 禁用网卡并配置新IPsudoiplinkseteth0 downsudoipaddradd192.168.10.5/24 dev eth0sudoiplinkseteth0 up# 3. 验证配置ip-br addr show eth0ping-c3192.168.10.1# 测试连通性💎 小结
ip命令是 Linux 网络配置和故障排查的核心工具。刚开始可以重点掌握ip link、ip addr和ip route这几个最常用的子命令来查看和修改基本网络配置。随着需求深入,再逐步了解其更高级的功能。