[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site

前面的文章有提到WireGuard的連接設定方式以及建立簡單的連回家中網路的設定
至於要做到Site to Site的連接方式,官方文件是選擇透過雙邊設定來達成
不過這部分其實可以透過OSPF機制來達成需求

OSPF建立Site to Site的好處

全名為Open Shortest Path First,中文名稱為開放式最短路徑優先,是一種路由協定,在不少地方都可以見到其應用。其本身包含了透過廣播封包溝通來建立雙邊連接,並且透過間隔性的廣播封包發送來確認路由連接狀態。OSPF本身有自己的通訊協定,因此不需要設定TCP與UDP的連線設置。
OSPF免去了設定固定路由,更重要的是以往雙邊的Site to Site還需要設定反向的VPN連線,若對端的對外網路不允許(比如沒有申請就不會配發真實對外IP的cable網路)就難以建立;有了OSPF,就能夠在只有其中一方設定VPN連線的情況下,建立雙邊的Site to Site連線。


注意事項

由於RouterOS問題以及WireGuard本身的限制,建立Site to Site之前,需要注意:
1. 若有多個Site要設定,則每一個Site必須建立獨立的WireGuard介面,並使用獨立的Port號以及IP網段
2. 部分RouterOS可能有WireGuard使用的網段一定要是Prefix 24的問題
3. 單純透過電腦或手機連回的WireGuard也強烈建議另外建立一個WireGuard介面
(補充:第三點有解法,可以讓同時讓一個Site以及多個Client同時存在在一個WG內,請參考此處)


WireGuard設定

可以先參考這篇的設定方式,先建立到兩台RouterOS之間的WireGuard連線即可
並且需注意,兩端Peer的Allowed Address必須設為0.0.0.0/0
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site
防火牆的設定維持開放WireGuard連入的Port即可,不需要做額外設定

之後使用RouterOS內建的ping工具,測試兩端的WireGuard IP是否能夠互通,可以的話就繼續下一步



OSPF設定

接著就來做OSPF設定。每一台分享器都需要設定一組給OSPF所使用的IP,當作是Instance的ID
這個IP本身只是識別用,並不具有連線功能,因此只要隨便設定一個沒用到的網段即可

先建立一個本地Bridge,名稱自訂,兩端都要建立
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site
之後為這個Bridge設定一組IP,這邊假設主端使用172.18.0.1
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site
而另一端也需要跟著設定,只要IP不跟主端及其他子端重複即可

之後進到Routing→Router ID,點擊+號建立。名稱自訂,而ID則輸入與Bridge相同的IP,其他的不用動。
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site

接著到Routing→OSPF,在Instance頁籤建立項目,Router ID選擇剛剛建立的ID名稱,其餘不用動。
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site

切到Areas頁面,建立一個Area,設定全都維持預設不動。
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site

最後切到Interface Template頁面,建立新的Template。Network中把主路由的區網、獨立Bridge、以及連線到子端的WireGuard介面加入
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site
這邊需要注意的是,Network Type可以設為boardcast或者是ptp,但兩端都必須一致


設定完成後,就可以直接看是否有通。切換到Neighbors頁籤,如果有連線成功的話這邊會出現對端的WireGuard IP,並且狀態是Full
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site
另外切換到子端的IP→Route頁面,可以看到自動多了幾筆路由
[RouterOS] 透過WireGuard+OSPF達成VPN Site-to-Site
只要兩端的Neighbors都有彼此紀錄,並且都有自動添加路由的話,區網兩端就可以互相連線了


補充1:讓子路由器完全透過主路由器對外

請參考本篇4F

補充2:加入另一個Site進OSPF

若要在現有OSPF加入另一個Site,兩端的WireGuard都設定好且正確連線後,只要在現有的Instance Template內加入該端的WireGuard的介面即可。需要注意每個Site都要是獨立的WireGuard介面。



以上,給一個設定上的參考
不一定正確,如果有錯誤的部分還請提醒
感謝提供這麼詳細的ros 設定
有ros就給推~~~~
難得有這領域的解說~ 先給分
讓子路由器完全透過主路由器對外

這邊另外更新一下要讓子網路端的對外全都走主網路端的出去之方式
原本在補充1上面提到的是錯誤的做法

這邊假設的情境是,帶一台小的分享器到國外
到飯店或者自己的住處,接上自己的分享器就可以直接連回家中設備以及VPN跨區

那麼WG跟OSPF都已經好的情況下,這要怎麼做呢?
這時候就要使用到Routing中的Rules功能
這邊只需要設定子路由器就可以了,不需要動到主路由器的設定


首先先將對外的Interface,根據對外網路類型看是DHCP Client介面還是PPPoE Client介面,將Add Default Route設為no或打消


並到IP→Routes手動建立一個規則,target為0.0.0.0/0、Gateway為對外連線的介面名稱,distance設定為10以上,但不要超過50

這樣前置作業完成


打開Routing→Rules,先增加dst address為LAN網段的三個規則

為何要設定這三個規則?這是要確保區網的部分不受到對外路由規則的影響

再來,到Routing→Tables,新增一個Table,名稱自訂,並且FIB要打勾


回到Routing→Rules,增加一筆規則,Source Address設為路由器本身的區網IP(記得Prefix要設對!)、Action 維持lookup,但Table請改為剛剛增加的Table名稱


最後回到IP→Routes,把其中一筆OSPF的規則點開後複製一份,把target改為0.0.0.0/0,並把Routing Table也改為剛剛建立的Table名稱,就大功告成了


接著就可以打開IP檢查網頁看看是否變成主路由器端的對外IP了
沒有要用到的時候只要將這筆路由規則停用即可

另外,如果只是要讓區網內的某台電腦單走VPN的話,在增加Routing Rules那邊,Source Address只要輸入該設備的IP即可,且不需輸入Prefix(沒輸入的情況下預設會加32)




只讓部分對外連線或網域透過主路由器對外

如果不想要全部都透過主路由,而是只有部分網域或IP透過主路由,那設定上會簡單很多
不過這就需要動到主路由端的設定了

首先開啟主路由端的IP→Route,建立一個規則,target設為指定的對外IP或網域,Gateway則一樣設為對外連線用的介面。


然後開啟Routing→OSPF,進到原先建立Site to Site用的Instance
點開裡面的Redistribute,會有好幾個確認框,將static打勾即可

這邊補充說明,Redistribute的功能是,根據選擇的路由規則性質,將OSPF主端的路由規則給分享到其他子路由端
比如這個就是將所有static的路由規則都加入到子路由器的路由表中
而我們所建立的規則也是static性質,因此會自動加入
因此就可以在子路由器的Route中看到,並且Gateway是透過WG走到主路由端

眼尖的可能會注意到,如果主路由器的對外網路是手動設定路由,也會把這筆規則也加入進來
但因為顏色是藍色的(備援狀態),因此這筆規則在子路由端實際上不會有作用
這邊補充一下上面說的多個Site或是Client要多個WireGuard介面的原因以及解法

根據官方討論區上的說法
https://forum.mikrotik.com/viewtopic.php?t=180433#p891930

簡單來說,WireGuard是透過每一個Peer的Allowed Address資訊去判定這個目標封包是屬於哪一個Peer
如果使用同一個WG介面的第一個Peer設定成0.0.0.0/0,變成所有封包都只會導向到第一個
其後續的Peer就收不到相關封包了,會變成子路由器端無論怎發都等不到主路由端回送封包的狀況


若要解決這個問題,那麼在主路由端的Allowed Address就要設定像這樣

也就是分別加入子路由器的WG IP、廣播封包的IP網段、以及子路由器的區網網段
這樣一來,這個WG介面就可以容納一個Site以及多個Client

之所以說是容納一個Site,原因是OSPF使用的是廣播封包網段通常都是224.0.0.0
另一個Site加入後也會發生廣播封包全部被導走的狀況
不過就某方面來說,每一個Site都做一個介面也算是方便管理
因此還是建議一個Site都獨立建一個WG介面
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!