
一、概述
在 Debian 或基于 Debian 的系统中(如 Deepin、Ubuntu、Kali 等),若设备同时拥有两张网卡——例如:
eno1:连接内网,仅局域网访问;wlx200db01f6624:连接外网,可访问互联网。
默认情况下,系统只会使用第一条默认路由进行网络访问,这会导致另一张网卡被闲置。
本文将教你通过 ip route 命令与 NetworkManager 调度脚本(dispatcher),
实现“双网卡同时工作”:
👉 一张卡访问外网,另一张卡访问内网,互不干扰,自动生效。
二、查看当前路由表
执行以下命令查看系统当前路由:
ip route输出示例:
default via 192.168.1.1 dev eno1 proto static metric 100
default via 192.168.10.6 dev wlx200db01f6624 proto static metric 600
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.101 metric 100
192.168.10.0/24 dev wlx200db01f6624 proto kernel scope link src 192.168.10.190 📌 说明:
192.168.1.1→ 内网网关192.168.10.6→ 外网网关出现两条
default默认路由时,系统仅使用 metric 值最小 的那一条。
三、删除默认内网路由
我们希望默认流量(如上网)通过外网,因此删除内网默认路由:
sudo ip route del default via 192.168.1.1 dev eno1验证结果:
ip route输出:
default via 192.168.10.6 dev wlx200db01f6624 proto static metric 600
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.101 metric 100
192.168.10.0/24 dev wlx200db01f6624 proto kernel scope link src 192.168.10.190 此时默认走外网,内网网段仍可局域互通。
四、为内网添加静态路由
为了让访问特定内网网段(如 192.0.0.0/24)时走内网接口:
sudo ip route add 192.0.0.0/24 via 192.168.1.1 dev eno1再查看路由:
ip route结果:
default via 192.168.10.6 dev wlx200db01f6624 proto static metric 600
192.0.0.0/24 via 192.168.1.1 dev eno1
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.101 metric 100
192.168.10.0/24 dev wlx200db01f6624 proto kernel scope link src 192.168.10.190 ✅ 至此:
访问互联网 → 走外网网卡
wlx200db01f6624访问内网网段 → 走内网网卡
eno1
五、重启网络服务
sudo systemctl restart networking.service现在系统已可同时访问内外网。
六、让路由永久生效
重启后临时路由会失效,因此需设置为自动加载。
由于 Debian 10+ 默认使用 NetworkManager 管理网络,
我们采用其 dispatcher 调度脚本机制 实现开机自动配置。
1️⃣ 启用调度服务
sudo systemctl enable NetworkManager-dispatcher.service
sudo systemctl start NetworkManager-dispatcher.service2️⃣ 创建自定义路由脚本
新建文件:
sudo nano /etc/NetworkManager/dispatcher.d/02-myroutes内容如下:
#!/bin/bash
# Debian/Deepin 双网卡自动路由脚本
case "$2" in
up)
/sbin/ip route del default via 192.168.1.1 dev eno1 2>/dev/null
/sbin/ip route add 192.0.0.0/24 via 192.168.1.1 dev eno1 2>/dev/null
;;
esac赋予执行权限:
sudo chmod +x /etc/NetworkManager/dispatcher.d/02-myroutes3️⃣ 重启系统验证
sudo reboot系统启动后执行:
ip route若看到之前设置的路由仍在,则表示永久路由已生效。
七、高级进阶:策略路由(Policy Routing)实现双外网分流
如果你希望 两张外网卡都能上网且分流使用,
可使用独立路由表(ip rule + ip route add table)实现策略路由。
示例配置
1. 查看当前网卡
ip addr show假设:
eth0→ 电信(外网 1)eth1→ 联通(外网 2)
2. 定义路由表
编辑 /etc/iproute2/rt_tables:
100 telecom
200 unicom3. 添加独立路由
# 电信表
sudo ip route add default via 192.168.1.1 dev eth0 table telecom
sudo ip rule add from 192.168.1.101 table telecom
# 联通表
sudo ip route add default via 192.168.2.1 dev eth1 table unicom
sudo ip rule add from 192.168.2.101 table unicom查看规则:
ip rule show测试:
ping -I eth0 8.8.8.8
ping -I eth1 1.1.1.1两个网卡都可访问外网,即实现分流上网。
⚙️ 也可结合
iptables或nftables实现更精细的多出口策略(如按端口、IP 段分流)。
八、方案原理
✅ 核心区别:
rc.local 在系统启动时执行过早,网络尚未初始化,导致命令失败;
dispatcher 在网络接口 “up” 后才执行,确保路由命令生效。
九、适用系统
十、常见问题(FAQ)
Q1:rc.local 方式不生效怎么办?
原因是执行时机太早,网络接口未初始化,应改用 dispatcher。
Q2:如何查看当前所有路由规则?
ip route show
ip rule showQ3:内外网 IP 冲突怎么办?
需要为不同网卡分配不同子网,否则路由表会冲突。
Q4:NetworkManager 未安装?
sudo apt install network-manager
sudo systemctl enable NetworkManagerQ5:如何删除多余路由?
sudo ip route del <网段或default> via <网关> dev <接口>Q6:能否在 Docker、虚拟机或 NAS 中使用?
可以,方案完全通用,只需保证系统由 NetworkManager 管理网卡。
✅ 十一、总结
通过本文,你学会了:
使用
ip route命令查看、添加、删除路由;同时配置两张网卡实现内外网共存;
使用 NetworkManager-dispatcher 实现开机自动配置;
掌握策略路由的进阶分流方案。
这套方法简单稳定、兼容性强,适合所有基于 Debian 的 Linux 系统使用。
无论是服务器、桌面、NAS 还是路由网关设备,都能轻松实现 双网卡同时在线 💡。
评论区