Linux系統用Docker跑ZeroTier One,進行內網穿透

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. 安裝

  1. 首先在Linux系統安裝Docker,並設定開機自動啟動服務。
1
sudo systemctl enable docker
  1. 用以下指令跑ZeroTier容器。使用-d引數使其在背景執行,再用--restart引數使容器之後開機自動啟動。
1
2
3
4
5
6
7
8
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. 使用

  1. /var/lib/zerotier-one/networks.d目錄新增<ZeroTier Network ID>.conf的空白檔案,例如你的Network ID是5e3103qfrp2
1
2
sudo mkdir /var/lib/zerotier-one/networks.d
sudo touch /var/lib/zerotier-one/networks.d/5e3103qfrp2.conf
  1. 或者可以在容器執行時,用以下指令加入ZerotTier網路。但除非你的裝置是不關機的,否則用上面的方法加入ZeroTier網路會比較好。
1
sudo docker exec zerotier-one zerotier-cli join 5e3103qfrp2
  1. 這樣就完成加入網路。之後再到ZeroTier的網頁後台同意裝置加入即可。

這裡仍要注意Docker繞過UFW防火牆規則的問題,如果在意這點請使用ufw-docker

另外zyclonite還開發了路由模式的ZeroTier容器,可以到他的Github頁面查看。


感謝您的閱讀。歡迎分享Ivon的部落格(ivonblog.com)的文章,引用或轉載請註明文章網址,並遵守創用CC-姓名標示-非商業性-禁止改作 4.0 國際授權條款。如需商業使用請來信告之。

written by human, not by AI

如果本網站文章對您有幫助,歡迎請我喝杯珍珠奶茶。

留言板

點選按鈕,選擇您覺得方便的留言系統。

這是Giscus留言板,需要登入Github帳號才能留言。方便您張貼程式碼,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。