Re: [分享] 用Wireguard+OSPF建立Site to Site

楼主: AKSN74 (AKS-74n)   2022-12-02 10:58:50
这边就多补充一些OSPF上的做法,同时稍微解释下部分问题的原因与解法
WireGuard的Allowed Address问题
: 不过建立这个之前,有几点需要注意:
: 1. 如果同时有多个Site要串,强烈建议每一个Site都另外用独立的WireGuard接口,
: WireGuard的IP网段以及Port号也做区隔
: 2. 单纯做终端连回(透过手机、电脑连回)的也不要跟做Site的WireGuard接口共用。
: 3. 部分RouterOS设备可能会有WireGuard的subnet设为25以上时会无法连线的状况。
: 4. 两端的区网网段不重叠
主要就1跟2的部分解释
就Mikrotik官方论坛上的说法:https://bit.ly/3ippoB7
简单来说,WireGuard会根据每一个Peer的Allowed Address来判定目标封包要发给谁
只要封包内的目标IP与Peer的Allowed Address规则符合,就会把封包发到这个Peer
但这是根据优先级去判定的
这会造成如果Peer在主路由端的允许位址直接设定0.0.0.0/0,所有的封包只给这个Peer
在同一个WG接口的其他Peer就会收不到主路由端发出的封包
变成这些Peer虽然成功连上WG,但都没办法VPN上网或者存取主路由端的Site
而解法是在主路由端,Allowed Address不要设0.0.0.0/0,依旧设定子路由端的WG接口IP
并且多增加224.0.0.0/24以及子路由端的区网网段
https://i.imgur.com/RIkXc5Q.png
(注:图片是设定224.0.0.0/8,但其实设定/24也可)
加入224.0.0.X的原因是OSPF在broadcast与ptp网络类型下
固定会使用224.0.0.5这个广播IP来沟通 (broadcast可能还会多用224.0.0.6)
https://i.imgur.com/v9CXY0k.png
因此要确保广播封包不会被WG给挡掉
而增加子路由端的区网网段则是确保发到子路由端的封包也不会被WG阻挡
另外,子路由端的Allowed Address依旧维持0.0.0.0/0的设定
而若为一般的Client(电脑、手机等),在主路由端则只要加入Client的WG接口IP即可
https://i.imgur.com/q0MBxTx.png
这样一来就解决了第二点的问题,一个WG接口同时可以让一个Site以及多个Client连线
但若要加入额外的Site,还是得另外用一个WG接口来连线
毕竟还是有224.0.0.X的发送问题
而且另外建立接口给Site使用,就管理上来说也比较能够区分与利用
例如想要对特定Site做些控管的话就直接对该WG接口做调整即可
让子路由端透过主路由对外
那在WireGuard+OSPF之下,要怎么让子路由端的对外完全透过主路由端出去呢?
这就会需要用到路由规则的部分了,以下这些设定全都在子路由端操作
1. 到Routing→Tables,建立一个新的Table,名称自订,FIB打勾
https://i.imgur.com/CiESy2w.png
2. 到Routing→Rules,建立三条规则,Dst Adress分别输入Class A、B、C的私有网段
也就是10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
其他设定都维持不变
https://i.imgur.com/sFgk8p4.png
这么做的用意是避免连线到区网IP时,也全都跑到主路由端的对外连线去
3. 接着再新增一个规则,Src Address设为子路由端分享器本身的区网IP(记得加prefix)
Table则修改为刚刚新建立的Table名称
https://i.imgur.com/LGrJbD6.png
4. 最后到IP→Route,复制任一笔OSPF产生的路由,然后把Dst Address改成0.0.0.0/0
Routing Table则改成与第三点一样的Table
https://i.imgur.com/czSJd9N.png
然后就可以连到myip去测试了,没有设错的话对外就会变成是主路由端的对外IP
若要暂停透过WireGuard对外,只需要进IP→Route,把该笔路由规则停用即可
另外在第三点的部分,设定分享器本身的IP上去,是让该网段的对外都走VPN出去
如果只想针对特定的设备走VPN出去的话,只需要把Src Address改成该设备的区网IP即可
要增加其他设备则是再建立规则,并一样设定设备的区网IP
加入额外的Site进OSPF
至于要怎么加入额外的Site进OSPF,也很简单
在两端都建立好WireGuard的连线、子路由端设定好OSPF资讯后
把该Site使用的WireGuard接口加入进主路由端的Instance Template内即可
https://i.imgur.com/Amnv6hL.png
设定没问题的情况下,Neighbor就会自动多一笔
https://i.imgur.com/nDZhGER.png
就可以测试看看所有Site之间的区网是否能够互通
以上,就目前WireGuard+OSPF做Site to Site的部分做一个纪录给各位参考
作者: goldie (阿良)   2022-12-03 21:26:00
帮推
作者: mengmengcats (流浪橘白猫)   2022-12-04 08:47:00

Links booklink

Contact Us: admin [ a t ] ucptt.com