前言
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 | /interface/veth add address=192.168.212.2/30 gateway=192.168.212.1 name=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 | /container/config set registry-url=https://registry-1.docker.io tmpdir=docker |
接著,我們要在 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 | /container/shell <container id,第一次使用應該是 0> |
應該就能在 ZeroTier 網站上看到設備加入。
手動指定 IP 為 10.121.125.190
,就大功告成了!
此時另一台設備加入,應該就能連接到 10.121.127.0/24
的內網了,收工。