• 组网神器Zerotier One使用


    一些问题

    可以用来干嘛?

    • 异地组网,管理方便,A、B网段内的IP可以直接相互访问

    到底好不好用?

    • 如果不搭建MOON节点,直接P2P的话,速度确实让人捉急,我感觉这个原因劝退了绝大多数人

    和FRP的区别?

    • 应用场景不同。Zerotier One更适合用来组网,可以把它理解成VPN,可以直接通过局域网内IP互相访问。而frp特点是把内网的某个服务穿透出去,机器一多的话,你就需要记住不同端口号或子网域名。这里并不是说Zerotier Onefrp更好用,需要根据自己的业务场景来看。比如你在家里部署了一个WEB服务,想要给你异地的朋友使用,你不可能让你的朋友安装Zerotier One吧?直接用frp把该服务反向代理映射出去,直接给他一个域名不是更方便?

    开始使用

    初级----安装

    • 账号注册(略),注意国内访问速度很慢,这个自己解决一下
    • 创建网络,进入网络管理页面,点击Create A Network后,自动创建一个网络,点击网络ID右侧的小图标可以进行复制
    • 客户端安装,推荐使用docker
      (1)拉取并运行:docker run -d --restart unless-stopped --name zerotier-one --device /dev/net/tun --net host --cap-add NET_ADMIN --cap-add SYS_ADMIN -v /var/lib/zerotier-one:/var/lib/zerotier-one henrist/zerotier-one
      (2)将该客户端A加入网络:docker exec zerotier-one zerotier-cli join 8bd5124fd655f3bf,注意最后的网络ID,就是上面复制的,根据自己的进行替换,成功后会显示200 join OK字段
      (3)进入该网络的管理界面,授权该客户端加入该网络

      (4) 重复上面步骤,加入另外的客户端B
      (5)根据图(3)中分配的IP,A、B机器可以相互ping
      (6)如果是Windows,客户端可以直接下载官方的安装包,进行安装,不需要使用Docker
      (7)直接使用这种P2P方式连接的话,速度较慢,一般至少有200ms的延时

    中级----使用MOON加速

    • 准备一台有公网IP的机器,放行9993端口
    docker run --name zerotier-moon -d --cap-add NET_ADMIN --device /dev/net/tun --net host -p 9993:9993/udp --restart always -v ~/zerotier:/var/lib/zerotier-one seedgou/zerotier-moon:master -4 你的公网IP地址
    
    • 根据docker logs -f zerotier-moon运行输出的日志,在客户端执行该命令添加该MOON节点
    • A、B机器再ping一下,查看网络连接是否改善
    • docker exec zerotier-one zerotier-cli listmoons可以查看加入的MOON

    高级----组网

    现在考虑一个场景:A机器所在的内网lan_A有10台Server,B机器所在的内网lan_B也有10台Server,怎么让A、B机器直接访问到对方其它Server?

    在这20台Server上分别装上客户端,这个可以实现需求,不过管理上比较麻烦。

    实际上只要分别在lan_Alan_B的某台机器上安装客户端,开启内核转发,然后在Web管理页面添加两条路由就可以了。

    最简单的方法当然是分别在A、B机器上安装客户端就可以了,但前提是这两台机器都是Linux系统,因为需要开启内核转发功能。我在官网文档并没找到Windows的配置方法。
    如果A、B两台机器都是Windows系统的话,需要分别装上客户端。然后在各自的内网内找一台Server,安装客户端后,开启内核转发就可以了

    添加路由

    • 正常在两台Server上安装客户端
    • 两台机器分别执行以下命令,开启内核转发:
    Iface=`ifconfig | grep ^zt | awk '{print $1}'`
    echo "net.ipv4.ip_forward=1">/etc/sysctl.conf
    sysctl  -p
    PHY_IFACE=你的物理网卡名称; ZT_IFACE=$Iface
    iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
    iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
    
    #开启防火墙配置生效
    apt install iptables-persistent
    netfilter-persistent save
    
    
    • 登录Web管理添加路由
      尽力表示了,还看不懂的话看下文档,按照这个方法,添加另外一条路由。
      再来概括一下吧:通过Zerotier One中分配的IP作为网关,跳到对应的网络

    K2P使用

    以下内容搬运自恩山论坛csl0524的帖子,稍微做了些修改,如果侵权,请联系删除

    • open-zerotier.sh脚本:
    #!/bin/sh
    
    download_ZT(){
        if [ -e "/opt/bin/opkg" ];then
            opkg update && opkg install zerotier
            opkg remove zerotier
            wget -P /tmp https://cdn.jsdelivr.net/gh/steinvenic/JSDELIVR_CDN/zerotier_1.4.6-5_mipsel-3.4.ipk
            opkg install /tmp/zerotier_1.4.6-5_mipsel-3.4.ipk
    
            if [ -d "/etc/storage/ZT" ]; then 
                zerotier-one -d
                killall zerotier-one
                sleep 5
                cd /etc/storage/ZT
                cp -rf authtoken.secret identity.public identity.secret /opt/var/lib/zerotier-one/
            fi
    
            zerotier-one -d
            sleep 15
            zerotier-cli join xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    	zerotier-cli orbit mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 
            #上面的xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx改成自己的networkID
            #上面的mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 改成自己的moon id(如果有的话)        
            # 添加防火墙规则
            sleep 20
            Iface=`ifconfig | grep ^zt | awk '{print $1}'`
            iptables -I FORWARD -i $Iface -j ACCEPT
            iptables -I FORWARD -o $Iface -j ACCEPT
            iptables -I INPUT -i $Iface -j ACCEPT
    
            #添加ZT路由表
    	#route add -net 172.16.64.0 netmask 255.255.240.0 gw 10.144.63.69 $Iface
            #route add -net 192.168.41.0 netmask 255.255.255.0 gw 192.168.191.242 $Iface
            #route add -net 192.168.13.0 netmask 255.255.255.0 gw 192.168.191.242 $Iface
            #route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.191.105 $Iface
            #route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.191.127 $Iface
    
        fi
    }
    
    while [ ! -e "/opt/bin/zerotier-one" ]
    do
        download_ZT
        sleep 600
    done
    
    
    
    
    
    • 保存open-zerotier.sh脚本,放入/etc/storage目录下

    • 自定义脚本中添加以下命令

    killall open-zerotier.sh
    /etc/storage/open-zerotier.sh > /tmp/zerotier_log.txt 2>&1 &
    

    • 到zerotier后台看应该有设备连接上来了,在Auth项打勾授权
    • 切换到/etc/storage目录,在该目录下新建一个ZT的文件夹,再打开/opt/var/lib/zerotier-one/目录,复制authtoken.secret identity.public identity.secret三个文件到刚才的ZT文件夹。这三个文件夹包含着本机zerotier的网络号,每次开机zerotier自动安装好后会把这三个文件恢复,不然每次开机zerotier会重新生成一个网络号并且要后台重新授权
  • 相关阅读:
    程序命名规则
    CSS样式常用命名参考
    转:数据挖掘资料收集
    javascript占位符
    网站目录,文件夹命名规范
    IIS HTTP 500 内部服务器错误完美解决 IIS 服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别
    人事工资合同管理系统菜单截图
    Vs 正则表达式 查找替换 微软权威参考
    什么是DNS,A记录,子域名,CNAME别名,MX记录,TXT记录,SRV 记录,TTL值
    MT主机控制面板Plesk 使用指南
  • 原文地址:https://www.cnblogs.com/steinven/p/15220959.html
Copyright © 2020-2023  润新知