Linux命令详解 ------ IP 命令及永久配置
你希望全面掌握 ip 命令的用法,同时需要针对 CentOS 和 Ubuntu 两个主流发行版提供具体示例,接下来我会从命令概述、核心功能模块、分发行版实操、注意事项四个部分详细讲解,让你既能理解原理,又能直接落地使用。
一、ip 命令概述
ip 命令是 Linux 系统中用于配置网络接口、路由、ARP 缓存 等网络参数的核心工具,它是传统 ifconfig、route、arp 等命令的升级版,功能更强大、语法更统一,目前已成为主流 Linux 发行版的默认网络配置工具。
核心特点
-
需
root权限执行(普通用户仅能查看,无法修改配置),需搭配sudo。 -
命令格式遵循
ip [选项] [对象] [操作] [参数],其中核心对象有:-
addr(简写a):网络地址(IP/子网掩码/广播地址)相关操作。 -
link(简写l):网络链路(网卡本身,如启用/禁用、查看MAC地址)相关操作。 -
route(简写r):路由表相关操作(网关、静态路由)。 -
neigh(简写n):ARP 缓存(邻居表)相关操作。
-
二、ip 命令核心功能(通用,CentOS/Ubuntu 均适用)
以下示例中,统一使用网卡名 ens33(有线网卡,虚拟机默认常用)、wlan0(无线网卡),IP 段 192.168.1.0/24,网关 192.168.1.1,所有修改默认临时有效(重启失效),后续会单独讲永久配置。
模块 1:ip link(操作网卡本身)
用于查看、启用、禁用网卡,修改 MAC 地址等,核心操作如下:
1. 查看所有网卡的链路信息(含 MAC 地址、启用状态)
Bash
# 完整命令
ip link show
# 简写命令(推荐,更高效)
ip l
2. 启用/禁用指定网卡
Bash
# 启用 ens33 网卡(对应 ifconfig ens33 up)
sudo ip link set ens33 up
# 禁用 ens33 网卡(对应 ifconfig ens33 down)
sudo ip link set ens33 down
3. 修改网卡 MAC 地址(临时)
Bash
# 先禁用网卡(修改 MAC 必须先禁用)
sudo ip link set ens33 down
# 修改 MAC 地址(格式:xx:xx:xx:xx:xx:xx)
sudo ip link set ens33 address 00:0c:29:aa:bb:cc
# 重新启用网卡
sudo ip link set ens33 up
模块 2:ip addr(操作网卡 IP 地址)
用于添加、删除、查看网卡的 IP 地址(IPv4/IPv6),是最常用的模块之一。
1. 查看所有网卡的 IP 地址信息
Bash
# 完整命令
ip addr show
# 简写命令(推荐)
ip a
# 查看指定网卡的 IP 信息
ip a show ens33
2. 给网卡添加 IPv4 地址(单个/多个)
Bash
# 基本语法:sudo ip addr add <IP/子网> dev <网卡名>
# 示例1:给 ens33 添加单个 IP 192.168.1.100/24
sudo ip addr add 192.168.1.100/24 dev ens33
# 示例2:给同一网卡添加多个 IP(别名,直接重复添加即可)
sudo ip addr add 192.168.1.101/24 dev ens33
sudo ip addr add 192.168.1.102/24 dev ens33
3. 删除网卡上的指定 IP 地址
Bash
# 基本语法:sudo ip addr del <IP/子网> dev <网卡名>
sudo ip addr del 192.168.1.101/24 dev ens33
4. 清空网卡上的所有 IP 地址
Bash
sudo ip addr flush dev ens33
模块 3:ip route(操作路由表)
用于查看、添加、删除路由规则,核心是配置网关(默认路由)和静态路由。
1. 查看路由表信息
Bash
# 完整命令
ip route show
# 简写命令(推荐)
ip r
2. 添加默认网关(所有非本地流量都走该网关)
Bash
# 基本语法:sudo ip route add default via <网关IP> dev <网卡名>
sudo ip route add default via 192.168.1.1 dev ens33
3. 添加静态路由(指定网段流量走特定网关)
示例:所有访问 10.0.0.0/24 网段的流量,通过 192.168.1.254 网关转发
Bash
sudo ip route add 10.0.0.0/24 via 192.168.1.254 dev ens33
4. 删除路由规则
Bash
# 删除默认网关
sudo ip route del default via 192.168.1.1 dev ens33
# 删除静态路由
sudo ip route del 10.0.0.0/24 via 192.168.1.254 dev ens33
模块 4:ip neigh(操作 ARP 缓存)
用于查看、管理邻居表(ARP 缓存,记录 IP 与 MAC 地址的映射关系)。
1. 查看 ARP 缓存列表
Bash
# 完整命令
ip neigh show
# 简写命令(推荐)
ip n
2. 手动添加 ARP 静态条目(绑定 IP 与 MAC)
Bash
sudo ip neigh add 192.168.1.50 lladdr 00:0c:29:dd:ee:ff dev ens33 permanent
3. 删除 ARP 缓存条目
Bash
sudo ip neigh del 192.168.1.50 dev ens33
4. 刷新 ARP 缓存
Bash
sudo ip neigh flush dev ens33
三、分发行版实操(永久配置,基于 ip 命令核心配置)
前面的 ip 命令修改都是临时生效 (系统重启/网卡重启后丢失),接下来针对 CentOS(以 7/8/9 为例)和 Ubuntu(以 20.04/22.04 为例),讲解如何将 ip 配置的内容永久保存。
场景:永久配置静态 IP
需求:网卡 ens33,IP 192.168.1.100/24,网关 192.168.1.1,DNS 223.5.5.5、8.8.8.8
1. CentOS 系统(永久配置)
CentOS 采用 ifcfg 配置文件格式,配置文件存放于 /etc/sysconfig/network-scripts/,命名规则为 ifcfg-<网卡名>。
步骤 1:编辑网卡配置文件
Bash
# 编辑 ens33 的配置文件(如果文件不存在,直接创建即可)
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
步骤 2:写入以下配置内容
TOML
# 网卡类型(以太网)
TYPE=Ethernet
# 网卡名(与文件名后缀一致)
NAME=ens33
DEVICE=ens33
# 开机自动启用网卡(关键:确保永久配置生效)
ONBOOT=yes
# 配置类型(static 静态 IP,dhcp 自动获取)
BOOTPROTO=static
# 静态 IP 地址(对应 ip addr add 的内容)
IPADDR=192.168.1.100
# 子网掩码(对应 /24,等价于 255.255.255.0)
NETMASK=255.255.255.0
# 网关(对应 ip route add default via 的内容)
GATEWAY=192.168.1.1
# DNS 服务器(多个 DNS 用空格分隔或写为 DNS2=8.8.8.8)
DNS1=223.5.5.5
DNS2=8.8.8.8
# 禁用 IPv6(可选,根据需求开启/关闭)
IPV6INIT=no
步骤 3:生效配置(二选一即可)
Bash
# 方式 1:重启网络服务(CentOS 7 适用,CentOS 8/9 部分环境兼容)
sudo systemctl restart network
# 方式 2:重启网卡(推荐,CentOS 7/8/9 均适用,不影响其他网卡)
sudo nmcli connection reload
sudo nmcli connection up ens33
步骤 4:验证配置
Bash
# 查看 IP 是否永久生效
ip a show ens33
# 查看路由是否永久生效
ip r
# 测试网络连通性
ping www.baidu.com
2. Ubuntu 系统(永久配置)
Ubuntu 采用 netplan 配置工具,配置文件存放于 /etc/netplan/,后缀为 .yaml(注意:yaml 格式严格缩进,不能用制表符,只能用空格)。
步骤 1:找到 netplan 配置文件
Bash
# 列出 /etc/netplan/ 下的配置文件(通常是 00-installer-config.yaml 或 50-cloud-init.yaml)
ls /etc/netplan/
步骤 2:编辑 netplan 配置文件
Bash
# 编辑配置文件(替换为你找到的文件名)
sudo nano /etc/netplan/00-installer-config.yaml
步骤 3:写入以下配置内容
YAML
network:
# 配置版本(固定为 2,不可修改)
version: 2
# 以太网配置
ethernets:
# 网卡名(对应 ens33,需与实际网卡名一致)
ens33:
# 禁用 DHCP,使用静态 IP
dhcp4: no
# 静态 IP 地址(可配置多个,用逗号分隔,对应 ip addr add 多个 IP)
addresses: [192.168.1.100/24]
# 网关(对应 ip route add default via,注意缩进)
routes:
- to: default
via: 192.168.1.1
# DNS 服务器(对应 /etc/resolv.conf,可配置多个)
nameservers:
addresses: [223.5.5.5, 8.8.8.8]
步骤 4:生效配置(关键:netplan apply 无需重启系统)
Bash
# 验证配置文件语法是否正确(可选,避免缩进错误)
sudo netplan try
# 应用配置(永久生效,立即生效,无需重启)
sudo netplan apply
步骤 5:验证配置
Bash
# 查看 IP
ip a show ens33
# 查看路由
ip r
# 测试 DNS 和网络连通性
ping www.baidu.com
四、补充说明
-
CentOS 与 Ubuntu 核心差异:
-
永久配置的配置文件格式和存放路径 不同(CentOS:
ifcfg,Ubuntu:netplan)。 -
配置生效命令不同(CentOS:
restart network/nmcli,Ubuntu:netplan apply)。 -
ip命令的临时操作在两个发行版中完全一致,无差异。
-
-
如何快速确认网卡名:
Bash# 通用命令,两个发行版均适用 ip link show ls /sys/class/net/ -
避免 IP 冲突 :添加静态 IP 前,可通过
ping <目标IP>测试该 IP 是否被其他设备占用。
总结
-
ip命令是 Linux 网络配置的核心工具,核心模块为addr(IP)、link(网卡)、route(路由)、neigh(ARP)。 -
ip命令临时配置在 CentOS 和 Ubuntu 中语法一致,永久配置需区分发行版(CentOS 用ifcfg文件,Ubuntu 用netplan)。 -
永久配置生效后,可通过
ip a和ip r验证,再用ping测试网络连通性。