基于ZeroTier虚拟网络解决集团网络问题

1、项目前景

(1)海外分公司和总部数据文件共享 使用 zerotier 做技术方案

(2)由于设备多,采用自建根服务器,突破官方限制的25台设备
    https://github.com/Jonnyan404/zerotier-planet 
    
(3)总部人数较多,分别在北上广分别部署 1台数据中转服务器提升数据传输,
     保证海外分公司和总部的数据传输,语音 视频会议等相关需求

2、实施步骤

服务端: 下载 解压 启动容器
wget https://github.com/Jonnyan404/zerotier-planet/archive/refs/heads/main.zip
unzip zerotier-planet-main.zip
'''
#修改 配置文件 
version: '2.0'
services:
    ztncui:
        container_name: ztncui
        restart: always
        environment:
            - MYADDR=1.2.3.4#改成自己的服务器公网IP
            - HTTP_PORT=4000
            - HTTP_ALL_INTERFACES=yes
            - ZTNCUI_PASSWD=admin@123
        ports:
            - '4000:4000' # web控制台入口
            - '9993:9993'
            - '9993:9993/udp'
            - '3180:3180' # planet/moon文件在线下载入口,如不对外提供。可防火墙禁用此端口。
        volumes:
            - './zerotier-one:/var/lib/zerotier-one'
            - './ztncui/etc:/opt/key-networks/ztncui/etc'
            # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
        image: keynetworks/ztncui
'''
docker-compose up -d




数据中转服务器 moon
# 以下步骤为创建planet和moon
docker cp mkmoonworld-x86_64 ztncui:/tmp
docker cp patch.sh ztncui:/tmp
docker exec -it ztncui bash /tmp/patch.sh
docker restart ztncui



(1)创建网段 设置地址池

image-20230703161344967

添加节点 激活急节点

(2) linux添加入节点
Linux 添加网络节点
curl https://install.zerotier.com/ | sed 's,download.zerotier.com/,mirrors.sustech.edu.cn/zerotier/,g' | sudo bash
curl -s https://install.zerotier.com | sudo bash

添加到 plant 节点
zerotier-cli join xxxxxxxx
添加moon 节点
zerotier-cli deorbit ***  *** 

(3) window添加节点

windows 下载 https://www.zerotier.com/download/
download ZeroTier 1.6.6

(4)安卓添加节点 和ios

安卓分两个版本
一个版本 自定义更改配置文件
一个是官方版

苹果手机  商店下载

(5)激活节点设备

image-20230703161602647

客户端查询指令

Planet  地球  也叫做自建根服务器  或者 网络控制器
moons   月球   中继服务器

planet 文件是自定义 根服务器
moon文件是  中继服务器秘钥文件

登录 4000端口  查看 根服务器的 id




3  设置路由规则 比如我当前有个其他国的主机,那么所有的流量走这个主机的节点即可。

image-20230703161754369

linux作为客户端节点,设置转发流量 从当前物理网卡 出去

官方文档 https://zerotier.atlassian.net/wiki/spaces/SD/overview



开启内核转发 
sudo sysctl -w net.ipv4.ip_forward=1

=======================================
firewall 防火墙设置
firewall-cmd  --add-masquerade  --permanent  # 开启nat 功能
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o ens33 -j MASQUERADE  -s 10.33.79.0/24
# 配置 nat ,来源网段的数据,从ens33的接口转出去,同时伪装成ens33的iP地址 
firewall-cmd --reload  加载配置文件

iptables 防火墙设置
'''
PHY_IFACE=eth0设置网卡的临时变量
ZT_IFACE=zta72ukxho

sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
允许 VPS 的网卡 eth0 转发所有 ZeroTier 虚拟网卡 zt0 的流量
iptables-save

'''

=====
linux 客户端  老版本还需要设置客户端进行转发流量的控制 ,新版本不需要了
/etc/sysctl.conf
# Controls source route verification 控制源路由验证 放行
net.ipv4.conf.default.rp_filter = 2
sysctl -p # 生效

zerotier-cli set  id allowlobal=1 # 允许转发全局的流量
zerotier-cli set  id allowDefault=1 # 开启转发代理
这样  linux 客户端也走 专用线路

zerotier-cli set  id allowDefault=0 # 关闭转发代理
具体设置 见博客
https://blog.csdn.net/RadiantJeral/article/details/107913539
=====

curl ifconfig.io/host 
查看返回的数据是否是远端ip




````

reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /D 1 /f

sc config RemoteAccess start= auto

sc start RemoteAccess

这样主机A就开启了路由转发了,相当于一台路由器呢

主机B中

同样”以管理员身份运行CMD”

运行以下命令

route add 192.168.8.0 mask 255.255.255.0 10.1.34.192
windows 不支持当前设定
````





windows 客户端
 允许托管地址                打勾
 允许分配全局IP            打勾
 允许默认路由器重写        打勾
 允许DNS配置               打勾
 
 

posted @ 2023-07-03 17:13  mmszxc  阅读(557)  评论(0)    收藏  举报