银河麒麟 V10 SP1 双网卡内外网同时使用配置
作者:新野驿站 | 分类:电脑技术 | 浏览:35 | 日期:2026年09月18日一、先搞清楚核心矛盾
双网卡同时接内外网,能连上不难,难在两点:
默认网关冲突:两块网卡各自都想当"默认出口",系统只能选一个,另一个方向的流量会走错网卡,导致内网或外网其中一个不通。
DNS 冲突:两个网络各自的 DNS 服务器会互相覆盖,内网域名和外网域名解析可能打架。
所以配置思路不是"两个网卡都配上网关就行",而是做路由分流:让访问外网网段走外网卡,访问内网网段走内网卡。
先确认两件事:
内网到底是只有一个网段(比如就是 10.0.0.0/24,和你在同一层),还是要通过内网网关访问多个内网网段?
外网是 DHCP 自动获取还是固定 IP?
不同情况方案不同,下面给通用做法。
二、查看网卡名称和现状
打开终端:
ip link # 看网卡名,一般是 enp3s0 / ens33 / eno1 这种
ip addr # 看当前 IP
ip route # 看当前默认网关(default via ... 那行)
nmcli con show # 看 NetworkManager 里的连接名
麒麟 V10 桌面版默认用 NetworkManager 管理网络,所以优先用它配置,能持久化、重启不丢。

三、配置 IP 地址
方式一:图形界面(推荐给不熟命令的人)
控制面板 → 网络连接(或右下角网络图标 → 网络设置)→ 选中网卡 → 齿轮/编辑:
外网卡:设 IP、掩码、网关、DNS(DHCP 就直接勾自动)。
内网卡:设 IP、掩码;网关这一项留空或谨慎填写(原因见第四节)。
方式二:命令行 nmcli
假设外网卡连接名 WAN(网卡 ens33),内网卡连接名 LAN(网卡 ens34)。
外网卡(正常配,带默认网关):
nmcli con mod WAN ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "223.5.5.5 114.114.114.114"
nmcli con up WAN
内网卡(关键:禁止它抢默认网关):
nmcli con mod LAN ipv4.method manual \
ipv4.addresses 10.0.0.100/24 \
ipv4.never-default yes
nmcli con up LAN
ipv4.never-default yes 这一句最重要——它让内网卡不安装默认路由,避免和外网卡抢出口。
四、按内网情况补路由
情况 A:内网只有本网段(最简单,多数办公内网)
如果内网资源都在 10.0.0.0/24 这个直连网段里,什么都不用再加。直连路由优先级高于默认路由,系统自动就知道:去 10.0.0.x 走内网卡,其它走外网卡。
验证:
ip route # 应看到 10.0.0.0/24 dev ens34,以及 default via 192.168.1.1 dev ens33
ping 10.0.0.1 # 内网网关/设备
ping www.baidu.com
情况 B:内网还有其它网段(要经内网网关转发)
比如内网还有 10.1.0.0/16、172.16.0.0/12,需要加静态路由:
nmcli con mod LAN +ipv4.routes "10.1.0.0/16 10.0.0.1"
nmcli con mod LAN +ipv4.routes "172.16.0.0/12 10.0.0.1"
nmcli con up LAN
10.0.0.1 是内网网关。这样系统就知道去这些网段走内网卡和它的网关。
注意:这条路由能不能通,还取决于内网网关是否知道回程路由(它要能把数据送回 10.0.0.100)。如果内网网关不掌握你的地址,需要网管在内网侧加一条回程路由。这是双网卡最常见的"能出去回不来"问题。
五、进阶:两个网络都要各自的默认网关(策略路由)
有些场景下内网本身也是一个"独立网络",需要访问大量内网网段、又不想一个个加静态路由。这时用策略路由,按源地址分流。
编辑路由表定义:
sudo nano /etc/iproute2/rt_tables
末尾加两行:
100 netlan
200 netwan
添加路由和规则(示例):
内网表:默认走内网网关
ip route add 10.0.0.0/24 dev ens34 src 10.0.0.100 table netlan
ip route add default via 10.0.0.1 dev ens34 table netlan
外网表:默认走外网网关
ip route add 192.168.1.0/24 dev ens33 src 192.168.1.100 table netwan
ip route add default via 192.168.1.1 dev ens33 table netwan
规则:从内网卡来的流量查 netlan 表,其余查 netwan
ip rule add from 10.0.0.100 table netlan
ip rule add from 192.168.1.100 table netwan
上面的 ip 命令重启会丢,需要持久化。麒麟 V10 用 NetworkManager,推荐用 dispatcher 脚本在网卡启用时自动执行:
sudo nano /etc/NetworkManager/dispatcher.d/90-dualnic
内容:
#!/bin/bash
IFACE=$1
ACTION=$2
[ "$ACTION" = "up" ] || exit 0
if [ "$IFACE" = "ens34" ]; then
ip rule add from 10.0.0.100 table netlan 2>/dev/null
ip route add default via 10.0.0.1 dev ens34 table netlan 2>/dev/null
fi
if [ "$IFACE" = "ens33" ]; then
ip rule add from 192.168.1.100 table netwan 2>/dev/null
fi
赋权:
sudo chmod 755 /etc/NetworkManager/dispatcher.d/90-dualnic
六、DNS 处理
双网卡最容易忽略 DNS 打架。原则:
只在一个网卡上配 DNS(通常外网卡配公共 DNS,内网卡配内网 DNS 或不配)。
如果内网有专用域名(如 oa.公司.local)需要解析,最好让内网 DNS 转发外网解析,只在系统里填内网 DNS 一个。
检查 /etc/resolv.conf,若被反复覆盖属正常(NetworkManager 托管),不要手动硬改。
cat /etc/resolv.conf # 看实际生效的 DNS
七、验证与排错
ip route # 路由表是否符合预期
ip rule # 策略路由规则(用了第五节的方案才看)
ping 10.0.0.1 # 内网
ping 192.168.1.1 # 外网网关
ping www.baidu.com # 外网
traceroute 10.1.0.1 # 看内网流量走哪块网卡
常见问题对照:
| 现象 | 原因 | 处理 |
|---|---|---|
| 外网通、内网不通 | 内网网关被外网抢了默认路由 | 内网卡设 never-default yes 或加静态路由 |
| 内网通、外网不通 | 内网卡抢了默认网关 | 检查 ip route 的 default 指向哪块卡 |
| 都能 ping 通网关但上不了外网 | DNS 或回程路由问题 | 检查 resolv.conf、确认出口网关 |
| 重启后失效 | 命令没持久化 | 用 nmcli 配置或用 dispatcher 脚本 |
八、一句话总结
外网卡正常配(带网关 + DNS),内网卡配 IP 但禁止抢默认网关(ipv4.never-default yes),内网网段用静态路由指过去;内网网段多或复杂时改用策略路由分流。 大多数"内网只有一个网段"的场景,前三步就够了。

