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

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视图,将其去除前端如果通过异步调用的方式进行交互&#xff0…...

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下查看函数 函数名称命名规则&#xff1a;EXIT_<程序名>_<序号> ③使用函数查找&#xff1a;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】&#xff1c;NCard&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;n-button&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;a&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;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; …...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...