雖然ROS推出這個已經算滿久的,這邊還是來寫一個吧
首先,WireGuard是2020年正式上線的VPN功能,從Linux Kernel 5.6開始內建支援
本身也是一種加密性質的VPN,但比起其他加密的VPN來說有以下幾個特點:
1. 由於Kernel的內建支援,VPN效率與整合性比起其他加密VPN好些,並且可以在路由器上普遍支援
2. OpenVPN與IPSec等都需要先建立金鑰與憑證,但WireGuard不需要如此麻煩
3. WireGuard沒有帳密機制,所有驗證都是透過Public Key
由於都是使用兩端的Public Key進行驗證的緣故,WireGuard在初始設定與保存設定上會稍微麻煩些
其設定方式類似OpenVPN,且在手機以及電腦上都要另外安裝軟體
與IPSec相比則更為簡單外,不同裝置上的相容性也很高
而在連線穩定上,個人目前測試幾天下來,也較OpenVPN穩定
而RouterOS也在v7.1版開始支援WireGuard
另外除了RouterOS外,部分廠牌的較新款Router比如ASUS也都開始支援WireGuard
有鑑於每個家庭的私有雲硬碟越來越多,網路速度也越來越快
但這陣子各類勒索軟體的威脅也不斷增加,透過VPN連回私有硬碟需求也是越來越多
多學習另一種VPN連線方式也是不錯的
OK,那麼開始吧,這邊會分為Server端、Client、手機端、還有電腦端的設定方式
Server端(RouterOS)
進入WireGuard功能,這邊先建立一個WireGuard介面
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-0b13f2303500d243eb385279cae6241c.png)
依序選項是:
Name:介面名稱
Port:要給WireGuard介面使用的Port號碼
Private & Public Key:WireGuard伺服器端使用的金鑰。這邊可選擇不填,不填的話會自動產生Key。
WireGuard在連接時,是透過虛擬介面的方式去做傳輸,類似於OpenVPN的方式
因此建立好WireGuard介面後,還需要給它一個網段與IP
可到Addresses新增一個IP與網段給這個介面,這邊假設給的IP網段是192.168.60.1/24
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-f3fb02102dbf75b3d7da680e0fbf5eb7.png)
之後,先建立一個Firewall規則,允許WireGuard服務通過
Chain=input Protocol=UDP Port=<建立WG時所使用的port> Action=accept
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-62a04efaf1b7df59c9e03076d3840ea1.png)
回到WG,把介面所產生的Public Key給複製起來,這個等等會需要設定在Client端上
Client端(RouterOS)
進入到WireGuard,照Server端一樣的做法建立一個WG介面並產生Public Key
並且同樣設定一組IP給WG介面,但網段必須相同,且IP不重複
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-0de19939cb09b2b7b1d4b3005c704459.png)
接著切換到Peers頁籤,建立一個新的Peer
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-44d7769f390ba160a58eb6e854f3896a.png)
其依序是
Interface:此Peer使用的WG介面名稱
Public Key:遠端的Public Key資訊。這邊請填入Server端WG的Public Key資訊
Endpoint:遠端連線位址。這邊要輸入Server端的連線IP或者網址
Endpoint Port:遠端連線埠號。輸入跟Server端一樣的Port號即可
Allowed Address:設定連上後要使用WG訪問的IP範圍。這個指的是當連上Server端後要訪問的IP網段,如果設定為0.0.0.0/0則表示允許所有連線都走WG。而這邊的範例是設定連回Server端環境存取區網設備,因此設定的是Server端的區網網段。
Preshared Key:除了Public Key外還可以額外附加連線密碼,以確保Public Key在未知情況下洩漏時,確保不會被盜用VPN連線。
Persistent Keepalive:設定連線確認間隔。此為設定WG固定間隔多久時間發一次連線確認封包,一般設定60~90秒左右即可。
Client設定完成後,接著換Server端也要為這個Client建立一個Peer
建立方式與Client端設定的方式一樣,只是有幾個設定需要轉換:
Public Key:這邊要把Client端所產生的Public Key給填入
Endpoint & Endpoint Port:由於只是要從外面連回家的關係,故Server端不需要設定這些
Allowed Address:這邊是設定Client端會使用哪一個WG介面的IP連入。由於Client端已經設定192.168.60.2,因此這邊也要跟著設定一樣的IP。
Peer設定好後,接著要設定固定路由,把連接到Server端區網網段都導向到透過WG來走
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-127776815877260210117f0dd9e14e73.png)
由於RouterOS到目前v7.5都還沒有任何WG的Log訊息,因此需要實際測試連線才知道有沒有通
可以先透過內建的Ping工具,測試有沒有辦法Ping到Server端的區網IP
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-4beeae0c88d8389e963f5456c2306452.png)
可以Ping到後,接著再到Firewall建立一個Source NAT規則,設定要連線到Server端區網的IP全都透過WG的IP
![[RouterOS] 設定WireGuard VPN](https://attach.mobile01.com/attach/202209/mobile01-abc742ac7b306ec45d149593267549ad.png)
這樣Client端連接RouterOS的電腦就都可以連到家中的區網了
這個是單純連回家的部分,下面兩個回應會再講如何設定Site to Site以及電腦/手機端的設定