Skip to content

不用双 WAN 也能接入第二条宽带?我的奇葩方案:给 PVE 直通一张 USB 网卡 ​

前言 ​

今年换上了联通 1000M 宽带,准备去注销移动的时候,说是有个活动续费 100M,一年只要 100 元还包含电视盒子,仔细一想还挺划算,毕竟联通的 IPTV 月租要 10 元,还要 200 元的安装费,加一起都够用 3 年移动了,还能白得一条移动宽带~

8.1 之后,浙江三大运营商像是商量好了一样,三家裸宽新装统一价 480 / 720 / 1200 一年,分别对应 300M / 500M / 1000M。

也就是说如果不续费的话,后面再想装这么便宜的移动就很困难了……

接下来的问题就是如何把两条宽带都利用起来。

主路由肯定接入联通宽带,至于移动只有 100M,而且电视盒子还是 OTT 会占用网速,实际上不太会用移动宽带去上网!

所以只需要在 PVE 创建一台虚拟机,直通 USB 网卡连接到移动光猫,基本就能满足我的需求了~

随便找个盒子、小主机插个 USB 网卡也是一样的效果

大致是下面几个需求:

  • VPS 测评:由于经常会买一些 VPS 做测评,可以用这台虚拟机测试移动到 VPS 的网络质量。
  • 访问光猫:作为跳板来访问移动光猫 (192.168.0.1),省得每次插拔网线。
  • 远程访问:利用移动内网穿透访问内网,当作一条备用线路。
  • 网络独立:两条宽带完全独立,随便折腾不用担心断网。

拓扑图就是这样:

联通光猫(桥接)—— 192.168.1.0/24 | 联通路由器(拨号)—— 10.0.0.0/24

移动光猫(拨号)—— 192.168.0.0/24

拓扑图
拓扑图

为什么不用双 WAN? ​

有两条宽带的情况下,最先想到的肯定是双 WAN,现在的大多数路由器也都支持这个功能,但实际配置之后发现双 WAN 并没有想象中那么好用……

  • 网速:移动只有 100M,带宽叠加肯定没有什么意义,况且还是不同的运营商,反而更容易出问题,我只需要策略路由,把部分设备 or 部分 IP 分流到移动。
  • IPv6:双 WAN 接入的话,IPv4 设置倒是不难,但 IPv6 就非常困难了,要么用 NAT66,要么就得禁用一条宽带的 IPv6,很难有个完美的解决方案。
  • 网口不够:路由器要同时插移动光猫和电视盒子,这样一来网口就不够用了,还需要再接一个交换机,而分开的话可以直接让移动光猫拨号,把电视盒子插光猫上。
  • 配置复杂:主路由用 OpenWRT 配置双 WAN 非常繁琐,操作不当很容易断网。

eth0(虚拟网卡) ​

移除默认网关 ​

直接通过 Cloud-Init 设置静态 IP,同时删掉默认网关 10.0.0.1,这样虚拟机就不会通过联通来访问外网了。

移除默认网关
移除默认网关

添加路由 ​

由于删了默认网关,这台虚拟机的 eth0 现在只能访问 10.0.0.0/24,需要将联通光猫和 Tailscale 的网段补回去。

这台虚拟机没有单独安装 Tailscale,直接用主路由上的 Tailscale

sh
ip route replace 192.168.1.0/24 via 10.0.0.1 dev eth0
ip route replace 100.64.0.0/10 via 10.0.0.1 dev eth0

关闭 IPv6 ​

路由器 IPv6 设置的 SLAAC,这里再单独移除 eth0 上的 IPv6 地址。

sh
sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
sysctl -w net.ipv6.conf.eth0.accept_ra=0
sysctl -w net.ipv6.conf.eth0.autoconf=0

eth1 (USB 网卡) ​

直通 ​

在 “使用 USB 供应商/设备 ID” 中选择 USB 网卡,这样网卡随便插哪个 USB 口都可以直通进去。

USB 网卡就是几块钱包邮的百兆网卡,也能够免驱使用~

直通 USB 网卡
直通 USB 网卡

命名 eth1 ​

默认情况下 USB 网卡的名字很长,这里将它命名为 eth1 方便后续操作

创建 /etc/systemd/network/10-usb-eth1.link 文件,填入以下内容

/etc/systemd/network/10-usb-eth1.link
ini
[Match]
MACAddress=e0:4e:7a:96:43:f1

[Link]
Name=eth1

DHCP ​

USB 网卡连接的是移动,直接 DHCP 就好了。

创建 /etc/systemd/network/20-eth1.network 文件,填入以下内容

/etc/systemd/network/20-eth1.network
ini
[Match]
Name=eth1

[Network]
DHCP=yes
IPv6AcceptRA=yes

[DHCPv4]
RouteMetric=50

[IPv6AcceptRA]
RouteMetric=50

网段互访 ​

静态路由 ​

在主路由上添加一条静态路由,网段 192.168.0.0/24 网关 10.0.0.30

静态路由
静态路由

NAT 动态 IP 伪装 ​

为了方便电脑直接访问移动光猫,这里设置一下动态 IP 伪装,这样就不用在光猫上配置静态路由了(毕竟配置静态路由需要超密)。

sh
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE

ufw ​

移动的光猫没法单独控制 IPv6 防火墙的规则,所以关闭 IPv6 防火墙后,安全起见,再给虚拟机安一个 ufw。

安装完需要开启 ufw 默认路由转发策略,否则就没法借助这台虚拟机访问 192.168.0.0/24 这个网段了。

编辑 /etc/default/ufw,将 DEFAULT_FORWARD_POLICY 修改为 ACCEPT

/etc/default/ufw
ini
DEFAULT_FORWARD_POLICY="ACCEPT"

接着再放行 10.0.0.0/24,不然 SSH 就连不上了~

sh
ufw allow from 10.0.0.0/24

收尾 ​

最后再将以上命令做个持久化,重启后也能生效~

偷个懒,直接加到 /etc/rc.local 中开机自启

/etc/rc.local
sh
#!/bin/bash

sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
sysctl -w net.ipv6.conf.eth0.accept_ra=0
sysctl -w net.ipv6.conf.eth0.autoconf=0

ip route replace 192.168.1.0/24 via 10.0.0.1 dev eth0
ip route replace 100.64.0.0/10 via 10.0.0.1 dev eth0
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE

exit 0

最终效果 ​

做完以上步骤后,两条宽带本质上还是完全独立的,互不影响,仅仅多了一台虚拟机作为桥梁,连接两个网络。

主路由下的所有设备仍然完全处于联通网络中,同时也能直接访问到移动的网段 192.168.0.0/24,而虚拟机则是完全处于移动网络下,可以用来测试 VPS 线路等等。

即便是这台虚拟机关机、重启,也不影响两边的网络~

Last updated:

Evoxt:Evoxt:
最便宜的亚太优化线路 —— 马来西亚 电信 GIA / 联通 9929 仅需 $3.32 起!
95 折优惠码AFF2377-DEV
🎉银河录像局:
Netflix / Spotify/ ChatGPT / Claude 等 AI 流媒体一站式合租平台!
95 折优惠码zhichao
关注微信公众号
优化线路
Evoxt

Evoxt

最便宜的亚太优化线路

马来西亚 电信 GIA / 联通 9929
优惠码:AFF2377-DEV

1C / 512MB / 5GB SSD / 150GB 流量

$3.32/月
优化线路
搬瓦工

搬瓦工

15 个机房自由切换

洛杉矶 DC6 机房
电信 / 联通 GIA + 移动 CMIN2

2C / 2GB / 40GB SSD / 1TB 流量

$49.99/季