OpenEuler系统网卡地址定制

OpenEuler系统网卡地址定制

核心说明

网卡地址定制核心是配置 IP地址(静态/动态)、子网掩码、网关、DNS

一、前期准备:确认系统环境与网卡信息

1. 确认OpenEuler系统版本(可选,了解系统环境)

执行命令:

bash 复制代码
cat /etc/openEuler-release

预期结果:显示系统版本,例如:

复制代码
openEuler release 22.03 LTS (LTS-SP3)

2. 确认NetworkManager服务状态(必须,网卡配置依赖此服务)

OpenEuler默认预装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

预期结果示例(重点看这3部分):

复制代码
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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <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.5/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33  # 当前IP(dynamic表示DHCP获取)
       valid_lft 86398sec preferred_lft 86398sec
    inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
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
       valid_lft forever preferred_lft forever

关键解读

  • 排除 lo(本地回环网卡,无需配置)和 virbr0(虚拟网卡,默认不使用);
  • 重点关注状态为 UP 的网卡(如 ens33),这是物理网卡,后续配置均针对此网卡(记好你的网卡名,可能是 ens33eth0enp0s3 等)。
方法2:用 nmcli device 命令(确认网卡是否被NetworkManager管理)

执行命令:

bash 复制代码
nmcli device

预期结果示例

复制代码
DEVICE  TYPE      STATE                   CONNECTION
ens33   ethernet  connected               ens33  # 已连接,被管理
lo      loopback  unmanaged               --
virbr0  bridge    disconnected            --
  • 确保目标网卡(如 ens33)的 STATEconnecteddisconnectedTYPEethernet

4. 查看当前网卡的IP/网关/DNS配置(备份参考)

(1)查看当前IP和子网掩码
bash 复制代码
ip addr show ens33  # 替换为你的网卡名

预期结果 :显示该网卡的IP(如 192.168.1.5/24/24 对应子网掩码 255.255.255.0)。

(2)查看当前网关
bash 复制代码
ip route show  # 或简写 ip r

预期结果示例

