在CentOS 7系统中,网络配置是系统管理的基础操作之一,而ip命令作为iproute2包的核心工具,相比传统的ifconfig命令提供了更强大、更灵活的网络管理功能。ip命令不仅可以显示和操作路由表、网络接口、策略路由等,还支持IPv4和IPv6协议,是现代Linux系统中网络管理的首选工具,本文将详细介绍ip命令在CentOS 7中的常用语法、核心功能及实际应用场景,帮助用户全面掌握这一工具的使用方法。

ip命令的基本语法与安装
ip命令的基本语法结构为ip [OPTIONS] OBJECT [COMMAND],其中OBJECT表示操作对象(如link、addr、route等),COMMAND表示对该对象执行的具体操作(如show、add、delete等)。OPTIONS是可选参数,用于控制命令的输出格式或行为。-s选项可以显示详细的统计信息,-4或-6分别用于指定IPv4或IPv6操作。
在CentOS 7中,ip命令通常默认已安装,但若系统未安装,可通过以下命令安装:
sudo yum install iproute -y
安装完成后,可通过ip --help查看命令的帮助信息,或man ip查阅详细的手册页。
ip命令的核心功能与应用
网络接口管理(link对象)
网络接口是系统与外部网络通信的物理或虚拟通道,ip link命令用于查看、启用、禁用或修改接口属性。

-
查看所有接口状态:
ip link show
输出结果中,
UP表示接口已启用,DOWN表示已禁用,MTU为最大传输单元,qdisc为排队规则。 -
启用或禁用接口:
sudo ip link set ens33 up # 启用ens33接口 sudo ip link set ens33 down # 禁用ens33接口
-
修改接口MAC地址:
(图片来源网络,侵删)sudo ip link set ens33 address 00:11:22:33:44:55
-
查看接口详细信息:
ip -s link show ens33
此命令会显示接口的接收(RX)和发送(TX)字节数、错误包数等统计信息。
IP地址管理(addr对象)
ip addr命令用于配置或显示网络接口的IP地址、子网掩码、广播地址等信息。
-
查看接口IP地址:
ip addr show
输出中,
inet后为IPv4地址,inet6后为IPv6地址,scope表示地址作用域(如global为全局地址,link为链路本地地址)。 -
添加临时IP地址:
sudo ip addr add 192.168.1.100/24 dev ens33
此命令添加的IP地址在系统重启后会失效,若需永久配置,需修改网络配置文件(如
/etc/sysconfig/network-scripts/ifcfg-ens33)。 -
删除IP地址:
sudo ip addr del 192.168.1.100/24 dev ens33
-
启用或禁用接口的ARP协议:
sudo ip link set arp off dev ens33 # 禁用ARP sudo ip link set arp on dev ens33 # 启用ARP
路由管理(route对象)
路由表决定了数据包的转发路径,ip route命令用于查看、添加或删除路由条目。
-
查看路由表:
ip route show
输出中,
default via表示默认网关,src为源地址,dev为出站接口。 -
添加默认网关:
sudo ip route add default via 192.168.1.1 dev ens33
-
添加静态路由:
sudo ip route add 10.0.0.0/24 via 192.168.1.254 dev ens33
-
删除路由条目:
sudo ip route del default via 192.168.1.1 dev ens33
-
刷新路由缓存:
sudo ip route flush cache
网络统计与诊断
ip命令还可用于网络诊断和性能监控,
-
查看ARP缓存:
ip neigh show
输出显示与本地网络相连的主机IP和MAC地址映射。
-
查看多播地址:
ip maddr show
-
查看网络命名空间:
ip netns list
网络命名空间可实现网络资源的隔离,常用于容器技术(如Docker)。
ip命令与传统ifconfig命令的对比
相较于传统的ifconfig命令,ip命令在功能性和扩展性上具有明显优势,具体对比如下:
| 对比项 | ip命令 | ifconfig命令 |
|---|---|---|
| 支持协议 | 同时支持IPv4和IPv6 | 需分别使用ifconfig和ifconfig6 |
| 功能范围 | 支持路由、策略路由、隧道等高级功能 | 仅支持基本接口和IP配置 |
| 输出格式 | 结构化输出,便于脚本解析 | 输出格式固定,灵活性低 |
| 维护状态 | 主流Linux系统默认推荐使用 | 逐渐被弃用,部分发行版已移除 |
| 统计信息 | 通过-s选项获取详细统计 |
需单独使用netstat或ss命令 |
实际应用场景示例
临时修改网络配置
在需要快速测试网络环境时,可通过ip命令临时添加IP地址和路由,无需修改配置文件:
sudo ip addr add 192.168.100.50/24 dev ens33 sudo ip route add default via 192.168.100.1 ping 8.8.8.8 # 测试网络连通性
测试完成后,通过ip addr del和ip route del删除临时配置即可。
配置 bonding 实现网络冗余
通过ip link命令可配置网络绑定(bonding),将多个物理接口虚拟为一个逻辑接口,提高网络可靠性:
sudo ip link add bond0 type bond mode active-backup sudo ip link set ens33 master bond0 sudo ip link set ens34 master bond0 sudo ip addr add 192.168.1.50/24 dev bond0 sudo ip link set bond0 up
使用策略路由实现多出口负载均衡
在多网关环境中,可通过ip rule和ip route配置策略路由,实现基于源IP的流量转发:
sudo ip route add default via 192.168.1.1 table 1 sudo ip route add default via 192.168.2.1 table 2 sudo ip rule add from 192.168.1.100 table 1 sudo ip rule add from 192.168.1.101 table 2
相关问答FAQs
问题1:CentOS 7中如何使用ip命令永久修改网卡IP地址?
解答:在CentOS 7中,ip命令添加的IP地址为临时配置,重启后会失效,永久修改需编辑网卡配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33),添加或修改以下参数:
TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ONBOOT=yes
保存后执行sudo systemctl restart network使配置生效。
问题2:ip命令中“dev”和“via”参数有什么区别?
解答:在ip route命令中,dev参数指定数据包出站的网络接口,而via参数指定下一跳网关的IP地址。ip route add 10.0.0.0/24 via 192.168.1.1 dev ens33表示目标网络为0.0.0/24的数据包需通过网关168.1.1从接口ens33转发,若未指定dev,系统会根据路由表自动选择接口;若未指定via,则表示直连路由(目标网络与接口在同一网段)。
