Rocky Linux 9 网卡地址定制

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),记好网卡名(可能是 ens33eth0enp0s3 等)。
方法2:nmcli device 命令(确认网卡管理状态)

执行命令:

bash 复制代码
nmcli device

预期结果示例

复制代码
DEVICE  TYPE      STATE                   CONNECTION
ens160  ethernet  connected               ens160  # 已连接,被NetworkManager管理
lo      loopback  unmanaged               --
virbr0  bridge    disconnected            --
  • 确保目标网卡的 TYPEethernetSTATE 不为 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.8114.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-ens160ifcfg-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:旧连接冲突;
    解决:删除旧连接并重建:

    bash 复制代码
    sudo 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验证:

    bash 复制代码
    sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf

    若生效,重新执行 sudo systemctl restart NetworkManager 让配置永久生效。

相关推荐
wanhengidc1 小时前
云手机面向的用户群体都有哪些?
运维·服务器·科技·智能手机·云计算
繁华似锦respect1 小时前
C++ 设计模式之单例模式详细介绍
服务器·开发语言·c++·windows·visualstudio·单例模式·设计模式
bing_feilong1 小时前
ubuntu20.04没有图形界面怎么办?
linux·网络
cipher1 小时前
删库之夜V2·天网恢恢
服务器·数据库·git
5***r9351 小时前
Ubuntu 20.04配置网络
网络·ubuntu·php
新诺韦尔API2 小时前
手机在网时长查询接口对接全流程详解
大数据·网络·api
wanhengidc4 小时前
云计算时代 云手机与云服务器的不同
服务器·智能手机·云计算
阿巴~阿巴~9 小时前
JsonCpp:C++ JSON处理利器
linux·网络·c++·json·tcp·序列化和反序列化