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