Skip to content

通过 ZeroTier 异地组网 实现远程访问局域网

前言

ZeroTier 是一款与 Tailscale 类似的异地组网工具,它可以将不同网络环境的设备组成一个虚拟局域网,使其可以互相访问。我们只需要在路由器或者 Nas 上安装 ZeroTier 进行组网,就可以实现以下效果:

  • 连接到 ZeroTier 的设备,可以直接使用内网 IP 访问家庭局域网
  • 内网设备可以直接使用 ZeroTier 分配的 IP 来访问连接到 ZeroTier 的设备
  • 支持多个局域网互相访问,每个局域网只需一台设备安装 ZeroTier (每个局域网的网段不能相同)

与 Tailscale 相比,在使用上 ZeroTier 主要有以下几点不同:

  • ZeroTier 只需网络号 (Network ID) 即可完成组网,无需登录账号,方便邀请朋友加入
  • ZeroTier 可以自定义虚拟网络的网段与每个设备的 IP
  • ZeroTier 设置访问整个局域网需要配置 iptables,比起 Tailscale 较为繁琐

安装步骤

  1. 打开 ZeroTier 官网,点击右上角的 Login,可以直接选择 Google 或者 Microsoft 授权登录
  2. 根据提示下载对应平台的客户端
    • Android (国区 Play Store 无法直接下载,可以在 APKMirror 下载)
    • Linux 一键安装脚本 curl -s https://install.zerotier.com | sudo bash
    • 卸载dpkg -P zerotier-one rm -rf /var/lib/zerotier-one/
  3. 登录成功后,点击最上方的 Create A Network 创建一个网络
  4. 创建成功,进入该网络的设置,将 Access Control 设置为 Private,name 可以随意填写,同时记下 Network ID

zerotier1

  1. 下面来到网段的设置,没有特殊需求的话,在下方任意选择一个即可

zerotier2

  1. 如果需要自定义的话则需要点击 Advanced 后,将其中自带的网段进行删除,然后在上方填写想要的网段,下方填写地址池 (类似DHCP地址池)

zerotier3

  1. 有图形化界面的平台,直接填入刚刚记下的 Network ID 即可;而在无图形化界面的平台上,需要输入 zerotier-cli join <Network ID>
  2. 返回到 ZeroTier 控制面板,在下方设备列表中,勾选加入网络的设备;同时记下设备的 IP

zerotier4

  1. 完成以上步骤后,启动客户端,即使用列表中的 IP 进行直接访问

访问局域网

此时,只有连接到 ZeroTier 的设备可以互相访问,并不能直接使用内网 IP 来访问整个局域网,我们还需要进行以下配置

开启 IP 转发

  1. 编辑 sysctl.conf 文件 vim /etc/sysctl.conf

  2. 将以下代码取消注释

txt
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
  1. 加载内核参数 sysctl -p

配置客户端路由

  1. 输入 ifconfig ,记录下物理网卡以及 ZeroTier 的虚拟网卡
  2. 将网卡名字导出为环境变量
sh
PHYSICAL_IFACE=<物理网卡>
ZEROTIER_IFACE=<ZeroTier 虚拟网卡>
  1. 更新路由表
sh
iptables -t nat -A POSTROUTING -o $PHYSICAL_IFACE -j MASQUERADE
iptables -A FORWARD -i $PHYSICAL_IFACE -o $ZEROTIER_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $ZEROTIER_IFACE -o $PHYSICAL_IFACE -j ACCEPT
iptables-save
  1. 持久化路由表
sh
mkdir -p /etc/sysconfig/
sh -c "iptables-save > /etc/sysconfig/iptables"
  1. /etc/rc.local 文件的末尾添加一行
txt
/sbin/iptables-restore < /etc/sysconfig/iptables

配置 ZeroTier 路由规则

  • 例如我的路由器地址为 10.0.0.1,光猫地址为 192.168.1.1,则需要配置的网段为 10.0.0.0/24 与 192.168.1.0/24
  • 在 ZeroTier 控制面板中,Destination 填写网段,Via 填写内网客户端的 IP 地址

zerotier5

经过以上设置,即可在连接 ZeroTier 后,直接使用局域网 IP 对整个局域网的设备进行访问

访问 ZeroTier 设备

通过上面的设置,已经实现了连接到 ZeroTier 的设备使用内网 IP 访问局域网,但是局域网内的设备仍然无法使用 ZeroTier 分配的 IP 来访问那些连接到 ZeroTier 的设备,我们还需要在路由器中配置静态路由

  • 网络 / 主机 IP: 与 ZeroTier 网段保持一致
  • 网络掩码: 与 ZeroTier 掩码保持一致 (/24 为 255.255.255.0)
  • 网关: 安装 ZeroTier 设备的内网 IP

zerotier6

你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0

预览:

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3