ZeroTier作為開源軟體,怎麼可能不支援Linux系統呢。不錯,我在 這篇嘗試過許多Linux發行版安裝ZeroTier,連Alpine和Gentoo都能裝上了,還有什麼發行版不行的?
openSUSE Tumbleweed,這個就真的沒有受ZeroTier支援,不幸。我看網路上有人的作法是拿RHEL 9的RPM來裝,但是我不想額外加套件庫,更何況這是用其他發行版的RPM來用,我不是很喜歡這種作法。
於是就找到了zyclonite開發的 zerotier-docker專案,用Docker跑ZeroTier,用起來跟原生套件沒兩樣,照樣能夠讓裝置加入ZeroTier,進行內網穿透。
作者說他是在Fedora Silverblue (以前叫CoreOS) 測試的,因為immutable系統的設計才用Docker跑ZeroTier服務,容器裡的ZeroTier其實是跑在Alpine的映像檔上,此容器支援x86與ARM架構。
我覺得這是很有趣的構想,正好解決了特定Linux發行版沒人打包ZeroTier的問題。Docker在各大Linux的支援度可要比ZeroTier廣多了對吧?用Docker來跑ZeroTier服務也不是壞點子。
1. 安裝#
- 首先在Linux系統 安裝Docker,並設定開機自動啟動服務。
sudo systemctl enable docker
- 用以下指令跑ZeroTier容器。使用
-d
引數使其在背景執行,再用--restart
引數使容器之後開機自動啟動。
sudo docker run -d \
--restart unless-stopped \
--name zerotier-one --device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
-v /var/lib/zerotier-one:/var/lib/zerotier-one \
zyclonite/zerotier
2. 使用#
- 於
/var/lib/zerotier-one/networks.d
目錄新增<ZeroTier Network ID>.conf
的空白檔案,例如你的Network ID是5e3103qfrp2
:
sudo mkdir /var/lib/zerotier-one/networks.d
sudo touch /var/lib/zerotier-one/networks.d/5e3103qfrp2.conf
- 或者可以在容器執行時,用以下指令加入ZerotTier網路。但除非你的裝置是不關機的,否則用上面的方法加入ZeroTier網路會比較好。
sudo docker exec zerotier-one zerotier-cli join 5e3103qfrp2
- 這樣就完成加入網路。之後再到ZeroTier的網頁後台同意裝置加入即可。
這裡仍要注意Docker繞過UFW防火牆規則的問題,如果在意這點請使用 ufw-docker。
另外zyclonite還開發了路由模式的ZeroTier容器,可以到他的 Github頁面查看。