应通过NetworkManager连接级配置、网卡配置文件编辑或systemd-networkd per-link DNS路由三种方法之一为有线网卡指定DNS;首选方法一(nmcli配置),关键步骤是禁用DHCP自动DNS并重载连接,确保内网域名走内网DNS、公网域名走公共DNS。

您正在使用银河麒麟操作系统,需要为有线网卡单独指定DNS服务器地址,确保内网域名(如 gitlab.internal)走内网DNS、公网域名走公共DNS,避免解析错乱或访问失败。
确认有线网卡名称并检查当前DNS状态
执行 ip -br link | grep UP,找出物理有线接口,常见名称为 【ens33】、enp0s3 或 eth0;排除 lo、docker0、veth* 等虚拟接口。再运行 systemd-resolve --status | grep "DNS Servers" 查看当前生效的全局DNS,若输出为空或显示 127.0.0.53,则说明 systemd-resolved 正在代理,真实配置尚未写入。
方法一:通过 NetworkManager 连接级配置(桌面环境首选)
适用于图形界面下由 NetworkManager 管理网络的麒麟V10桌面版,DNS绑定到具体连接,重启后自动恢复,且不与其他无线连接冲突。
第一步:列出所有连接 → nmcli con show,记下有线连接名称,例如“有线连接 1”。
第二步:设置自定义DNS → nmcli con mod "有线连接 1" ipv4.dns "192.168.10.5 114.114.114.114"。
第三步:禁用DHCP自动获取的DNS → nmcli con mod "有线连接 1" ipv4.ignore-auto-dns yes。这一步很关键:【不执行此步,DHCP下发的DNS会覆盖您手动填的地址】。
第四步:重新激活连接 → nmcli con down "有线连接 1" && nmcli con up "有线连接 1"。
第五步:验证是否写入 → cat /etc/resolv.conf | grep nameserver,应看到两行 nameserver 条目,且顺序与第二步中输入一致。
方法二:编辑网卡配置文件(服务器或无GUI环境)
该方式直接写入物理网卡脚本,由 network 服务加载,适用于麒麟V10 Server 或禁用 NetworkManager 的场景,配置永久生效,不受桌面服务干扰。
执行 sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33(将 ens33 替换为您的真实网卡名)。
在文件末尾新增三行(顶格书写,等号前后无空格):
DNS1=192.168.10.5
DNS2=114.114.114.114
DOMAIN="internal local"
保存退出后,执行 sudo systemctl restart network。注意:【此操作会中断所有网络连接,请务必本地操作】。
验证结果 → cat /etc/resolv.conf | grep -E "(nameserver|search)",应同时出现 nameserver 和 search 行。
方法三:为有线网卡启用 per-link DNS 路由(多网卡精准分流)
当系统同时接入有线(ens33)和无线(wlan0),且需让 *.internal 域名强制走有线DNS、其他域名走无线DNS时,必须用此法。这是唯一支持“网卡级域名路由”的原生方案。
方法一:创建 link 配置 → sudo vim /etc/systemd/network/10-ens33.network,写入:
[Match]
Name=ens33
[Network]
DNS=192.168.10.5
Domains=~internal ~local
RouteMetric=200
方法二:重启底层网络服务 → sudo systemctl restart systemd-networkd && sudo systemctl reload systemd-resolved。【必须先重启 networkd,否则 resolved 不读取新 link 配置】。
方法三:验证绑定效果 → systemd-resolve --status | grep -A8 "Link.*ens33",确认输出含 DNS: 192.168.10.5 和 Domains: ~internal ~local。


















