Login

Navigation

MikroTik RouterOS 7 Site to Site WireGuard 隧道

Cover.jpg

前言:
繼上次繼續折騰迅雷賺錢寶 PRO (二代) -- Wire­Guard的安裝與使用 後,今次在MikroTik Router(要7.0或以上版本)實現Site to Site WireGuard 隧道。
目錄內容:

Site to Site 隧道原理和優點
Site to Site 隧道 經常應用在不同地理位置的公司分部(Branch)間通信,因為不同地方的分部可能需要持續訪問和使用公司總部內部網路資源(如伺服器資料存取)。利用Site to Site 隧道,可以安全地將公司網路與各分部辦公室連接起來,以便作為單個網路與相互之間進行通信及共享資源。

相對於傳統的IPsec VPN連線方式,WireGuardSite to Site的設定上更為簡便及高效。到訪問官方網站了解更多資訊。

WireGuard 界面配置

如上圖示,两端辦公室(Office1 和 Office2)已經配置好上網,所有的電腦及裝置都位於路由器後面。

Office1Office2
Public IP20.13.3.9820.13.3.97
Internal IP11.1.1.0/2412.2.2.0/24

左邊為Office1, 右邊為Office2

2022-06-01_163202.png

在两端辦公室的MikroTik RouterOS路由器,分別新增WireGuard的網絡界面,按「Apply」會自動生成私鑰(Private Key)和公鑰(Public Key)。

两端對等(Peer) 的配置

2022-06-01_163658.png

左邊為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地址配置

2022-06-01_163848.png

分別新增及配置WireGuard界面的IP地址

左邊為Office1,右邊為Office2

Office1Office2
10.255.255.1/3010.255.255.2/30

靜態路由配置

2022-06-01_165829.png

配面靜態路由,是要告訴路由器,在訪問指定網段時要經過指定Next Hop IP Address

選項說明
Dst. Address:訪問指定網段,如Office1要訪問Office2內部網段是12.2.2.0/24
Gateway:Next Hop IP Address,也是對方的WireGuard界面IP地址

2022-06-01_170938.png

两端辦公室(Office1 和 Office2)的WireGuard Site to Site 隧道已經配置好了,雙方的電腦及裝置現在都可以互相通信。

防火牆配置(**可選**)

因為MikrotikCHR版本RouterOS預設的防火牆沒有建立任何規則(rule),所以WireGuard Site to Site 隧道是沒有被防火牆阻隔。

但基於安全理由,還是強烈建議部署MikroTik RouterOS 7 防火墻基礎設定,後根據以下圖示加入「input」鏈并「accept」允許流量。

2022-06-01_171158.png

選項說明
Chain:選取input鏈,為進入的流量
Protocol:選取UDPWireGuard 通過 UDP 封裝 IP 數據包
Dst, Port:預設端口是 13231
Action:動作是accept,即允許流量通過

另外,轉發的規則(即forward 鏈)也可能會限制子網段間的通信,所以WireGuard Site to Site 隧道是的網段不能互通時, 需要加入下圖2條規則。

2022-06-01_171657.png

選項說明
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)

[[email protected]] > 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)

[[email protected]] > 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.0

Office2:

/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=10

Office2:

/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:

[[email protected]] > 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

[[email protected]] > 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  835us

Office2:

[[email protected]] > 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

[[email protected]] > 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=udp

Office2:

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/24

Office2:

/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 SiteWireGuard 隧道部署完成後,不再需要在 Internet 開放伺服器的任何端口。可隨時另一邊訪問內部資源就好像在網內(LAN)一樣方便又安全。

此外「两端對等(Peer) 的配置」內,WireGuard的網段

10.255.255.0/30也需要放行才可以實現互通。而Mikrotik的官方網站文檔沒有提及,不知道是否版本問題。

參考資料:
相關內容: