MikroTik RouterOS 7 Site to Site WireGuard 隧道
MikroTik RouterOS 7 Site to Site WireGuard 隧道Cover.jpg前言: 繼上次繼續折騰迅雷賺錢寶 PRO (二代) -- Wire­Guard的安裝與使用 後，今次在MikroTik Router(要7.0或以上版本)實現Site to Site WireGuard 隧道。目錄內容: Site to Site 隧道原理和優點WireGuard 界面配置两端對等(Peer) 的配置WireGuard 界面IP地址配置靜態路由配置防火牆配置(可選)命令行的配置方式Site to Site 隧道原理和優點 Site to Site 隧道 經常應用在不同地理位置的公司分部(Branch)間通信，因為不同地方的分部可能需要持續訪問和使用公司總部內部網路資源(如伺服器資料存取)。利用Site to Site 隧道，可以安全地將公司網路與各分部辦公室連接起來，以便作為單個網路與相互之間進行通信及共享資源。相對於傳統的IPsec VPN連線方式，WireGuard在Site to Site的設定上更為簡便及高效。到訪問官方網站了解更多資訊。WireGuard 界面配置 如上圖示，两端辦公室(Office1 和 Office2)已經配置好上網，所有的電腦及裝置都位於路由器後面。 Office1Office2Public IP20.13.3.9820.13.3.97Internal IP11.1.1.0/2412.2.2.0/24左邊為Office1, 右邊為Office22022-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界面，如新建的wireguard1Public 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，右邊為Office2Office1Office210.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/24Gateway:即Next Hop IP Address，也是對方的WireGuard界面IP地址2022-06-01_170938.png两端辦公室(Office1 和 Office2)的WireGuard Site to Site 隧道已經配置好了，雙方的電腦及裝置現在都可以互相通信。防火牆配置(**可選**) 因為Mikrotik的CHR版本RouterOS預設的防火牆沒有建立任何規則(rule)，所以WireGuard Site to Site 隧道是沒有被防火牆阻隔。但基於安全理由，還是強烈建議部署MikroTik RouterOS 7 防火墻基礎設定，後根據以下圖示加入「input」鏈并「accept」允許流量。2022-06-01_171158.png選項說明Chain:選取input鏈，為進入的流量Protocol:選取UDP，WireGuard 通過 UDP 封裝 IP 數據包Dst, Port:預設端口是 13231Action:動作是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)[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的官方網站文檔沒有提及，不知道是否版本問題。參考資料: WireGuard - RouterOS - MikroTik Documentation相關內容: 繼續折騰迅雷賺錢寶 PRO (二代) -- Wire­Guard的安裝與使用 - King Zone (kingtam.win)遷移VMware ESXi 的ova文件到 Proxmox 7.0 - King Zone (kingtam.win)MikroTik RouterOS 7 初始上網設定 - King Zone (kingtam.win)MikroTik RouterOS 7 防火墻基礎設定 - King Zone (kingtam.win)MikroTik RouterOS 7 回流問題解決方案 - King Zone (kingtam.win)