今日热门-什么值得买好文 ( ) • 2024-04-15 03:27

本文首发于只抄博客,欢迎点击原文链接了解更多内容。

前言

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 (国区 Google Play 无法直接下载,可以在 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

通过 ZeroTier 异地组网 实现远程访问局域网
  1. 下面来到网段的设置,没有特殊需求的话,在下方任意选择一个即可

通过 ZeroTier 异地组网 实现远程访问局域网
  1. 如果需要自定义的话则需要点击 Advanced 后,将其中自带的网段进行删除,然后在上方填写想要的网段,下方填写地址池 (类似DHCP地址池)

zerotier3zerotier3
  1. 有图形化界面的平台,直接填入刚刚记下的 Network ID 即可;而在无图形化界面的平台上,需要输入 zerotier-cli join

  2. 返回到 ZeroTier 控制面板,在下方设备列表中,勾选加入网络的设备;同时记下设备的 IP

通过 ZeroTier 异地组网 实现远程访问局域网
  1. 完成以上步骤后,启动客户端,即使用列表中的 IP 进行直接访问

访问局域网

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

开启 IP 转发

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

  2. 将以下代码取消注释

net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1

  1. 加载内核参数 sysctl -p

配置客户端路由

  1. 输入 ifconfig ,记录下物理网卡以及 ZeroTier 的虚拟网卡

  2. 将网卡名字导出为环境变量

PHYSICAL_IFACE=<物理网卡> ZEROTIER_IFACE=

  1. 新路由

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. 持久化路由表

mkdir -p /etc/sysconfig/ sh -c "iptables-save > /etc/sysconfig/iptables"

  1. /etc/rc.local 文件的末尾添加一行

/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 地址

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

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

访问 ZeroTier 设备

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

  • 网络 / 主机 IP: 与 ZeroTier 网段保持一致

  • 网络掩码: 与 ZeroTier 掩码保持一致 (/24 为 255.255.255.0)

  • 网关: 安装 ZeroTier 设备的内网 IP

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