loading

Loading

请输入关键字开始搜索
    首页 技术实践网站部署

    ZeroTier内网穿透

    分类:网站部署
    字数: (2770)
    阅读: (177)
    0

    1. 背景

    本来是使用FRP服务器来提供对外的网站服务的,但是FRP都是通过转发来实现,受到云服务器带宽的限制,如果想要远程看家里NAS里的视频就没法实现了,所以通过ZeroTier组建虚拟局域网,通过P2P进行连接,有效提高网速。

    1.1 概念

    本次使用ZeroTier需要在官网进行注册,然后需要准备一个公网服务器充当Moon服务器。这里说一下几个概念,本次搭建使用ZeroTier和Moon服务器。

    PLANET 行星服务器,Zerotier 根服务器
    MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用
    LEAF网络客户端,就是每台连接到网络节点

    ZeroTier Moon 是一种辅助节点,充当中继点(但并不是中央服务器),通过配置 Moon 后,所有节点会优先尝试通过 Moon 节点建立直接连接,适用于需要内网穿透,且希望优化设备间连接的场景。

    1.1 搭建条件

    • 一台拥有公网 IP 的服务器(例如云服务器)。
    • 已安装 ZeroTier 并完成基本配置。

    2. 搭建

    首先需要注册服务器,进入如下网站进行注册:

    https://my.zerotier.com/

    正常点击下一步就可以注册,注册完毕以后,记录NETWORK ID。

    2.1 服务器安装Moon节点

    2.1.1 安装ZeroTier

    登录公网服务器,使用命令行:

    curl -s https://install.zerotier.com/ | sudo bash

    安装后显示Success则表示安装成功,输入如下指令,表示设置开机启动,并启动ZeroTier服务。

    # 设置开机启动并使能
    sudo systemctl start zerotier-one.service
    sudo systemctl enable zerotier-one.service
    # 查看程序状态
    sudo systemctl status zerotier-one.service

    如果显示Executing: /lib/systemd/systemd-sysv-install enable zerotier-one表示启动成功,则加入ZeroTier网络,这里的网络就是在ZeroTier的官网的网络。

    sudo zerotier-cli join 你的网络ID

    如果显示200 join OK表示加入成功。

    2.1.2 配置Moon节点

    首先生成moon文件:

    cd /var/lib/zerotier-one
    sudo zerotier-idtool initmoon identity.public > moon.json

    编辑Moon.json的文件:

    sudo vi moon.json

    将 stableEndpoints 修改为服务器的 IP 地址,并添加对应的端口号,默认端口号9993。
    请注意,端口号必须是在防火墙添加可以对外提供的

    "stableEndpoints": ["服务器IP地址/9993"]

    然后生成签名文件:

    sudo zerotier-idtool genmoon moon.json

    显示wrote 000000xxxxxxx.moon (signed world with timestamp xxxxxxxx),表示执行成功。

    2.1.3 加入Moon节点

    执行以下命令:

    sudo mkdir moons.d
    sudo mv 000000xxxxxxx.moon moons.d/

    然后重启服务器 zerotier:

    sudo systemctl restart zerotier-one

    2.1.4 配置服务器安全组

    在共有云服务器中的安全组允许如下规则:

    • 协议:UDP
    • 端口范围:9993
    • 来源:0.0.0.0/0 或指定可信设备的 IP 范围。
      注意:是要允许UDP策略

    3. OpenWrt配置

    因为 OpenWrt var 目录是一个内存虚拟的临时目录,重启后原有配置不会保留。ssh 连接 OpenWrt,执行命令 vi /etc/init.d/zerotier,在 add_join() { 上方插入两行代码:

    mkdir -p $CONFIG_PATH/moons.d
    cp /root/moons.d/* $CONFIG_PATH/moons.d/

    修改完成后在 /root 目录下创建 moons.d 文件夹,并将 000000xxxxxxx.moon 上传到该文件夹下,然后在 Web 界面重启 Zerotier ,然后重新查看

    ls /var/lib/zerotier-one/moons.d/000000xxxxxxx.moon
    /var/lib/zerotier-one/moons.d/

    如果能看到对应的000000xxxxxxx.moon说明程序启动,可以通过以下命令验证:

    # 查看zerotier是否正确启动
    zerotier-cli info
    # 查看openwrt是否加入Moon节点
    zerotier-cli orbit 000000xxxxxxx.moon 000000xxxxxxx.moon 
    # 查看zerotier的节点信息
    zerotier-cli listpeers

    4. IOS配置

    1. 在 App Store 搜索 ZeroTier One,下载安装。
    2. 打开 ZeroTier 应用,登录后点击右上角的加号。
      • 输入 ZeroTier 网络的 Network ID(可以在 ZeroTier 控制台查看)。
      • 点击加入网络后,等待分配虚拟 IP。
    3. 在 ZeroTier 应用中,检查是否已分配到虚拟 IP(如 192.168.192.x)。
      • 确认与家里设备分配的虚拟 IP 在同一个网段。
        这个时候虽然添加了对应的Network ID,但是点开服务器,会看到Status的状态是Access Denied,说明没有在ZeroTier加白。

    5. ZeroTier根服务器配置

    5.1 加白配置

    登录 ZeroTier 官方控制台:https://my.zerotier.com,选择你正在使用的 ZeroTier 网络 ID,选择对应的ID进行授权。

    5.2 允许客户端内网NAT

    首先要在路由器上打开允许客户端NAT访问内网的开关,然后在ZeroTier的高级设置中添加对应的路由表。

    Target: 192.168.1.0/24 
    Via: 155.144.40.4
    • 192.168.1.0/24 是 OpenWRT 的内网地址段。
    • 155.144.40.4 是 OpenWRT 在 ZeroTier 网络中的虚拟 IP。
    本文发布于2024年12月15日19:28,已经过了378天,若内容或图片失效,请留言反馈
    文章出处: 求索空间
    文章链接: https://blog.askerlab.com/zerotier_install
    评论列表:
    empty

    暂无评论