复制代码
default via 192.168.1.1 dev ens33 proto dhcp src 192.168.1.5 metric 100  # default via 后的是网关(192.168.1.1)
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.5 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
(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
ens33   xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  ens33  # 连接名是 ens33(与网卡名一致)
virbr0  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  bridge    virbr0
  • 记好「连接名」(如 ens33),后续命令用连接名操作。

场景1:配置静态IP(常用,固定IP地址)

假设需求:

  • 网卡名/连接名:ens33
  • 静态IP:192.168.1.100
  • 子网掩码:255.255.255.0(对应 /24
  • 网关:192.168.1.1(需与你的路由器/网关一致,参考前期查看的网关)
  • DNS:8.8.8.8(谷歌DNS)、114.114.114.114(国内常用DNS)
  • 开机自动连接:启用
步骤1:执行配置命令
bash 复制代码
# 1. 设置IP地址和子网掩码
sudo nmcli connection modify ens33 ipv4.addresses "192.168.1.100/24"

# 2. 设置网关
sudo nmcli connection modify ens33 ipv4.gateway "192.168.1.1"

# 3. 设置DNS(多个DNS用空格分隔)
sudo nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114"

# 4. 设定IP获取方式为静态(manual)
sudo nmcli connection modify ens33 ipv4.method manual

# 5. 启用开机自动连接
sudo nmcli connection modify ens33 connection.autoconnect yes
步骤2:重启网卡使配置生效
bash 复制代码
# 先断开连接,再重新激活(必须执行,否则不生效)
sudo nmcli connection down ens33 && sudo nmcli connection up ens33

预期结果

复制代码
Connection 'ens33' 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 ens33 ipv4.method auto

# 2. 启用开机自动连接
sudo nmcli connection modify ens33 connection.autoconnect yes

# 3. 重启网卡生效
sudo nmcli connection down ens33 && sudo nmcli connection up ens33

步骤3:查看配置是否生效(验证)

(1)查看IP是否更新
bash 复制代码
ip addr show ens33  # 替换为你的网卡名

预期结果 :静态IP显示 192.168.1.100/24,动态IP显示新的自动分配地址。

(2)查看网关是否正确
bash 复制代码
ip route show

预期结果default via 192.168.1.1 dev ens33(静态IP场景)。

(3)查看DNS是否正确
bash 复制代码
cat /etc/resolv.conf

预期结果 :包含设置的DNS(8.8.8.8114.114.114.114)。

三、方案二:编辑配置文件(永久生效,适合批量/手动配置)

通过修改网卡的配置文件实现定制,配置永久保存,即使重装NetworkManager也不丢失,步骤如下:

步骤1:进入网卡配置文件目录

OpenEuler的网卡配置文件默认存放在 /etc/sysconfig/network-scripts/,先进入该目录并查看文件:

bash 复制代码
cd /etc/sysconfig/network-scripts/
ls -l  # 查看目录下的配置文件

预期结果 :显示以 ifcfg- 开头的文件,如 ifcfg-ens33(对应网卡 ens33)。

步骤2:备份原有配置文件(重要!避免配置错误无法恢复)

执行备份命令(替换 ens33 为你的网卡名):

bash 复制代码
sudo cp ifcfg-ens33 ifcfg-ens33.bak  # 备份为 ifcfg-ens33.bak

验证备份是否成功:

bash 复制代码
ls -l ifcfg-ens33*

预期结果 :同时显示 ifcfg-ens33ifcfg-ens33.bak

场景1:配置静态IP(编辑文件)

vim 编辑配置文件(若未安装vim,先执行 sudo dnf install vim -y):

bash 复制代码
sudo vim ifcfg-ens33  # 替换为你的网卡配置文件名
步骤3:修改文件内容(按需求调整以下参数)

删除原有冲突参数,添加/修改为以下内容(注释 # 后为说明,可不用写):

bash 复制代码
# 网卡类型(以太网,固定值)
TYPE=Ethernet
# 代理方式(默认none)
PROXY_METHOD=none
# 仅浏览器模式(默认no)
BROWSER_ONLY=no
# IP获取方式(静态填static,动态填dhcp)
BOOTPROTO=static
# 是否设为默认路由(yes)
DEFROUTE=yes
# 开机自动激活网卡(必须yes,否则开机不生效)
ONBOOT=yes
# 连接名(需与网卡名一致,如ens33)
NAME=ens33
# 网卡设备名(需与网卡名一致,如ens33)
DEVICE=ens33
# 静态IP地址(核心,定制的IP)
IPADDR=192.168.1.100
# 子网掩码(与/24对应,固定255.255.255.0)
NETMASK=255.255.255.0
# 网关地址(与路由器/网关一致)
GATEWAY=192.168.1.1
# 首选DNS(谷歌DNS)
DNS1=8.8.8.8
# 备选DNS(国内常用)
DNS2=114.114.114.114
# 禁用IPv6(可选,若无需IPv6)
IPV6INIT=no
# 不自动获取IPv6地址(可选)
IPV6_AUTOCONF=no
步骤4:保存文件并退出vim
  • Esc 键,输入 :wq(冒号+wq),回车保存退出;
  • 若误操作需放弃修改,输入 :q! 回车强制退出。

场景2:配置动态IP(编辑文件)

编辑 ifcfg-ens33 文件,修改以下核心参数:

bash 复制代码
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp  # 动态IP填dhcp
DEFROUTE=yes
ONBOOT=yes
NAME=ens33
DEVICE=ens33
IPV6INIT=no
IPV6_AUTOCONF=no

保存退出(Esc:wq)。

步骤5:重启NetworkManager服务生效

bash 复制代码
sudo systemctl restart NetworkManager

验证服务是否重启成功

bash 复制代码
systemctl status NetworkManager

预期结果:状态为 active (running)

步骤6:验证配置是否生效(同方案一的验证命令)

  1. 查看IP:ip addr show ens33
  2. 查看网关:ip route show
  3. 查看DNS:cat /etc/resolv.conf
  4. 测试网络连通性:ping www.baidu.com(能ping通表示配置正常)

四、方案三:ip命令临时配置(仅测试用,重启失效)

若仅需临时测试IP(系统重启/网卡重启后配置丢失),用 ip 命令快速配置:

场景1:临时配置静态IP

bash 复制代码
# 1. 为网卡添加临时静态IP(子网掩码用/24表示)
sudo ip addr add 192.168.1.100/24 dev ens33  # 替换为你的网卡名

# 2. 配置临时网关(可选,需联网时配置)
sudo ip route add default via 192.168.1.1 dev ens33

# 3. 临时配置DNS(重启后/etc/resolv.conf会恢复)
sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
sudo echo "nameserver 114.114.114.114" >> /etc/resolv.conf

场景2:取消临时配置(可选)

bash 复制代码
# 1. 删除临时IP
sudo ip addr del 192.168.1.100/24 dev ens33

# 2. 删除临时网关
sudo ip route del default via 192.168.1.1 dev ens33

# 3. 恢复DNS(清空resolv.conf,重启NetworkManager自动生成)
sudo echo "" > /etc/resolv.conf
sudo systemctl restart NetworkManager

验证临时配置

bash 复制代码
ip addr show ens33  # 查看临时IP
ping www.baidu.com  # 测试连通性

五、完整验证流程(确保配置100%生效)

无论用哪种方案,配置后都需执行以下验证:

1. 基础验证:IP/网关/DNS是否正确

bash 复制代码
# 1. 查看IP和子网掩码
ip a show ens33

# 2. 查看网关
ip r

# 3. 查看DNS
cat /etc/resolv.conf

2. 网络连通性验证

bash 复制代码
# (1)ping网关(测试内网连通性)
ping 192.168.1.1 -c 4  # -c 4 表示ping4次后停止
# 预期结果:显示4次成功响应(0% packet loss)

# (2)ping公网IP(测试外网连通性)
ping 223.5.5.5 -c 4  # 223.5.5.5是阿里DNS的IP
# 预期结果:0% packet loss

# (3)ping域名(测试DNS解析是否正常)
ping www.baidu.com -c 4
# 预期结果:能解析出百度的IP并ping通

3. 开机自启验证(可选,确保重启后生效)

bash 复制代码
# 重启系统(谨慎!需保存当前工作)
sudo reboot

# 重启后执行以下命令验证
ip a show ens33  # IP是否正确
systemctl status NetworkManager  # 服务是否正常运行
ping www.baidu.com  # 网络是否连通

六、常见问题排查(配置失败时用)

1. 重启网卡后IP未更新

  • 原因:可能存在旧连接冲突,执行以下命令删除旧连接并重新配置:

    bash 复制代码
    sudo nmcli connection delete ens33  # 删除旧连接(替换为你的连接名)
    sudo nmcli connection add type ethernet con-name ens33 ifname ens33  # 重建连接
    # 重新执行方案一的静态/动态IP配置命令

2. ping不通网关/外网

  • 检查网关是否正确(对比路由器的网关地址);
  • 检查子网掩码是否与网关一致(如网关是 192.168.1.1,子网掩码必须是 255.255.255.0);
  • 关闭防火墙测试(OpenEuler默认防火墙可能拦截ping,临时关闭:sudo systemctl stop firewalld)。

3. DNS解析失败(ping IP能通,ping域名不通)

  • 检查 /etc/resolv.conf 是否包含正确的DNS;
  • 若DNS被覆盖,重新执行配置DNS的命令(方案一)或修改配置文件(方案二),重启NetworkManager。

4. 配置文件修改后不生效

  • 检查配置文件中的 ONBOOT=yes 是否设置;
  • 检查 NAMEDEVICE 是否与网卡名一致;
  • 执行 sudo nmcli connection reload 重新加载配置文件,再重启网卡。
相关推荐
a***976836 分钟前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
O***Z61636 分钟前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
PS12323241 分钟前
交通基础设施安全守护者 超声波风速风向传感器桥梁与隧道风速监测
大数据·服务器·人工智能
拾忆,想起41 分钟前
Dubbo序列化方式全解析:从原理到实战的性能优化指南
服务器·网络·微服务·性能优化·架构·dubbo
鲜枣课堂44 分钟前
聊聊华为新推出的无网应急通信
网络·华为
kwg12644 分钟前
Dify二次开发构建api后端Docker离线镜像方案
服务器·人工智能·python
心随雨下1 小时前
WebSocket使用注意事项与优化策略
网络·websocket·网络协议
初圣魔门首席弟子1 小时前
网络编程所有通信方式总结 C++ 实现模板(基于 C++11+)
运维·服务器
a***81391 小时前
【Go】Go语言基础学习(Go安装配置、基础语法)
服务器·学习·golang