使用两个 wireguard 链路聚合两个 LTE 连接以增加带宽

使用两个 wireguard 链路聚合两个 LTE 连接以增加带宽

我使用的是 Teltonika RUTX12 双 LTE cat 6 路由器,配有两张 4G sim 卡。每张 sim 卡给我大约 16mbps 的下行链路,这对我来说非常慢。购买此设备时,我以为它带有适当的链路聚合,但它只有简单的故障转移和负载平衡功能。就像一些 peplink 盒子一样

因此,我尝试使用两个 wireguard 链接自己完成此操作,并将流量与 VPS 支持结合起来。我在 reddit 上找到了类似的问题但我被困在 PBR 部分。

以下是我迄今为止执行的步骤

WWAN1 - LTE SIM1
WWAN2 - LTE SIM2

使用以下配置在同一个 VPS 上创建两个 wireguard 接口

WG0

[Interface]
Address = 10.22.22.1/24
ListenPort = 54837
Table = off
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

### Client remote_gw_wg_1
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 0.0.0.0/0

工作组1

[Interface]
Address = 10.33.33.1/24
ListenPort = 54838
Table = off
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PostUp = iptables -A FORWARD -i eth0 -o wg1 -j ACCEPT; iptables -A FORWARD -i wg1 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i eth0 -o wg1 -j ACCEPT; iptables -D FORWARD -i wg1 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

### Client remote_gw_wg_2
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 0.0.0.0/0

使用两个 wireguard 接口将路由器连接到 VPS

WG0

[Interface]
FwMark = 100
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Address = 10.22.22.2/32

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxxxxxxxxxxxx:54837
PersistentKeepalive = 20
AllowedIPs = 10.22.22.0/24

工作组1

[Interface]
FwMark = 101
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Address = 10.33.33.2/32

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxxxxxxxxxxxxxxx:54838
PersistentKeepalive = 20
AllowedIPs = 10.33.33.0/24

此后,我可以从 rutx12 ping 到 vps 以及从 vps ping 到 rutx12 的两个 wireguard 接口

然后我在 /etc/iproute2/rt_tables 上创建名为 wireguard 的路由表

#
# reserved values
#
255     local
254     main
253     default
0       unspec
144     wireguard
#
# local
#
#1      inr.ruhep

然后我向新的 wireguard 路由表添加了两个具有相同度量的默认路由

ip route add default dev wg0 table wireguard && ip route append default dev wg1 table wireguard

root@rutx12:~# ip route show table wireguard
default dev wg0 scope link
default dev wg1 scope link

然后我添加 ip 规则所有未用 fwmark 100 和 101 标记的流量使用路由表 wireguard

ip rule add not fwmark 100 lookup wireguard priority 10
ip rule add not fwmark 101 lookup wireguard priority 10

根据 reddit 帖子,我应该添加 SNAT 才能使其正常工作。但我不确定为什么需要 SNAT。首先我需要在我的 rutx12 中测试聚合带宽。

由于主路由表具有到我的 WWAN01 链接(sim1)的默认路由,Wireguard 如何利用两个 wwan 链接进行流量传输?(sim1 和 sim2)。我需要为每个链接添加静态路由吗?还是我需要具有两个公共 IP 地址的 VPS?

我在这里遗漏了什么?还有其他方法可以聚合这两个连接吗?

相关内容