[RouterOS] wireguard 架設教學+補充

black hardwares on data server room
Photo by Brett Sayles on Pexels.com

之前有轉載備份Site to Site,最近有需求是Client to Site

是使用Android

於是參考這篇做法:https://omega.idv.tw/kdb120/viewthread.php?forumid=67&goto=lastpost

但都設定好之後一直沒有流量進來,連三個FW規則UDP packet都沒半個進來

後來發現是Android APP端這段敘述要改一下
Peer
Public key 填入 RouserOS 的 xJftGuKH/AF322qwpMPr/phuthcetYwT/20yzjIk7RA=
終端點 填入外網IP 114.35.199.168:13231
允許的 IPs 填入 10.0.1.0/24 ->這裡應該要填0.0.0.0/0,才會有流量往端點送

原論壇無法註冊回復,所以我就自己打一篇筆記下來~~~

也可參考:https://www.77bx.com/322.html


以下為原文轉載:

RouterOS 升級到 v7 版本後內建支援 WireGuard 喔~
走 UDP 協定~

官網
https://www.wireguard.com

開放原始碼
https://github.com/WireGuard

Client 端
https://www.wireguard.com/install/
Windows
https://download.wireguard.com/windows-client/wireguard-installer.exe
Android
https://play.google.com/store/apps/details?id=com.wireguard.android
iOS
https://apps.apple.com/app/wireguard/id1441195209
macOS
https://apps.apple.com/app/wireguard/id1451685025


接下來是 RouterOS 上的設定教學

WireGuard 預設是走 UDP 13231
我的內網網段是 10.0.1.0/24
WireGuard 網段 10.0.2.0/24
外網是 pppoe-out1 ,IP 是 114.35.199.168

先開防火牆設定
IP -> Firewall -> Filter Rules -> + 新增規則 -> General ->
Chain: input
Protocol: 17 (udp)
Dst. Port: 13231
In. Interdace: pppoe-out1

Action -> Action: accept -> OK


接下來還是新增規則讓 10.0.1.0/24 與 10.0.2.0/24 可以互連
IP -> Firewall -> Filter Rules -> + 新增規則 -> General ->
Chain: forward
Src. Address: 10.0.1.0/24
Dst. Address: 10.0.2.0/24

Action -> Action: accept -> OK


IP -> Firewall -> Filter Rules -> + 新增規則 -> General ->
Chain: forward
Src. Address: 10.0.2.0/24
Dst. Address: 10.0.1.0/24

Action -> Action: accept -> OK



再來是 WireGuard 的設定
WireGuard -> WireGuard -> 按下 + 新增 -> General ->
Name: 自訂,這裡是 wireguard1
MTU: 1420 預設值即可
Listen Port: 13231 預設值即可
-> OK

我們滑鼠左鍵點兩下剛剛建立的 wireguard1 在 Public Key: 滑鼠右鍵點一下 Copy all
這一串 Public Key 等等會用到
xJftGuKH/AF322qwpMPr/phuthcetYwT/20yzjIk7RA=



最後要設定 Address List 不然連線不會通~
IP -> Addresses -> Address List -> + 新增 -> New Address
Address: 10.0.2.0/24
Interface: wireguard1
-> OK



Android 手機的設定
開啟已安裝好的 WireGuard 程式 -> 右下角的 + 按下去

選擇 從空白開始建立


界面
Name 自訂 我填 wireguard1
Private key 按下右邊的重置符號會自動生成,包含 Public key
複製 Public Key 等等會使用到 bt5Bcc2gYcA7WNOGk13UD0Lq2/7SE6vDht+KB/Ku+18=
WireGuard 網段位置我定義 10.0.2.2/32
監聽連接埠 13231

Peer
Public key 填入 RouserOS 的 xJftGuKH/AF322qwpMPr/phuthcetYwT/20yzjIk7RA=
終端點 填入外網IP 114.35.199.168:13231
允許的 IPs 填入 10.0.1.0/24



回到 RouterOS 上 WireGuard 的設定
WireGuard -> Peer -> + 新增 ->
Public Key: 填入 Android 手機的 Public Key: bt5Bcc2gYcA7WNOGk13UD0Lq2/7SE6vDht+KB/Ku+18=
Allowed Address: 填入 10.0.2.2/32 剛剛在 Android 手機的設定值
-> OK


