推荐使用nmcli配置内外网分离:外网网卡设唯一默认网关,内网网卡禁用默认路由(ipv4.never-default yes),确保流量按需分发,避免路由冲突。

如果您在银河麒麟操作系统中需要同时连接内网与外网(例如:一张网卡接入业务内网,另一张接入互联网),但系统默认仅允许一个默认网关,导致内网或外网无法正常通信,则需通过路由策略隔离流量路径。以下是多种经实测验证的配置方法:
一、使用 nmcli 配置内外网分离(推荐用于 Kylin V10 SP3+)
该方法基于 NetworkManager,通过显式禁用内网网卡的默认路由功能,并仅在外网网卡上设置唯一默认网关,避免路由冲突,配置即时生效且可脚本化。
1、确认两块物理网卡名称:执行 ip a 或 nmcli device status,记录外网网卡(如 ens33)和内网网卡(如 ens37)名称。
2、配置外网网卡(WAN)并启用默认网关:执行 nmcli connection modify ens33 ipv4.method manual ipv4.addresses 202.100.100.5/24 ipv4.gateway 202.100.100.1 ipv4.dns "114.114.114.114 8.8.8.8" ipv4.ignore-auto-routes no。
3、激活外网连接:执行 nmcli connection up ens33。
4、配置内网网卡(LAN)并禁止其成为默认路由:执行 nmcli connection modify ens37 ipv4.method manual ipv4.addresses 192.168.10.5/24 ipv4.gateway "" ipv4.never-default yes ipv4.ignore-auto-routes yes。
5、激活内网连接:执行 nmcli connection up ens37。
6、验证路由表:执行 ip route show,确认仅存在一条 default via 外网网关的路由,且内网网段(如 192.168.10.0/24)直连路由已存在。
二、使用静态路由命令实现双网卡共存(适用于所有 Kylin 版本)
该方法绕过 NetworkManager 的自动网关管理,直接操作内核路由表,通过手动添加内网网段路由并删除冗余默认网关,确保流量按目标地址精确分发。
1、禁用 NetworkManager 对路由的自动管理:执行 nmcli connection modify ens33 ipv4.ignore-auto-routes yes 和 nmcli connection modify ens37 ipv4.ignore-auto-routes yes。
2、重启两网卡连接:依次执行 nmcli connection down ens33 && nmcli connection up ens33 与 nmcli connection down ens37 && nmcli connection up ens37。
3、删除系统当前所有默认路由:执行 ip route del default。
4、添加外网默认路由:执行 ip route add default via 202.100.100.1 dev ens33(请将网关与设备名替换为实际值)。
5、添加内网网段路由:执行 ip route add 192.168.10.0/24 via 192.168.10.1 dev ens37(若内网无需网关,改用 ip route add 192.168.10.0/24 dev ens37 src 192.168.10.5)。
6、持久化路由:将上述 ip route add 命令写入 /etc/sysconfig/network-scripts/route-ens33 与 /etc/sysconfig/network-scripts/route-ens37 文件中。
三、调整接口 Metric 值控制优先级(适用于 WiFi + 有线共存场景)
当其中一网卡为无线(如 wlp2s0)、另一为有线(如 ens33)时,系统可能因 Metric 值冲突导致外网流量误走内网路径。通过统一设置 Metric 可强制指定默认出口。
1、查看当前各连接的 Metric 值:执行 nmcli connection show | grep -A 5 "ipv4.route-metric"。
2、降低外网连接的 Metric 值(如设为 50):执行 nmcli connection modify ens33 ipv4.route-metric 50。
3、提高内网连接的 Metric 值(如设为 1000):执行 nmcli connection modify ens37 ipv4.route-metric 1000。
4、重启两连接使 Metric 生效:执行 nmcli connection down ens33 && nmcli connection up ens33 与 nmcli connection down ens37 && nmcli connection up ens37。
5、验证路由优先级:执行 ip route show,确认 default 路由对应 Metric=50 的外网接口。
四、通过 network-scripts 编辑配置文件(传统方式,适用于禁用 NetworkManager 环境)
该方式直接修改底层网络脚本,不依赖 NetworkManager 服务,适用于对服务稳定性要求极高或已关闭 NetworkManager 的生产环境,配置在系统重启后自动加载。
1、关闭 NetworkManager 服务(如启用):执行 systemctl stop NetworkManager && systemctl disable NetworkManager。
2、编辑外网网卡配置文件:执行 vim /etc/sysconfig/network-scripts/ifcfg-ens33,确保包含:BOOTPROTO=static IPADDR=202.100.100.5 NETMASK=255.255.255.0 GATEWAY=202.100.100.1 ONBOOT=yes。
3、编辑内网网卡配置文件:执行 vim /etc/sysconfig/network-scripts/ifcfg-ens37,确保包含:BOOTPROTO=static IPADDR=192.168.10.5 NETMASK=255.255.255.0 ONBOOT=yes,且**不包含 GATEWAY 行**。
4、创建外网路由文件:执行 echo "default via 202.100.100.1 dev ens33" > /etc/sysconfig/network-scripts/route-ens33。
5、创建内网路由文件:执行 echo "192.168.10.0/24 via 192.168.10.1 dev ens37" > /etc/sysconfig/network-scripts/route-ens37(若无内网网关,改用 192.168.10.0/24 dev ens37)。
6、重启网络服务:执行 systemctl restart network。

















