当前位置: 首页 > article >正文

zerotier实现内网穿透

zerotier的内网穿透

  • 前言
  • 一、zerotier的框架认知
  • 二、客户端安装设置
    • 1.linux
    • 2.windows


前言

摸索了一阵,看了好几篇,没有讲清楚。争取这次说清楚。


一、zerotier的框架认知

先认识一下zerotier的框架,这样如何处理就很好理解了。
首先上zerotier网站注册,网站给一个16位的网络号,可能交钱的用户可以有多个虚拟网络号。
有了这个网络号,就可以把需要的机器,加入这个虚拟网络。当然需要加入这个网络的先安装客户端,然后在客户端填入需要加入的网络号。
客户端加入后,zerotier就会自动分配一个内网ip地址,比如192.168.193.xxx,然后同一个网段的机器之间就可以互相访问了。
以上都是用的zerotier的默认设置,如果改变设置,可以在网页的setting部分去更改,每个网络号都有个setting部分。
1.Basics中,重要的是:acess control
是private,还是public。如果是private,每个加入这个网络号的都需要在网站上授权(选中一个客户端就可以点击authorize、Deauthorize),比较安全。
切记,在basic setting中最好选择private,否则别人只要知道了这个网络号就可以加入你的VPN了。
2.高级设置中
1.路由(Managed Routes ),最好在设置完ip地址后再设置。
2.IPv4 Auto-Assign,可以选择easy,那就系统帮你定ip段。也可以用advanced,自己设定ip段,为了好输入,我自己输入了192.168.222.1-99。
这个网络段一定注意不要和你的真实内网重叠。比如你办公室是192.168.5.0/24,你家里是192.168.1.0/24,那么你的zerotier虚拟网就不要使用这两个网络段了。
当你选定网络段后,你还可以到最上端Members部分,直接修改某客户端的ip地址,比如为了便于记住家里路由器中ip地址,把最后一段改成22,这样路由器的地址就是192.168.222.22。路由设置中会用到。
3.回到路由设置。默认系统有了一个192.168.222.0/24 (LAN)的路由,代表这个网段的机器间能互相访问。
其中你还可以添加其他路由。比如,你的笔记本在外想访问家里所有机器,但不想在家里所有机器都安装zerotier客户端,只在路由器上安装了,并且路由器ip是192.168.222.22,家里内网地址段是192.168.1.0,那么你需要告诉zerotier所有去192.168.1.0的数据都通过192.168.222.22转发(至于家里路由器中的防火墙设置另说,但首先得让zerotier知道这个路由,这个只能在zerotier网站上设置),就增加路由,就是在add routes中,destination是192.168.1.0/24,via 直接填ip地址192.168.222.22,submit后上面就能看到这个路由。路由的意思也就很明白。
同理,如果办公室还有一个zerotier的中转,也需要添加一条相似的路由。
注意:
1.这是告诉zerotier网络的转发,所以必须在zerotier网站设置。
2.这种路由设置只能让有zerotier客户端的机器能够访问到所有内网,还不能让内网中没有安装zerotier客户端的机器访问到zerotier整个网络。
——让内网中没有安装zerotier客户端的机器访问到zerotier网络:需要在家中路由器中设置。如果内网中安装了zerotier客户端的不是路由器,就更复杂了。这个复杂在于:内网中的网关都是你的路由器,一般的访问都是通过网关转发,但你想让去zerotier虚拟网的访问用另外一个网关,就得让每台机器知道你的想法,设置两个网关。

二、客户端安装设置

1.linux

如果是openwrt用Luci界面就比较简单,有的已经安装了zerotier的软件包,直接开启,并添加自己的网络号就可以了。
——其中的NAT是否要勾选?应该勾选,目的是让这个路由器由能力将外部zerotier终端发来的包转发到内网。是对zerotier网站上设置转发路由的呼应。
后面按照如下思路进行设置:
1.openwrt的网络-接口中,添加接口。在openwrt默认有LAN、wan、wan6接口。
“添加新接口”按钮:
接口名称自己定如abcd1都可以,但是为了方便记忆,假设我们的接口名称位zerotier1,后面用这个名字进行配置。
协议选择:静态地址,因为路由器的ip在之前zerotier网站中已经设置好了(如例子中,便于记忆的192.168.222.22);
包括以下接口中,选择带“zt7……”那个以太网适配器。
这样,zerotier的网络接口就定义好了。
多说一句,正常linux系统中不需要定义一个接口的别名,直接用eth0、zt7……等物理名称就可以了。但是openwrt中,使用UCI之后,在uci层面增加了一层对接口的定义,这样一个LAN口可以包含多个物理接口,还可以进行桥接。
2.建立好zerotier1后,对这个接口进行配置,openwrt中有四项:基本设置、高级设置、物理设置、防火墙设置。
——基本配置中,需要设置ip地址和子网掩码,其他默认就行了。当然 ip就是192.168.222.22,掩码就是255.255.255.0,网关应该不需要,因为都在192.168.222这个网段,不会需要网关就不填了。
——高级设置,物理设置就默认就可以。
——防火墙设置。其实在这里不是设置防火墙具体内容,而只是给防火墙划一个区,具体的防火墙设置还要到防火墙中去设置。 openwrt有防火墙区域,打开LAN、WAN都可以看到他们属于哪个防火墙区域。默认,LAN中接口属于LAN区域,wan、wan6属于WAN区。同一个区内使用同一个防火墙规则,设置防火墙区就便于管理。
所以基本为了安全可以有两种方法,一种是将zerotier1归到LAN区域,这样lan和zerotier1使用同一个防火墙规则。另外一种就是单独给zerotierVPN设立一个区,在“新建”中输入一个区域名字(比如VPN)给zerotier1,然后保存并应用,这样就有三个防火墙区域。
3.防火墙的设置。
到网络-防火墙页面,看到四项:基本设置、端口转发、通讯规则、自定义。这里只需调整基本设置,其余不用调整。
——在基本设置中,常规设置内容默认就行,对于区域的需要进行调整。
假设,zerotier单独形成一个区。那么就有三个区。lan、wan不用调整。在新的VPN区进行修改。首先允许出站入站外,允许VPN的转发,目的是为了由VPN区转发到其他区,便于外部zerotier终端电脑访问整个内部内容。然后允许VPN区转发到lan区和接受lan区来的数据,所以允许转发到和允许从哪儿转发中勾选lan。这样就允许转发到lan区,或者从lan区发来的转发到VPN区。