手機上右滑啟動 wireguard1 之後就可以連到內網囉~

手機上 允許的 IPs 填入 10.0.1.0/24 代表 10.0.1 的網段連線都透過 VPN wireguard1 來連線

要設定第二個裝置的話方式一樣,只是記得 10.0.2.2/32 要改成 10.0.2.3/32 不要有衝突就好以此類推~
RouterOS 上 WireGuard 只要新增 Peer ,Public Key 與 Allowed Address 要對應新的裝置
新裝置 界面 與 Peer 都要設定~


Q1:我設定完成後確認第一個設備手機可以通,但是設定完第二個設備 iPad 後可以通,但是換成手機不通了?怎麼辦?
A1:主要是網段設定的問題,如果沒有照教學使用 /32 而是設定 .0/24 的話就會有這個問題。
因為第一個撥通的設備是 Peer .0/24 整段取走了,第二個設備撥進來當然無法接收所以才不會通~
內網網段改為 /32 就沒問題囉~


原文轉載,Linux部分:

(第 2 篇)

在 Ubuntu 20.04 底下安裝沒有 GUI 介面可以操作,所以來個教學~
我是在 Hyper-V 底下測試的~首先將 Ubuntu 解析度調整為 1920×1080
開啟 Trtminal -> 編輯 gurb
sudo nano /etc/default/grub


GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
修改為
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash video=hyperv_fb:1920×1080″

儲存後先重開機
sudo reboot
再更新 grub 不然會卡住要強制重啟~
sudo update-grub
更新完 grub 後再重新開機
sudo reboot
視窗就會變成 1920×1080 囉~

RDP 工具首推 remmina

安裝 WireGuard
sudo apt install wireguard

切換到 root 權限
sudo -i

建立 wireguard 目錄 上面安裝已建立可以略過
mkdir -m 0700 /etc/wireguard/

切換目錄
cd /etc/wireguard/

建立 privatekey 與 publickey
umask 077; wg genkey | tee privatekey | wg pubkey > publickey

查看是否有建立
ls -l p*

查看 privatekey 等等備用
cat privatekey
xxx

設定 WireGuard VPN 設定檔
sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = xxx
Address = 10.0.2.4/32
ListenPort = 13231

[Peer]
## RoutesOS 上的 public key ##
PublicKey = xJftGuKH/AF322qwpMPr/phuthcetYwT/20yzjIk7RA=
AllowedIPs = 10.0.1.0/24
Endpoint = 114.35.199.168:13231


防火牆開啟 upd 13231
ufw allow 13231/udp

我們加入開機後自動啟動 WireGuard service 先手動並看狀態
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0

查看 publickey
wg
將 public key 記錄下來備用例如 xxxxxx=

查看我們的 wg0 ip 是不是我們設定的位置
ip a show wg0

最後在 RouterOS -> WireGuard -> WireGuard -> Peer -> + 新增 ->
Public Key: 填入 Ubuntu 的 Public Key: xxxxxx=
Allowed Address: 填入 10.0.2.4/32 剛剛在 Ubuntu 的設定值
-> OK

現在 Ubuntu 就可以連到 10.0.1.0/24 網段囉~

要關閉的話下 sudo systemctl stop wg-quick@wg0


原文轉載,Windows部分:

(第 3 篇)

Windows 10 建立教學

下載 Client 安裝
Windows
https://download.wireguard.com/windows-client/wireguard-installer.exe

安裝完畢後開啟程式 -> 新增隧道 -> 新增隧道精靈

會看到預設的公鑰與私鑰


名稱自訂

[Interface]
PrivateKey = xxx
Address = 10.0.2.5/32
ListenPort = 13231

[Peer]
## RoutesOS 上的 public key ##
PublicKey = xJftGuKH/AF322qwpMPr/phuthcetYwT/20yzjIk7RA=
AllowedIPs = 10.0.1.0/24
Endpoint = 114.35.199.168:13231
按下儲存



在 RouterOS -> WireGuard -> WireGuard -> Peer -> + 新增 ->
Public Key: 填入 Windows 10 的 Public Key: xxxxxx=
Allowed Address: 填入 10.0.2.5/32 剛剛在 Windows 10 的設定值
-> OK


現在 Windows 10 就可以連到 10.0.1.0/24 網段囉~
回到 Windows 10 的 WireGuard 介面 -> 按下 連線


就能看到如下連上囉~


Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料