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中授权。
相关文章:
zerotier实现内网穿透
zerotier的内网穿透 前言一、zerotier的框架认知二、客户端安装设置1.linux2.windows 前言 摸索了一阵,看了好几篇,没有讲清楚。争取这次说清楚。 一、zerotier的框架认知 先认识一下zerotier的框架,这样如何处理就很好理解了。 首先上zero…...
Ardusub源码剖析——control_althold.cpp
代码 #include "Sub.h"/** control_althold.pde - init and run calls for althold, flight mode*/// althold_init - initialise althold controller bool Sub::althold_init() {if(!control_check_barometer()) {return false;}// initialize vertical maximum sp…...
Vue前端开发-路由的基本配置
在传统的 Web 页面开发过程中,可以借助超级链接标签实现站内多个页面间的相互跳转,而在现代的工程化、模块化下开发的Web页面只有一个,在一个页面中需要实现站内各功能页面渲染,相互跳转,这时些功能的实现,…...
HarmonyOS JSON解析与生成 常用的几个方法
HarmonyOS 使用 JSON解析与生成 的好处 一、轻量级与高效性 易于阅读和编写:JSON格式的数据易于人类阅读和编写,降低了数据处理的复杂性。高效解析与生成:HarmonyOS的JSON解析库提供了一系列高效的函数和类,能够快速地将JSON字符串…...
Docker 进阶指南:常用命令、最佳实践与资源管理
Docker 进阶指南:常用命令、最佳实践与资源管理 Docker 作为一种轻量级的容器化技术,已经成为现代软件开发和部署不可或缺的工具。本文将为您深入介绍 Docker 的常用命令、最佳实践以及如何有效管理容器资源,帮助您更好地在 Ubuntu 22.04 或…...
【前端】特殊案例分析深入理解 JavaScript 中的词法作用域
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯案例代码💯词法作用域(Lexical Scope)与静态作用域什么是词法作用域?代码执行的详细分析 💯函数定义与调用的…...
Jmeter进阶篇(29)AI+性能测试领域场景落地
🏝️关于我:我是綦枫。一个顺手写写代码的音乐制作人。 前言 随着2022年GPT3.5的问世,我们的社会已经进入了AI时代,这是一个全新的风口,也会迎来全新的挑战和机遇。如果能抓住新时代的风口,你将会在进步的路上越走越快。今天让我们来一起探究一下,在软件性能测试领域,…...
理解和应用 Python Requests 库中的 .json() 方法:详细解析与示例
理解和应用 Python Requests 库中的 .json() 方法:详细解析与示例 在使用 Python 的 requests 库进行网络请求时,.json() 方法是一种非常实用的功能,用于将从 API 获取的 JSON 格式的字符串响应转换为 Python 可操作的字典或列表。这一功能的…...
docker 运行my-redis命令
CREATE TABLE orders ( order_id bigint NOT NULL COMMENT "订单ID", dt date NOT NULL COMMENT "日期", merchant_id int NOT NULL COMMENT "商家ID", user_id int NOT NULL COMMENT "用户ID", good_id int NOT NULL COMMENT "商…...
cloudstack概要及单节点安装部署
概要 Apache CloudStack 是一个开源的云计算管理平台,用于管理和部署大规模的虚拟化环境,支持 IaaS(基础设施即服务)模型。它广泛应用于私有云、公共云和混合云场景。 核心功能 多租户支持 提供隔离的虚拟网络、计算资源和存储资…...
Android Gradle 相关
JDK环境配置: 1、Gradle运行时的JDK,即Gradle需要用到的JDK,配置如下: 如需修改现有项目的 Gradle JDK 配置,请依次点击 File(或者 macOS 上的 Android Studio)> Settings > Build, Exe…...
SpringMVC:入门案例
从此开始,我们步入SpringMVC的学习。 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 先来看一下web程序是如何工作的: 因为是异步调用,所以后端不需要返回view视图,将其去除前端如果通过异步调用的方式进行交互࿰…...
LuaForWindows_v5.1.5-52.exe
Releases rjpcomputing/luaforwindows GitHub #lua C:\Users\Administrator\Desktop\test.lua print("Hello lua!") print("ZengWenFeng 13805029595")...
密码学实验工具--Cryptool2
一、 Cryptool2的下载与安装 请参考我的另一篇笔记 二、 Caesar密码 2.1 Caesar密码加解密 1. 在Starcenter中直接搜索caesar的模板。 2. 打开caesar Cipher的模板后,工作区上面已经有了输入框,密钥框,输出框 输入框:要加密…...
量化交易系统开发-实时行情自动化交易-8.1.TradingView平台
19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来会对于TradingView平台介绍。 T…...
Vue2 常见知识点(二)
使用简单的代码逻辑,理一理实现逻辑 为了方便理解,案例中,没有使用虚拟dom和抽象语法树,是通过直接操作dom来实现的 1.模板语法 先看一个简单的实现: this.compile( this.$el ); 执行模板编译,如果是文本…...
SAP-ABAP开发-第二代增强示例
CUSTOMER EXIT 以VA01为例 目录 一、查找出口 二、出口对象 三、销售订单的增强 一、查找出口 ①查找事务代码的主程序 ②搜索CALL CUSTOMER-FUNCTION SE37下查看函数 函数名称命名规则:EXIT_<程序名>_<序号> ③使用函数查找:MODX_FU…...
UDP 协议与端口绑定行为解析:理解 IP 地址和端口的绑定规则
UDP 协议与端口绑定行为解析:理解 IP 地址和端口的绑定规则 1. UDP 协议与端口绑定基础2. UDP 端口绑定行为与示例3. 关键结论:占有权与消息接收权4. 异常现象:多个程序绑定 0.0.0.0:80805. 端口共享与操作系统的行为差异6. 实践建议与最佳实践7. 总结在网络通信中,UDP(用…...
【Vue3】【Naive UI】<n-message>标签
【Vue3】【Naive UI】标签 content (String | VNode) 【VUE3】【Naive UI】<NCard> 标签 【VUE3】【Naive UI】<n-button> 标签 【VUE3】【Naive UI】<a> 标签 【VUE3】【Naive UI】<NDropdown&…...
C++ 变量和常量:开启程序构建之门的关键锁钥与永恒灯塔
目录 一、变量 1.1 变量的创建 1.2 变量的初始化 1.3 变量的分类 1.4 变量的初始化 二、常量 2.1 字面常量 2.2 #define定义常量 2.3 const 定义常量 一、变量 1.1 变量的创建 data_type name; | | | | 数据类型 变量名 ------------- int age; //整型变量 char ch; …...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
