不用双 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
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 地址。
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=0eth1 (USB 网卡)
直通
在 “使用 USB 供应商/设备 ID” 中选择 USB 网卡,这样网卡随便插哪个 USB 口都可以直通进去。
USB 网卡就是几块钱包邮的百兆网卡,也能够免驱使用~
命名 eth1
默认情况下 USB 网卡的名字很长,这里将它命名为 eth1 方便后续操作
创建 /etc/systemd/network/10-usb-eth1.link 文件,填入以下内容
[Match]
MACAddress=e0:4e:7a:96:43:f1
[Link]
Name=eth1DHCP
USB 网卡连接的是移动,直接 DHCP 就好了。
创建 /etc/systemd/network/20-eth1.network 文件,填入以下内容
[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 伪装,这样就不用在光猫上配置静态路由了(毕竟配置静态路由需要超密)。
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADEufw
移动的光猫没法单独控制 IPv6 防火墙的规则,所以关闭 IPv6 防火墙后,安全起见,再给虚拟机安一个 ufw。
安装完需要开启 ufw 默认路由转发策略,否则就没法借助这台虚拟机访问 192.168.0.0/24 这个网段了。
编辑 /etc/default/ufw,将 DEFAULT_FORWARD_POLICY 修改为 ACCEPT
DEFAULT_FORWARD_POLICY="ACCEPT"接着再放行 10.0.0.0/24,不然 SSH 就连不上了~
ufw allow from 10.0.0.0/24收尾
最后再将以上命令做个持久化,重启后也能生效~
偷个懒,直接加到 /etc/rc.local 中开机自启
#!/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 线路等等。
即便是这台虚拟机关机、重启,也不影响两边的网络~



