侧边栏壁纸
  • 累计撰写 37 篇文章
  • 累计创建 4 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Debian 双网卡同时上网配置教程:使用 ip route 实现多路由策略

陳小航
2025-10-25 / 0 评论 / 0 点赞 / 24 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2025-10-31,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

扫码_搜索联合传播样式-标准色版.png
一、概述

在 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.service

2️⃣ 创建自定义路由脚本

新建文件:

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-myroutes

3️⃣ 重启系统验证

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 unicom

3. 添加独立路由

# 电信表
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

两个网卡都可访问外网,即实现分流上网。

⚙️ 也可结合 iptablesnftables 实现更精细的多出口策略(如按端口、IP 段分流)。


八、方案原理

阶段

传统方式

Debian 新版推荐

网络管理

/etc/network/interfaces

NetworkManager

路由命令

route

ip route

启动执行

/etc/rc.local

/etc/NetworkManager/dispatcher.d/

特点

旧系统兼容好

支持热插拔、自动执行脚本

核心区别

  • rc.local 在系统启动时执行过早,网络尚未初始化,导致命令失败;

  • dispatcher 在网络接口 “up” 后才执行,确保路由命令生效。


九、适用系统

系统版本

网络管理方式

测试状态

Debian 9(Stretch)

/etc/network/interfaces

✔️ 可用

Debian 10(Buster)

NetworkManager

✔️ 推荐

Debian 11(Bullseye)

NetworkManager

✔️ 推荐

Debian 12(Bookworm)

NetworkManager

✔️ 推荐

Deepin / Ubuntu / Kali

NetworkManager

✔️ 完全兼容


十、常见问题(FAQ)

Q1:rc.local 方式不生效怎么办?
原因是执行时机太早,网络接口未初始化,应改用 dispatcher。

Q2:如何查看当前所有路由规则?

ip route show
ip rule show

Q3:内外网 IP 冲突怎么办?
需要为不同网卡分配不同子网,否则路由表会冲突。

Q4:NetworkManager 未安装?

sudo apt install network-manager
sudo systemctl enable NetworkManager

Q5:如何删除多余路由?

sudo ip route del <网段或default> via <网关> dev <接口>

Q6:能否在 Docker、虚拟机或 NAS 中使用?
可以,方案完全通用,只需保证系统由 NetworkManager 管理网卡。


✅ 十一、总结

通过本文,你学会了:

  • 使用 ip route 命令查看、添加、删除路由;

  • 同时配置两张网卡实现内外网共存;

  • 使用 NetworkManager-dispatcher 实现开机自动配置;

  • 掌握策略路由的进阶分流方案。

这套方法简单稳定、兼容性强,适合所有基于 Debian 的 Linux 系统使用。
无论是服务器、桌面、NAS 还是路由网关设备,都能轻松实现 双网卡同时在线 💡。

0

评论区