MikroTik RouterOS 7 Site to Site WireGuard 隧道
| 前言: |
繼上次繼續折騰迅雷賺錢寶 PRO (二代) -- WireGuard的安裝與使用 後,今次在MikroTik Router(要7.0或以上版本)實現Site to SiteWireGuard隧道。
| 目錄內容: |
| Site to Site 隧道原理和優點 |
Site to Site隧道 經常應用在不同地理位置的公司分部(Branch)間通信,因為不同地方的分部可能需要持續訪問和使用公司總部內部網路資源(如伺服器資料存取)。利用Site to Site隧道,可以安全地將公司網路與各分部辦公室連接起來,以便作為單個網路與相互之間進行通信及共享資源。相對於傳統的
IPsec VPN連線方式,WireGuard在Site to Site的設定上更為簡便及高效。到訪問官方網站了解更多資訊。
| WireGuard 界面配置 |
如上圖示,两端辦公室(Office1 和 Office2)已經配置好上網,所有的電腦及裝置都位於路由器後面。
| Office1 | Office2 | |
|---|---|---|
| Public IP | 20.13.3.98 | 20.13.3.97 |
| Internal IP | 11.1.1.0/24 | 12.2.2.0/24 |
左邊為Office1, 右邊為Office2
在两端辦公室的MikroTik RouterOS路由器,分別新增WireGuard的網絡界面,按「Apply」會自動生成私鑰(Private Key)和公鑰(Public Key)。
| 两端對等(Peer) 的配置 |
左邊為Office1,右邊為Office2,分別新增及配置Peers,將對方的公鑰(Public Key)和WireGuard的界面(Interface)捆綁在一起用於相互握手。
| 選項 | 說明 |
|---|---|
| Interface: | 選取指定的WireGuard界面,如新建的wireguard1 |
| Public Key: | 對方路由器的WireGuard公鑰 |
| Endpoint: | 對方路由器的公網IP地址,也可以是Domain網址 |
| Endpoint Port: | 預設端口是13231,可自行更改 |
| Allowed Address: | 允許放行及訪問的網段(對方),如果沒有限制, 可允許任意網段 0.0.0.0/0 |
圖示中除了對方路由器的Internal IP要放行外,WireGuard的網段(這裡是10.255.255.0/30)也需要放行才可以實現互通。
| WireGuard 界面IP地址配置 |
分別新增及配置WireGuard界面的IP地址
左邊為Office1,右邊為Office2
| Office1 | Office2 |
|---|---|
| 10.255.255.1/30 | 10.255.255.2/30 |
| 靜態路由配置 |
配面靜態路由,是要告訴路由器,在訪問指定網段時要經過指定Next Hop IP Address
| 選項 | 說明 |
|---|---|
| Dst. Address: | 訪問指定網段,如Office1要訪問Office2內部網段是12.2.2.0/24 |
| Gateway: | 即Next Hop IP Address,也是對方的WireGuard界面IP地址 |
两端辦公室(Office1 和 Office2)的WireGuard Site to Site 隧道已經配置好了,雙方的電腦及裝置現在都可以互相通信。
| 防火牆配置(**可選**) |
因為Mikrotik的CHR版本RouterOS預設的防火牆沒有建立任何規則(rule),所以WireGuard Site to Site 隧道是沒有被防火牆阻隔。
但基於安全理由,還是強烈建議部署MikroTik RouterOS 7 防火墻基礎設定,後根據以下圖示加入「input」鏈并「accept」允許流量。
| 選項 | 說明 |
|---|---|
| Chain: | 選取input鏈,為進入的流量 |
| Protocol: | 選取UDP,WireGuard 通過 UDP 封裝 IP 數據包 |
| Dst, Port: | 預設端口是 13231 |
| Action: | 動作是accept,即允許流量通過 |
另外,轉發的規則(即forward 鏈)也可能會限制子網段間的通信,所以WireGuard Site to Site 隧道是的網段不能互通時, 需要加入下圖2條規則。
| 選項 | 說明 |
|---|---|
| Chain: | 選取forward鏈,為轉發的流量 |
| Src, Address: | 來源地址(網段) |
| Dst, Address: | 目標地址(網段) |
| Action: | 動作是accept,即允許流量通過 |
備註: 所有允許的規則(Action: accept),都要在丟棄(Drop)或拒絕(Reject)的規則前才會生效。
| 命令行的配置方式 |
使用另一種命令行的方式部署WireGuard Site to Site 隧道更為簡便。WireGuard 界面配置
Office1:
/interface/wireguard
add listen-port=13231 name=wireguard1查看生成私鑰(Private Key)和公鑰(Public Key)
[admin@Office01] > interface/wireguard/print
Flags: X - disabled; R - running
0 R name="wireguard1" mtu=1420 listen-port=13231
private-key="6BwF0Qvcvvg/WbIQQwrp1QXK+dsrsd+TA8rh/aHwr04="
public-key="KJ3ZxTX6k1Cyh0zZnCfsMPL9wGTVkANg6F4QQIk0URY="Office2:
/interface/wireguard
add listen-port=13231 name=wireguard1查看生成私鑰(Private Key)和公鑰(Public Key)
[admin@Office02] > interface/wireguard/print
Flags: X - disabled; R - running
0 R name="wireguard1" mtu=1420 listen-port=13231
private-key="+Ot0jrUjJEFWPWbGG022hMWAm9EkNGaOIBye0oF/TWw="
public-key="qiy3BmtHAolEkYdbusl2T+jcO9LmM8Nr3PPmyXlWQGo="两端對等(Peer) 的配置
Office1:
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=20.13.3.97 endpoint-port=13231 \
interface=wireguard1 public-key=\
"qiy3BmtHAolEkYdbusl2T+jcO9LmM8Nr3PPmyXlWQGo="Office2:
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=20.13.3.98 endpoint-port=13231 \
interface=wireguard1 public-key=\
"KJ3ZxTX6k1Cyh0zZnCfsMPL9wGTVkANg6F4QQIk0URY="WireGuard 界面IP地址配置
Office1:
/ip address
add address=11.1.1.1/24 interface=LAN network=11.1.1.0
add address=10.255.255.1/30 interface=wireguard1 network=10.255.255.0Office2:
/ip address
add address=12.2.2.1/24 interface=LAN network=12.2.2.0
add address=10.255.255.2/30 interface=wireguard1 network=10.255.255.0靜態路由配置
Office1:
/ip route
add disabled=no distance=1 dst-address=12.2.2.0/24 gateway=10.255.255.2 pref-src=0.0.0.0 \
routing-table=main scope=30 suppress-hw-offload=no target-scope=10Office2:
/ip route
add disabled=no distance=1 dst-address=11.1.1.0/24 gateway=10.255.255.1 pref-src=0.0.0.0 routing-table=main \
scope=30 suppress-hw-offload=no target-scope=10两端辦公室(Office1 和 Office2)的WireGuard Site to Site 隧道互相通信測試。
Office1:
[admin@Office01] > ping 12.2.2.1 count=2
Columns: SEQ, HOST, SIZE, TTL, TIME
SEQ HOST SIZE TTL TIME
0 12.2.2.1 56 64 1ms347us
1 12.2.2.1 56 64 926us
[admin@Office01] > ping 10.255.255.2 count=2
Columns: SEQ, HOST, SIZE, TTL, TIME
SEQ HOST SIZE TTL TIME
0 10.255.255.2 56 64 1ms156us
1 10.255.255.2 56 64 835usOffice2:
[admin@Office02] > ping 11.1.1.1 count=2
Columns: SEQ, HOST, SIZE, TTL, TIME
SEQ HOST SIZE TTL TIME
0 11.1.1.1 56 64 1ms153us
1 11.1.1.1 56 64 921us
[admin@Office02] > ping 10.255.255.1 count=2
Columns: SEQ, HOST, SIZE, TTL, TIME
SEQ HOST SIZE TTL TIME
0 10.255.255.1 56 64 1ms52us
1 10.255.255.1 56 64 1ms20us防火牆配置(可選)
加入「input」鏈并「accept」允許流量。
Office1:
/ip firewall filter
add action=accept chain=input dst-port=13231 protocol=udpOffice2:
bash
/ip firewal filter
add action=accept chain=input dst-port=13231 protocol=udp加入2條轉發的規則(即「forward 」鏈)允許子網段間的通信
Office1:
/ip firewall filter
add action=accept chain=forward dst-address=12.2.2.0/24 src-address=11.1.1.0/24
add action=accept chain=forward dst-address=11.1.1.0/24 src-address=12.2.2.0/24Office2:
/ip firewall filter
add action=accept chain=forward dst-address=11.1.1.0/24 src-address=12.2.2.0/24
add action=accept chain=forward dst-address=12.2.2.0/24 src-address=11.1.1.0/24| 結語: |
Site to Site的WireGuard隧道部署完成後,不再需要在Internet開放伺服器的任何端口。可隨時另一邊訪問內部資源就好像在網內(LAN)一樣方便又安全。此外「两端對等(Peer) 的配置」內,
WireGuard的網段10.255.255.0/30也需要放行才可以實現互通。而Mikrotik的官方網站文檔沒有提及,不知道是否版本問題。
| 參考資料: |
| 相關內容: |







有這篇真好,照官方教學沒成功過