Login

Navigation

This articles is published 930 days ago and last updated 930 days ago, some information may be out of date.

ZeroTier 實現遠端訪問局域網

ZT_NetworkGraphic_Homepage.png

前言:
ZeroTier方便地在家中與公司內部電腦、雲端VPC和行動裝置之間創建安全的網路連線(所有設備集成到一個界面上)。但不是每一部網絡裝置都可以安裝到ZeroTier 軟件 及 如果要訪問家中數十部裝置都需要安裝ZeroTier就顯得非常不便。

然而ZeroTier可以透過其中一部裝置實現遠端訪問整個局域網功能,從而避免不能安裝ZeroTier 軟件 或 解決多次安裝軟件於不同裝置的問題。

實現條件:
  • 本地與遠端端的裝置已安裝ZeroTier及加到同一網絡內
  • 本地裝置啟用IP Forward(IP 轉發)
  • 配置 iptables
範例01:
本範例透過單網口OpenWrt實現遠端訪問局域網的功能。

公司電腦想透過ZeroTier訪問家中所有的上網裝置,如交換機、AP、NAS等等。

  • OpenWrt系統加入到 ZeroTier網絡
  • 啟用 ZeroTier網絡 及 NAT功能(已包括iptables)

ZT_RT_OP_081609.png

  • 防火牆 - 自定義規則啟用eth0網口的NAT轉換

ZT_RT_OP_081644.png

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
  • 跳轉到 ZeroTier官網管理平台,允許OpenWrt客戶端接入網路

ZT_RT_OP_082012.png

  • Advanced > Managed Routes 添加路由

ZT_RT_OP_082039.png

家庭網絡分了2組vlan,所以會有2網網段添加路由
  • 已經安裝ZeroTier軟件的遠端裝置(網外裝置)直接Ping家庭內網IP地址

ZT_RT_OP_083535.png

  • 可以直接訪問家中沒有安裝ZeroTier軟件的裝置

ZT_RT_OP_082152.png

ZT_RT_OP_082212.png

ZT_RT_OP_082229.png


範例02:
本範例透過Linux Ubuntu實現遠端訪問局域網的功能。
  • 安裝ZeroTier

ZT_RT_Linux_060906.png

curl -s https://install.zerotier.com | sudo bash
  • 加入到 ZeroTier網絡

ZT_RT_Linux_060938.png

sudo zerotier-cli join 565799d8xxxxxxxx
  • 跳轉到 ZeroTier官網管理平台,允許Linux客戶端接入網路 和添加路由

ZT_RT_Linux_100913.png

ZT_RT_Linux_100914.png

啟用 IP 轉發及使更改立即生效

ZT_RT_Linux_100906.png

sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -p
net.ipv4.ip_forward = 1

收集所需要的資訊:

ZT_RT_Linux_100934.png

網口IP地址網段
ens3 (本機)10.0.0.22310.0.0.0/24
ztr2qu2plk (ZeroTier)192.168.191.51192.168.191.0/24
  • 設定環境變量:
PHY_IFACE=ens3; ZT_IFACE=ztr2qu2plk
ens3 實體網口

tr2qu2plk 連接 ZeroTier網口

  • 添加規則到iptable

ZT_RT_Linux_100956.png

sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT

保存iptable規則

  • 利用iptables-persistent套件存檔iptable規則

ZT_RT_Linux_101012.png

sudo apt install iptables-persistent
  • 安裝時就會跳出是否要儲存目前iptables和ipv6tables的版面。

ZT_RT_Linux_101013.png

  • 再次存檔修改的iptable規則,可使用以下指令

ZT_RT_Linux_101800.png

bash -c iptables-save > /etc/iptables/rules.v4

或者重新報行iptables-persistent互動版面

sudo dpkg-reconfigure iptables-persistent
  • 檢視iptable規則

ZT_RT_Linux_101944.png

cat /etc/iptables/rules.v4 | grep 'ens3'
-A POSTROUTING -o ens3 -j MASQUERADE
-A FORWARD -i ens3 -o ztr2qu2plk -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ztr2qu2plk -o ens3 -j ACCEPT
  • 已經安裝ZeroTier軟件的遠端裝置(網外裝置)直接Ping家庭內網IP地址

ZT_RT_Linux_102135.png

  • 可以直接透過內網IP地址訪問服務

ZT_RT_Linux_105407.png

參考資料: