需求及个人环境

目的:需要在外面时候远程控制家庭中的一些设备
设备:OrangePI R1 PLUS LTS
系统:debain
所需软件:zerotier Linux端以及Android客户端

说明:写文章过程中,我自定义了ZeroTier的IP网段,所以有些截图中ZeroTier网段不一样。根据自己的实际更改。1:服务器ZeroTier分配的IP 2. 局域网的IP

介绍

zerotier允许您构建几乎任何类型的现代、安全的多点虚拟化网络。从强大的对等网络到多云网格基础设施,我们通过简单的本地网络实现了全球连接。

准备工作

  1. 打开zerotier官网,点击Log In/sign up进行注册登录
    20230721122354

  2. 创建网络
    点击Create A Network,并点进相应的新建网络,以下两个都是新建的。

    20230721140126

    NetWork ID 很重要。

  3. Linux安装ZeroTier

    1. Debian, Ubuntu, CentOS, RHEL, Fedora使用以下指令安装ZeroTier,安装指令稿会自动识别发行版。

      1
      curl -s https://install.zerotier.com | sudo bash
    2. 开机自启动

      1
      sudo systemctl enable zerotier-one

      如需其它客户端请访问官方文档

    3. 启动

      1
      sudo systemctl start zerotier-one
    4. 加入网络

      1
      sudo zerotier-cli join "Network ID"
    5. 收到回复

      1
      200 join OK

控制台设置

  1. IPv4 Auto-Assign

    选择一个自己喜欢的网段
    20230721130149

  2. Manually Add Member
    因为选择的是私有地址,设备加入网络后天管理允许(画框部分勾选)
    20230721135523

访问局域网中其它设备

需要提供的信息

信息 例子 以下简称
ZeroTier Network ID(ZeroTier 的16位网络ID) d5e04297a19bbd70 $NETWORK_ID
ZeroTier Interface Name(ZeroTier虚拟的网卡名ZT开头) zt7nnig26 $ZT_IFACE
Physical Interface Name(物理网卡名) eth0 $PHY_IFACE
ZeroTier subnet(ZeroTier 提供的网段) 192.168.10.0/16
Physical subnet(物理设备所在的网段) 192.168.1.0/24 $PHY_SUB
ZeroTier IP Address of “Router”(服务器的ZeroTier地址) 192.168.10.110 $ZT_ADDR

配置 ZeroTier 托管路由

my.zerotier.com/network/$NETWORK_ID -> Settings -> Managed Routes 中配置

Destination (Via)
$PHY_SUB $ZT_ADDR

20230721201944

启用IP转发

因 Linux 发行版而异。通常:
编辑/etc/sysctl.conf以取消注释net.ipv4.ip_forward。这可以在启动时启用转发。

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

配置iptables

20230721202504

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//设置临时变量
PHY_IFACE=lan0; ZT_IFACE=ztrfyh6lxk

//向iptables添加规则
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

//保存规则
sudo apt install iptables-persistent
sudo bash -c iptables-save > /etc/iptables/rules.v4
//放行端口9993(因为我内网,放行了所有的端口)

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

手机ping效果

ping 服务器

912c5b1318a7f2ff8fe363c9c1cd9f1

ping局域网其它设备

1cb3edb5c9248ced6a141c409afeff3