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),这是物理网卡,后续配置均针对此网卡(记好你的网卡名,可能是ens33、eth0、enp0s3等)。
方法2:用 nmcli device 命令(确认网卡是否被NetworkManager管理)
执行命令:
bash
nmcli device
预期结果示例:
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33 # 已连接,被管理
lo loopback unmanaged --
virbr0 bridge disconnected --
- 确保目标网卡(如
ens33)的STATE为connected或disconnected,TYPE为ethernet。
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.8 和 114.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-ens33 和 ifcfg-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:验证配置是否生效(同方案一的验证命令)
- 查看IP:
ip addr show ens33 - 查看网关:
ip route show - 查看DNS:
cat /etc/resolv.conf - 测试网络连通性:
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未更新
-
原因:可能存在旧连接冲突,执行以下命令删除旧连接并重新配置:
bashsudo 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是否设置; - 检查
NAME和DEVICE是否与网卡名一致; - 执行
sudo nmcli connection reload重新加载配置文件,再重启网卡。