zoukankan      html  css  js  c++  java
  • 利用ZeroTier组建国内虚拟局域网

    基本概念

    ZeroTier is a smart Ethernet switch for planet Earth.

    通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 如下图

    ZeroTier 配置一个虚拟网段172.12.0.0/16,在家中加入这个网络中,即可访问位于公司172.12.0.101

    专有名词


    Zerotier 定义了几个专业名词:

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

    开始使用

    注册 zerotier 服务

    https://my.zerotier.com/ 

    在这里插入图片描述


    创建网络在这里插入图片描述


    内网目标机器安装客户端

    Linux

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


    其他操作系统

    下载地址:https://www.zerotier.com/download/

    客户端加入创建的网络


    Linux

    zerotier-cli join 17d7123456c1ed14b #上图创建网络生成的16位ID


    windows

    在这里插入图片描述

    或者是cmd 后出入跟 linux一样


    在这里插入图片描述

    zerotier 同意客户端接入
    点击第二部创建的网络,进入网络详情 ,同意客户端

    如上图,给客户端分配 的局域网 IP, 当然网段可以通过 本页Advanced 调整。

    确定网络联通(下图是moon后连接图)

    在这里插入图片描述

    建立国内中转服务


    建立中转服务器 moon Zerotier 的官方服务器在国外,国内客户端使用时延迟较大,网络高峰期时甚至各个客户端节点之间访问不了。此时 moon 中转服务器就显得非常重要,它的主要功能是通过自定义的服务器作为跳板加速内网机器之间的互相访问。

    准备
    搭载moon(卫星级服务器,用户自建的私有根服务器,起到中转加速的作用)

    机器 A(这里选用了云服务器)

    内网机器

    机器 B跟 C (两笔记本)

    设置教程
    1. 生成及修改 moon.json
    首先登陆到机器 A 上,前往路径 /var/lib/zerotier-one。运行命令

    zerotier-idtool initmoon identity.public >>moon.json


    此命令会在当前目录下生成一个文件 moon.json,文件内容如下:

    {
    "id": "9d2456s2d7",
    "objtype": "world",
    "roots": [
    {
    "identity": "9d255ee2d7:0:7f36dcd6a7ef8ee21a0cf801e194a72ef36780b4c8578ff51fjsghfae23fc26da8c1803e7dfd17699226516ece92e752d3999bd14fb23065cf78762cb699bab",
    "stableEndpoints": []
    }
    ],
    "signingKey": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5088c48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986",
    "signingKey_SECRET": "e70cbfefddac12yh67506f3e54d376bb4c6830d6960e7a153ed0cb9aa6f4af2ecd8d423d4cae59195d2ab0398ede0673cf67h633bce5ec4140493d37d6a50ab9",
    "updatesMustBeSignedBy": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5my6d48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986",
    "worldType": "moon"
    }

    其中 id 为机器 A 在 ZeroTier 中的 id,本文为 9d2456s2d7。
    修改 “stableEndpoints” 为机器 A 的公网的 ip。如:

    "stableEndpoints": [ "1.2.3.4/9993","2001:abcd:abcd::1/9993" ]

    若公网机器没有 IPv6 地址,则将其修改为

    "stableEndpoints": [ "1.2.3.4/9993" ]

    2. 生成签名文件
    修改完 moon.json 后,执行命令

    zerotier-idtool genmoon moon.json

    此命令会生成一个签名文件在当前目录下,文件名如 0000009d2456s2d7.moon (机器 A 的 id 为 9d2456s2d7)

    3. 将 moon 节点加入网络

    在机器 A 中的 ZeroTier 目录中建立子文件夹 moons.d

    不同系统下的 ZeroTier 目录位置:

    Windows: C:ProgramDataeroTierOne
    Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application Support/ZeroTier/One)
    Linux: /var/lib/zerotier-one
    FreeBSD/OpenBSD: /var/db/zerotier-one

    将在机器 A 生成的 0000009d2456s2d7.moon 拷贝进 moons.d 文件夹中,并重启
    ZeroTier(此步好像有些许 bug,重启电脑为佳)

    4. 将内网机器连接上 moon 节点

    方法一

    在机器 B、机器 C 中的 ZeroTier 目录中建立子文件夹 moons.d

    不同系统下的 ZeroTier 目录位置:

    Windows: C:ProgramDataeroTierOne
    Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application Support/ZeroTier/One)
    Linux: /var/lib/zerotier-one
    FreeBSD/OpenBSD: /var/db/zerotier-one


    方法二

    在机器 B、机器 C 上执行

    zerotier-cli orbit 9d2456s2d7 9d2456s2d7

    查看是否连接

    在其他机子执行以下命令将会显示该moon服务器:

    zerotier-cli listpeers


    如果出现下面情况说明连接上

    在这里插入图片描述

    原文链接:https://blog.csdn.net/dingjianjin/article/details/104235222

  • 相关阅读:
    vue 移动端项目,动态控制div距离底部的距离
    输入一个整形数组,求数组中连续的子数组使其和最大
    事件冒泡、组织事件冒泡、以及组织默认行为
    vuex存储和本地存储的区别
    Uncaught TypeError: Cannot read property 'offsetTop' of undefined at VueComponent.handleScroll
    js悬浮吸顶
    Python爬虫之爬取煎蛋网妹子图
    Python框架-pygal之世界地图
    Python框架-pygal之雷达图
    Python框架-pygal之饼图
  • 原文地址:https://www.cnblogs.com/cheflone/p/14513496.html
Copyright © 2011-2022 走看看