Linux系统中的ip命令是强大的网络配置工具,它替代了传统的ifconfig、route等命令,提供了更全面和灵活的网络管理功能,ip命令属于net-tools软件包,通常预装在大多数Linux发行版中,其核心功能包括网络接口的配置、路由管理、隧道设置、策略路由控制以及网络命名空间操作等,与ifconfig相比,ip命令支持更多现代网络特性,如VLAN、隧道、多路由表等,且输出信息更结构化,便于脚本处理和自动化管理。

ip命令的基本语法与结构
ip命令的基本语法格式为ip [OPTIONS] OBJECT {COMMAND | help},其中OBJECT表示操作对象,如link(网络接口)、addr(地址管理)、route(路由管理)等;COMMAND表示具体操作,如add、del、show等;OPTIONS则用于控制命令的输出格式或行为。ip link show用于显示所有网络接口状态,ip addr add 192.168.1.100/24 dev eth0用于为eth0接口添加IP地址。
网络接口管理(ip link)
网络接口是Linux网络通信的基础,ip link子命令用于查看、启用、禁用或修改接口属性。
ip link show:列出所有网络接口及其状态(如UP/DOWN、MAC地址、MTU等)。ip link set eth0 up:启用eth0接口。ip link set eth0 address 00:11:22:33:44:55:修改接口的MAC地址。ip link add link eth0 name eth0.10 type vlan id 10:在eth0上创建VLAN子接口。
接口的MTU(最大传输单元)、队列调度策略等参数也可通过ip link调整,例如ip link set eth0 mtu 1500修改MTU值。
IP地址管理(ip addr)
ip addr子命令负责为接口配置、删除或显示IP地址,支持IPv4和IPv6,并支持多地址配置,常用操作包括:

ip addr show eth0:显示eth0接口的IP地址、子网掩码、广播地址等信息。ip addr add 192.168.1.100/24 broadcast 192.168.1.255 dev eth0:为eth0添加IPv4地址,并指定广播地址。ip addr add 2001:db8::1/64 dev eth0:为eth0添加IPv6地址。ip addr del 192.168.1.100/24 dev eth0:删除eth0上的指定IPv4地址。
ip addr支持地址标签(label)和临时地址(temporary)配置,例如ip addr add 192.168.1.101/24 dev eth0 label eth0:1为接口添加别名地址。
路由管理(ip route)
路由表决定了数据包的转发路径,ip route子命令用于查看、添加、删除或修改路由条目,核心操作包括:
ip route show:显示当前路由表,包括目标网络、网关、接口、跃点数等。ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0:添加一条静态路由,目标网络192.168.2.0/24通过网关192.168.1.1从eth0接口转发。ip route add default via 192.168.1.1:设置默认网关。ip route del 192.168.2.0/24:删除指定路由条目。
路由条目支持优先级(metric)、协议类型(proto)和路由表(table)等属性,例如ip route add 10.0.0.0/24 via 192.168.1.1 table 100将路由添加到自定义路由表100中。
邻居与ARP管理(ip neigh)
邻居表(ARP表)记录了IP地址与MAC地址的映射关系,ip neigh子命令用于查看、添加或删除邻居条目:
ip neigh show:显示当前邻居表,包括IP、MAC、接口和状态(REACHABLE、STALE等)。ip neigh add 192.168.1.50 lladdr 00:1a:2b:3c:4d:5e dev eth0:手动添加静态ARP条目。ip neigh del 192.168.1.50 dev eth0:删除指定邻居条目。
网络命名空间与隧道
ip命令支持网络命名空间(netns)操作,用于实现网络隔离。
ip netns add ns1:创建命名空间ns1。ip link set eth0 netns ns1:将eth0接口移动到ns1。ip netns exec ns1 ip addr show:在ns1命名空间中执行ip命令。
ip命令还可配置隧道(如sit、gre、ipip等),例如ip tunnel add tun0 mode gre remote 192.168.1.2 local 192.168.1.1创建GRE隧道。
策略路由与规则
策略路由(policy routing)允许根据数据包的源地址、协议等属性选择不同的路由表,ip rule子命令用于管理路由规则:
ip rule show:显示当前路由规则,优先级(priority)和选择条件(如from、to、iif等)。ip rule add from 192.168.1.0/24 table 100:添加规则,匹配源地址192.168.1.0/24的数据包使用路由表100。ip rule del pref 32767:删除优先级为32767的规则。
ip命令与其他工具的对比
与传统的ifconfig和route命令相比,ip命令的优势在于:
- 功能全面:整合了接口、地址、路由、ARP等功能,无需切换工具。
- 现代特性支持:支持VLAN、隧道、多路由表、网络命名空间等高级功能。
- 结构化输出:默认输出更易解析,适合脚本自动化。
- 性能优化:在处理大量网络配置时效率更高。
以下为ifconfig与ip addr命令输出对比示例:
| 功能 | ifconfig命令示例 | ip addr命令示例 |
|---|---|---|
| 显示接口地址 | ifconfig eth0 |
ip addr show eth0 |
| 添加IP地址 | ifconfig eth0 192.168.1.100 |
ip addr add 192.168.1.100/24 dev eth0 |
| 启用接口 | ifconfig eth0 up |
ip link set eth0 up |
常见使用场景
- 服务器网络初始化:通过脚本批量配置多个接口的IP地址和路由。
- 容器网络配置:使用网络命名空间和VLAN为容器提供隔离的网络环境。
- 故障排查:通过
ip link检查接口状态,ip route验证路由表,ip neigh排查ARP问题。 - VPN与隧道:配置GRE或IP-in-IP隧道实现跨网络通信。
相关问答FAQs
Q1: 如何使用ip命令永久修改网络配置?
A1: ip命令本身是临时生效的,永久修改需结合配置文件,在Debian/Ubuntu系统中,修改/etc/network/interfaces文件添加iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1;在RHEL/CentOS系统中,修改/etc/sysconfig/network-scripts/ifcfg-eth0文件并重启网络服务(systemctl restart network)。
Q2: ip命令和ifconfig命令在性能上有什么差异?
A2: ip命令在性能上通常优于ifconfig,尤其是在处理大量网络接口或复杂路由规则时,ip命令采用更高效的数据结构(如链表代替数组),且输出信息更精简,减少了内存和CPU的占用,ip命令支持批量操作和脚本化处理,适合大规模网络环境的管理需求。
