Rocky Linux 9 网卡地址定制
Rocky Linux 9 基于 RHEL 9,默认使用 NetworkManager 管理网络,支持 nmcli 命令行、配置文件编辑两种核心配置方式。
一、前期准备:确认系统环境与网卡信息
1. 确认Rocky Linux版本(验证系统兼容性)
执行命令:
bash
cat /etc/rocky-release
预期结果示例:
Rocky Linux release 9.3 (Blue Onyx)
2. 确认NetworkManager服务状态(必须,网卡配置依赖此服务)
Rocky 9 默认预装并启用 NetworkManager,先验证状态:
bash
systemctl status NetworkManager
预期结果 :显示 active (running)(绿色),表示服务正常;
若显示 inactive (dead)(灰色),需启动并设置开机自启:
bash
sudo systemctl start NetworkManager # 启动服务
sudo systemctl enable NetworkManager # 开机自启
再次执行 systemctl status NetworkManager 验证,确保状态为 running。
3. 查看所有网卡信息(核心!确定要配置的网卡名)
方法1:ip a 命令(推荐,信息最全面)
执行命令:
bash
ip a
预期结果示例(重点解读):
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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff # 网卡MAC地址
inet 192.168.1.7/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160 # 当前IP(dynamic=DHCP获取)
valid_lft 86392sec preferred_lft 86392sec
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
关键解读:
- 排除
lo(本地回环网卡)、virbr0(虚拟网卡); - 重点关注状态为
UP的物理网卡(如ens160),记好网卡名(可能是ens33、eth0、enp0s3等)。
方法2:nmcli device 命令(确认网卡管理状态)
执行命令:
bash
nmcli device
预期结果示例:
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160 # 已连接,被NetworkManager管理
lo loopback unmanaged --
virbr0 bridge disconnected --
- 确保目标网卡的
TYPE为ethernet,STATE不为unmanaged(未被管理)。
4. 查看当前网络配置(IP/网关/DNS,备份参考)
(1)查看当前IP和子网掩码
bash
ip addr show ens160 # 替换为你的网卡名
预期结果 :显示该网卡的IP(如 192.168.1.7/24,/24 对应子网掩码 255.255.255.0)。
(2)查看当前网关
bash
ip route show # 简写 ip r
预期结果示例:
default via 192.168.1.1 dev ens160 proto dhcp src 192.168.1.7 metric 100 # default via 后为网关(192.168.1.1)
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.7 metric 100
(3)查看当前DNS
bash
cat /etc/resolv.conf
预期结果示例:
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114
二、方案一:nmcli命令配置(推荐,即时生效+永久保存)
nmcli 是 NetworkManager 的命令行工具,配置后自动保存到系统,重启不丢失,无需手动编辑文件,适合快速配置。
前提:确认网卡「连接名」(通常与网卡名一致)
执行命令查看连接名:
bash
nmcli connection show # 简写 nmcli c s
预期结果示例:
NAME UUID TYPE DEVICE
ens160 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet ens160 # 连接名=ens160(与网卡名一致)
virbr0 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx bridge virbr0
- 记好「连接名」(如
ens160),后续命令用连接名操作。
场景1:配置静态IP(常用,固定IP地址)
假设需求:
- 网卡名/连接名:
ens160 - 静态IP:
192.168.1.100/24(子网掩码255.255.255.0) - 网关:
192.168.1.1(与路由器网关一致) - DNS:
8.8.8.8、114.114.114.114 - 开机自动连接:启用
步骤1:执行配置命令
bash
# 1. 设置静态IP和子网掩码
sudo nmcli connection modify ens160 ipv4.addresses "192.168.1.100/24"
# 2. 设置网关
sudo nmcli connection modify ens160 ipv4.gateway "192.168.1.1"
# 3. 设置DNS(多个DNS用空格分隔)
sudo nmcli connection modify ens160 ipv4.dns "8.8.8.8 114.114.114.114"
# 4. 设定IP获取方式为静态(manual)
sudo nmcli connection modify ens160 ipv4.method manual
# 5. 启用开机自动连接
sudo nmcli connection modify ens160 connection.autoconnect yes
步骤2:重启网卡使配置生效
bash
sudo nmcli connection down ens160 && sudo nmcli connection up ens160
预期结果:
Connection 'ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
场景2:配置动态IP(DHCP,自动获取IP)
无需固定IP时,让路由器自动分配,执行以下命令:
bash
# 1. 设置IP获取方式为自动(auto=DHCP)
sudo nmcli connection modify ens160 ipv4.method auto
# 2. 启用开机自动连接
sudo nmcli connection modify ens160 connection.autoconnect yes
# 3. 重启网卡生效
sudo nmcli connection down ens160 && sudo nmcli connection up ens160
三、方案二:编辑配置文件(永久生效,适合批量/手动配置)
Rocky 9 的网卡配置文件默认存放在 /etc/sysconfig/network-scripts/,修改后永久生效,步骤如下:
步骤1:进入配置文件目录并备份原有文件(重要!)
bash
# 进入配置文件目录
cd /etc/sysconfig/network-scripts/
# 查看目标网卡的配置文件(替换ens160为你的网卡名)
ls -l ifcfg-ens160
预期结果 :显示 ifcfg-ens160(配置文件名格式:ifcfg-网卡名)。
备份原有配置(避免配置错误无法恢复)
bash
sudo cp ifcfg-ens160 ifcfg-ens160.bak # 备份为后缀.bak的文件
验证备份:
bash
ls -l ifcfg-ens160*
预期结果 :同时显示 ifcfg-ens160 和 ifcfg-ens160.bak。
场景1:配置静态IP(编辑文件)
用 vim 编辑配置文件(未安装vim则执行 sudo dnf install vim -y):
bash
sudo vim ifcfg-ens160
步骤2:修改文件内容(按需求调整,删除冲突参数)
保留核心参数,添加/修改为以下内容(注释 # 后为说明,可省略):
bash
# 网卡类型(以太网,固定值)
TYPE=Ethernet
# 代理方式(默认none)
PROXY_METHOD=none
# 仅浏览器模式(默认no)
BROWSER_ONLY=no
# IP获取方式(静态填static,动态填dhcp)
BOOTPROTO=static
# 是否设为默认路由(yes)
DEFROUTE=yes
# 开机自动激活网卡(必须yes,否则开机不生效)
ONBOOT=yes
# 连接名(与网卡名一致)
NAME=ens160
# 网卡设备名(与网卡名一致)
DEVICE=ens160
# 静态IP地址(核心,定制的IP)
IPADDR=192.168.1.100
# 子网掩码(与/24对应)
NETMASK=255.255.255.0
# 网关地址(与路由器一致)
GATEWAY=192.168.1.1
# 首选DNS
DNS1=8.8.8.8
# 备选DNS
DNS2=114.114.114.114
# 禁用IPv6(可选,无需则设为no)
IPV6INIT=no
# 不自动获取IPv6(可选)
IPV6_AUTOCONF=no
步骤3:保存退出vim
- 按
Esc键,输入:wq回车保存退出; - 误操作需放弃修改:输入
:q!回车强制退出。
场景2:配置动态IP(编辑文件)
修改 ifcfg-ens160 的核心参数:
bash
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp # 动态IP填dhcp
DEFROUTE=yes
ONBOOT=yes
NAME=ens160
DEVICE=ens160
IPV6INIT=no
IPV6_AUTOCONF=no
保存退出(Esc → :wq)。
步骤4:重启NetworkManager服务生效
bash
sudo systemctl restart NetworkManager
验证服务状态:
bash
systemctl status NetworkManager
预期结果 :active (running)。
四、完整验证流程(确保配置100%生效)
1. 基础验证:IP/网关/DNS是否正确
bash
# (1)查看IP是否更新
ip addr show ens160 # 替换为你的网卡名
# 预期结果:静态IP显示192.168.1.100/24
# (2)查看网关是否正确
ip route show
# 预期结果:default via 192.168.1.1 dev ens160
# (3)查看DNS是否正确
cat /etc/resolv.conf
# 预期结果:包含设置的DNS(8.8.8.8、114.114.114.114)
2. 网络连通性验证
bash
# (1)ping网关(测试内网连通)
ping 192.168.1.1 -c 4 # -c 4 表示ping4次停止
# 预期结果:0% packet loss(无丢包)
# (2)ping公网IP(测试外网连通)
ping 223.5.5.5 -c 4 # 阿里公共DNS,无需解析
# 预期结果:0% packet loss
# (3)ping域名(测试DNS解析)
ping www.baidu.com -c 4
# 预期结果:能解析百度IP并ping通
3. 开机自启验证(可选)
bash
# 重启系统(保存工作后执行)
sudo reboot
# 重启后验证
ip a show ens160 # IP是否正确
ping www.baidu.com # 网络是否连通
五、常见问题排查(配置失败时用)
1. 配置后IP未更新
-
原因1:网卡名/连接名填错;
解决:重新执行ip a确认网卡名,修正命令或配置文件。 -
原因2:配置文件缩进/参数冲突;
解决:删除配置文件中多余参数(如原有DHCP_HOSTNAME),重新启动NetworkManager。 -
原因3:旧连接冲突;
解决:删除旧连接并重建:bashsudo nmcli connection delete ens160 sudo nmcli connection add type ethernet con-name ens160 ifname ens160
2. ping不通网关/外网
- 检查网关是否正确(对比路由器后台地址,如192.168.0.1而非192.168.1.1);
- 检查子网掩码与IP是否匹配(如IP是192.168.1.100,子网掩码必须是255.255.255.0);
- 临时关闭防火墙测试(Rocky 9默认防火墙可能拦截,执行
sudo systemctl stop firewalld)。
3. DNS解析失败(ping IP通,ping域名不通)
-
检查配置文件中
DNS1/DNS2是否填写正确; -
手动临时修改DNS验证:
bashsudo echo "nameserver 8.8.8.8" > /etc/resolv.conf若生效,重新执行
sudo systemctl restart NetworkManager让配置永久生效。