最近家里拉了两根宽带,一根是电信,另一根也是电信,电信宽带都有公网IP,于是一直在想怎么实现两根宽带的公网IP都可以用来接入家里RouterOS上的Wireguard
Wireguard并不遵循源进源出,这会导致在多上游的情况下,只有其中一个上游可以用,因为使用了默认路由表的默认路由(参考:wireguard can’t handshake with mwan3 · Issue #9538 · openwrt/packages · GitHub)
于是我在各处搜索 终于研究出了怎么实现源进源出 这里记录一下
参考了routeros7 的源进源出的 bug - V2EX和MikroTik7做单线多拨负载均衡
下面开始正文:
首先情况是有两个PPPoE链接

首先在Routing > Tables 创建两个Table 记得打开FIB

然后到 IP > Route里面 右上角选择你刚才创建的两个Table

如图所示添加路由

记得另一个Table也要按照这个添加 Gateway填另一个PPPoE链接
然后使用这段命令创建Mangle实现源进源出
1 2 3 4 5
| /ip firewall mangle add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new in-interface=[改成你的PPPoE链接] new-connection-mark=conn_wan1 passthrough=yes add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new in-interface=[改成你的PPPoE链接] new-connection-mark=conn_wan2 passthrough=yes add action=mark-routing chain=output connection-mark=conn_wan1 new-routing-mark=to_wan1(这里记得修改成你刚才创建的Table) passthrough=yes add action=mark-routing chain=output connection-mark=conn_wan2 new-routing-mark=to_wan2(这里记得修改成你刚才创建的Table) passthrough=yes
|
然后要设置Routing Rule
1 2 3
| /routing rule add action=lookup comment=pppoe-out1 disabled=no src-address=你的 pppoe-out1 的公网地址 table=(这里记得修改成你刚才创建的Table) add action=lookup comment=pppoe-out2 disabled=no src-address=你的 pppoe-out2 的公网地址 table=(这里记得修改成你刚才创建的另一个Table)
|
这样就大功告成了。
注意:由于使用了Mangle 所以需要关闭Fasttrack