前言

RouterOS 7 支援了 ZeroTier,不過僅在 ARM 裝置上支援,不失為一個遺憾。

研究了一下,利用同樣是 RouterOS 7 支援的 Container,成功使用 ZeroTier route 到內網,實現了一個好方便的 VPN owo

需求

  • x86/CHR 且開啟 Container 功能的 RouterOS

目標

我們的目標是讓 ZeroTier 發放 10.121.125.128/26,並成功連接到 10.121.127.0/24 的內網。

RouterOS 為 10.121.127.0/24 的 Gateway。

RouterOS 與 ZeroTier Container 以 192.168.212.1/30 <-> 192.168.21.2/30 連接。

ZeroTier Container 預計會拿到 10.121.125.190/26 的 IP。

實作

首先,我們建立一個 vETH,用於連接 Container 與 ROS:

1
2
/interface/veth add address=192.168.212.2/30 gateway=192.168.212.1 name=zerotier
/ip/address add address=192.168.212.1/30 interface=zerotier

設定 NAT,讓 Container 可以上網。

1
/ip/firewall/nat add action=masquerade chain=srcnat dst-address=!10.121.127.0/24 src-address=192.168.212.2

設定 Static Route,讓 10.121.127.0/24 的設備回程走得通:

1
/ip/route add dst-address=10.121.125.128/26 gateway=192.168.212.2 routing-table=main

建立 Container:

1
2
/container/config set registry-url=https://registry-1.docker.io tmpdir=docker
/container add remote-image="zerotier/zerotier" interface=zerotier start-on-boot=yes

接著,我們要在 ZeroTier 上新增一個網路。

IPv4 Auto-Assign 選擇 Advanced,讓他發放 10.121.125.129 -> 10.121.125.190 的 IP。

Managed Routes Add Route。

Destination Via Comment
10.121.125.128/26 (留空) 新增 LAN
10.121.127.0/24 10.121.125.190 到內網的 Route

接著,在 ROS 上執行

1
2
/container/shell <container id,第一次使用應該是 0>
zerotier-cli join <id>

應該就能在 ZeroTier 網站上看到設備加入。

手動指定 IP 為 10.121.125.190,就大功告成了!

此時另一台設備加入,應該就能連接到 10.121.127.0/24 的內網了,收工。