到此。设计就结束了。后面就进行测试了。
新增

如果没有安装,更新包,然后找到zerotier的包安装。或者ssh登录用命令行安装

命令行安装:

opkg update
opkg install zerotier-one

其他linux安装zerotier:也可以使用 apt 或 yum 更新 zerotier-one。

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

linux中zerotier的命令:

# 加入网络命令,操作成功则返回 “200 join OK” 
sudo zerotier-cli join  ###########
# 查看当前连接的网络,如果列表中出现 Network ID、Name 说明连接成功,后台分配好IP后再查看IP地址也会出现。
sudo zerotier-cli listnetworks
# 返回信息 “200 info ########### 1.10.6 ONLINE”
zerotier-cli status
#手动启动
sudo systemctl start zerotier-one.service
# 开机自启动,成功怎返回值的最后会有“enable zerotier-one”字样
sudo systemctl enable zerotier-one.service
# 查看当前连接的网络,如果列表中出现 Network ID、Name 说明连接成功,后台分配好IP后再查看IP地址也会出现。
sudo zerotier-cli listnetworks
# 断开网络命令,操作成功则返回 “200 leave OK”
sudo zerotier-cli leave ###########
#停止zerotier
sudo systemctl stop zerotier-one 或sudo service zerotier-one start
#卸载(根据不同系统)ubuntu、Debian用
sudo dpkg -P zerotier-one 
sudo rm -rf /var/lib/zerotier-one/
# CentOS、Redhat 用
sudo rpm -e zerotier-one 
sudo rm -rf /var/lib/zerotier-one/

2.windows

简单,安装后只要添加一下网络号,在zerotier中授权。



http://www.kler.cn/a/421266.html

相关文章:

  • git查看本地库对应的远端库的地址
  • 【C语言】结构体(四)
  • linux模拟试题
  • TypeScript和JavaScript的区别
  • AI - 谈谈RAG中的查询分析(2)
  • Python办公——openpyxl处理Excel每个sheet每行 修改为软雅黑9号剧中+边框线
  • M31系列LoRa分布式IO模块功能简介
  • 黑马2024AI+JavaWeb开发入门Day04-SpringBootWeb入门-HTTP协议-分层解耦-IOCDI飞书作业
  • 【微服务】SpringBoot 对接飞书多维表格事件回调监听流程详解
  • 基于Linux的逻辑订阅发布搭建
  • 多线程运行时,JVM(Java虚拟机)的内存模型
  • Runway 技术浅析(七):视频技术中的运动跟踪
  • [TLS] 使用 OpenSSL 命令行测试 TLS13 0-RTT
  • 关于机器学习领域的预测算法/模型基础入门
  • 【论文笔记】Frequency Domain Model Augmentation for Adversarial Attack
  • BioDeepAV:一个多模态基准数据集,包含超过1600个深度伪造视频,用于评估深度伪造检测器在面对未知生成器时的性能。
  • 【ETCD】ETCD用户密码认证
  • HTML5技术贴:现代网页开发的革命
  • 迁移学习!超高创新!GASF-AlexNet-MSA,基于格拉姆角场和AlexNet结合多头注意力机制的故障识别程序
  • 数据结构 - 排序(四):排序算法总结与对比
  • KVCKVO
  • uniapp:封装商品列表为组件并使用
  • 基于Redis海量数据场景分布式ID架构实践
  • 【智慧社区、智慧城市、智慧园区】智慧楼宇系统需求建设方案,智慧楼宇详细设计方案,智慧楼宇系统建设汇报方案(PPT)
  • 位图的学习
  • 遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。