【从0开始搭建内网穿透】开源内网穿透神器-中微子代理

1. 背景

概念:内网穿透,就是让处在外网的设备能够访问内网设备的服务。典型的应用场景就是人在外面访问家中的NAS、人在出差调试内网中的web服务、开Minecraft服务器等。
起因:实验室项目有搭建内网穿透服务的需求(项目前端需要部署在云服务器上演示,后端部署实验室的服务器上)。
技术选型:常用的内网穿透工具和服务包括FRP、ZeroTier、Wireguard等,关于这些方法b站、油管上都有大量手把手教程视频,就不多加赘述了。我这里选用的国内dromara开源组织开源的中微子代理(Neutrino-Proxy)。这里贴出项目的gitee地址:https://gitee.com/dromara/neutrino-proxy,欢迎大家去star,目前有1.5k的star,是个相当不错的开源项目。
选择原因

  • 流量监控:首页图表、报表管理多维度流量监控。全方位掌握实时、历史代理数据。
  • 域名映射:HTTP代理绑定子域名,开发调试三方回调更方便。
  • 用户/License:支持多用户、多客户端使用。后台禁用实时生效。
  • 端口池:对外端口统一管理,支持用户、License独占端口。
  • 端口映射:新增、编辑、删除、禁用实时生效。
  • Docker:服务端支持Docker一键部署。
  • 隧道SSL加密:隧道通信支持SSL,保护您的数据安全
  • HTTPS:支持HTTPS

代理示意图(来自于该项目gitee的readme):
image.png

2. 准备工作

在开始前,请你确保有一个具备公网ip的机器,我这里是一台阿里云云服务器(阿里云高校计划薅的,在校学生可以领300元无门槛优惠券,链接在这:https://university.aliyun.com/),系统为Ubuntu20.04。
中微子代理提供了多种搭建方式:jar部署、docker部署、原生部署,对于任何一种部署方式,不要求客户端与服务端一致(这点好评)。
为了方便管理,我们这里统一使用docker来部署。于是我们要给阿里云服务器装上docker。
安装过程非常简单,我们只需要依次执行下面几条命令就行:

apt-get update    # 更新本地软件包列表
wget -qO- get.docker.com | bash   # 下载并运行docker安装脚本
docker -v  #查看 docker 版本
systemctl enable docker  # 设置开机自动启动

服务端(阿里云服务器)的准备工作已经做好了,接下来也要给代理端安装一下docker。(对于什么是服务端,什么的是代理端有些混乱的话多看看上面的代理示意图就能搞清楚了)。
代理端我们这里用的是装了Windows系统的PC,安装一下Dokcer Desktop就好了,安装教程很多,不多加赘述了。
准备工作完成,接下来我们正式部署中微子代理进行内网穿透。

3. 部署

因为是基于docker部署,所以整个过程很简单。

3.1 服务端

服务端的数据库目前支持h2、mysql、mariadb,默认是h2。
(可选)
但如果你想要使用mysql的话,需要做如下步骤:

  1. 在服务器上创建目录:/root/neutrino-proxy/config
  2. 在该目录下创建app.yml文本文件,并配置如下内容:
neutrino:
  data:
    db:
      type: mysql
      # 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化
      url: jdbc:mysql://xxxx:3306/neutrino-proxy?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false
      driver-class: com.mysql.jdbc.Driver
      # 数据库帐号
      username: xxx
      # 数据库密码
      password: xxx

-----------------------------手动分割线-----------------------------
配置完数据库后(我这里自己没有配置mysql,直接使用默认的h2数据库),我们只需要执行下面的命令即可:

docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 \
-d --restart=always --name neutrino-proxy \
-v /root/neutrino-proxy-server/config:/root/neutrino-proxy/config \
-v /root/neutrino-proxy-server/data:/root/neutrino-proxy/data \
-v /root/neutrino-proxy-server/logs:/root/neutrino-proxy/logs \
aoshiguchen/neutrino-proxy-server:latest

然后docker ps看一下可以看到服务顺利启动了:
image.png
访问{云服务器公网ip}:8888,我们就能进入后台管理页面(注意在阿里云控制台要配置防火墙打开端口,目前和后续涉及到的端口号有:管理页面8888、后续客户端连接端口9000和9002、端口映射用到的端口)。
管理页面的默认账号密码是admin/123456
登录进管理系统,我们进入到代理配置->License管理,可以看到系统为我们默认配置了一条License,复制License Key备用。

注意,请不要泄露License Key!拥有License Key即可使用你的代理!如果泄露,请第一时间进行重置!

image.png

3.2 代理端

代理端我们同样是用docker部署,只需要执行一项命令:

docker run -it -d --restart=always --name npclient -e SERVER_IP={替换为你的公网ip} \
-e LICENSE_KEY={替换为你的License Key} aoshiguchen/neutrino-proxy-client:latest

我们通过Docker Desktop或者docker ps命令都能看到服务运行了。
image.png

3.3 配置代理

此时我们回到管理页面,可以看到原来“离线”的状态已经变为在线了:
image.png
接下来我们可以配置代理了,进入到代理配置->端口映射
我们先在本地(代理端)启动需要被代理的服务,如web服务、mysql、redis等。
这里以redis为例进行演示,我们添加一条端口映射规则:
image.png
简单说明一下,上面配置的效果就是访问公网IP+9102等效于访问本地被代理服务(127.0.0.1:6379)。

如果使用云服务器,请确保在云服务器控制台配置防火墙打开对应的端口。

3.4 代理验证

首先我们要确保我们的服务在本地是能被正常访问的(本地都访问不了,代理就更访问不到了):
image.png
如上图所示,我们的redis服务运行在代理端的6379端口,通过redis图形化桌面软件是能正确连上的。
接下来我们用Another Redis Desktop Manager再去连接一下公网IP+9102,看看代理是否生效:
在这里插入图片描述

可以看到,代理是成功的。

4. 小结

本篇博客简单演示了中微子代理neutrino-proxy的部署和使用,当然这个工具除了代理外,还有其它很多功能如流量监控、端口池、安全组配置等, 这些就留待大家自己探索了。
当然,中微子代理类似于frp,需要将端口暴露在互联网上,使用方便但安全性较差(虽然我们可以额外配置安全组提高安全性)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587311.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络】UDP协议

文章目录 一. 初识UDP1. UDP简介2. UDP协议的特点特点一:无连接特点二:不可靠特点三:面向数据报 3. UDP报文的格式4. UDP的缓冲区5. 基于UDP实现的用户层协议 二. UDP报文中各个字段1. 原端口号与目的端口号(16位)1.1 …

《Redis使用手册之Lua脚本》

《Redis使用手册之Lua脚本》 EVAL:执行脚本 127.0.0.1:6379> eval “return ‘hello world’” 0 “hello world” 127.0.0.1:6379> eval “return redis.call(‘set’,KEYS[1],ARGV[1])” 1 “message” “hello world” OK 127.0.0.1:6379> get message…

网络安全知识点

网络安全 1. 网络安全的定义,网络安全的属性。 定义:针对各种网络安全威胁研究其安全策略和机制,通过防护、检测和响应,确保网络系统及数据的安全性。 属性:机密性 认证(可鉴别性&#xff09…

ASP.NET淘宝店主交易管理系统的设计与实现

摘 要 淘宝店主交易管理系统主要采用了ASPACCESS的B/S设计模式,通过网络之间的数据交换来实现客户、商品、交易的管理和对客户、商品、交易统计工作,从而提高淘宝店主在管理网店过程中的工作效率和质量。 系统分为基本资料模块,统计资料模…

Windows php 安装 Memcached扩展、php缺失 Memcached扩展、Class ‘Memcached‘ not found

在Windows系统下如何安装 php Memcached 扩展 下载dll文件 pecl地址:https://pecl.php.net/package/memcached 根据版本进行选择 : 解压下载的文件后得到了这么样的文件结构: 配置 移动dll文件到相应文件位置 重点: libme…

PG数据库结构与oracle比较

1.数据库集簇逻辑结构 数据库集簇概念:一个大的数据库是由若干个小的数据库组成,实现数据的隔离存放,在概念上应该是与mysql一样的 在mysql中可以用show database列出数据库 PG中用\l 数据库对象存放在数据库中: PG中的所有数据…

2024小米SU7首批锁单用户调研报告

来源:电动汽车用户联盟 80%的锁单用户认为自己是米粉,64%的用户拥有10个以上米家生态产品, 使用小米手机的比例为67%,使用苹果手机的比例为47% 2. 81%的用户为90后,均龄31岁,未婚者和已婚无孩者占比63%&am…

word启动缓慢之Baidu Netdisk Word Addin

word启动足足花了7秒钟,你知道我这7秒是怎么过来的吗? 原因就是我们可爱的百度网盘等APP,在我们安装客户端时,默认安装了Office加载项,不仅在菜单栏上加上了一个丑陋的字眼,也拖慢了word启动速度........ 解…

C++:智能指针

C:智能指针 内存泄漏RAII智能指针auto_ptrunique_ptrshared_ptr循环引用 weak_ptr deletershared_ptrunique_ptr 内存泄漏 内存泄漏是指程序在动态分配内存后,忘记或无法释放已经不再使用的内存,从而导致系统内存资源被逐渐耗尽的问题。这种…

038——基于STM32和I.MX6uLL实现uart控制GPS(失败者总结)

目录 1、GPS模块简介 2、GPS数据格式 3、方案梳理 1、GPS模块简介 全球定位系统(Global Positioning System, GPS)是一种以空中卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间…

78、贪心-跳跃游戏

思路 方法1: canJump01 - 使用递归(回溯法) 这个方法是通过递归实现的,它从数组的第一个位置开始,尝试所有可能的跳跃步数,直到达到数组的最后一个位置或遍历完所有的可能性。 思路: 如果数组为空或者长…

018、Python+fastapi,第一个Python项目走向第18步:ubuntu24.04 安装cuda和pytorch环境

一、说明 我们安装了pytorch环境之后,会用yolo v9 来测试一下,看8g 显存能不能跑下来,上次用无影云电脑,4cpu8g内存直接爆了,云电脑也死机了,提示一直占用内存不释放,我自己的云电脑不能占用内…

帕金森患者应该怎么注意生活方式?

在面对帕金森病的挑战时,科学合理地改善日常生活方式,不仅能帮助患者更好地管理病情,还能提升生活质量。今天,让我们一起探索如何通过简单的日常调整,为患有帕金森病的朋友们带来积极的变化。 饮食调整:营养…

安全再升级,亚信安慧AntDB数据库与亚信安全二次牵手完成兼容性互认证

日前,湖南亚信安慧科技有限公司(简称:亚信安慧)的产品与亚信科技(成都)有限公司(简称:亚信安全)再次携手,完成亚信安慧AntDB数据库与亚信安全IPoE接入认证系统…

PPO 学习笔记

用PPO算法求解整个神经网络在迭代过程中的梯度问题 每走一步就会得到一个新的状态,把这个状态传到网络里面,会得到一个 action,执行这个 action 又会到达一个新状态 policy 中由状态 st 生成动作 at,生成的这个 at 是由整个网络的…

CGAL 点云数据生成DSM、DTM、等高线和数据分类

原文链接 CGAL 点云数据生成DSM、DTM、等高线和数据分类 - 知乎 在GIS应用软件中使用的许多传感器(如激光雷达)都会产生密集的点云。这类应用软件通常利用更高级的数据结构:如:不规则三角格网 (TIN)是生成数字高程模型 (DEM) 的基础,也可以利…

CSS中的圆角和阴影

目录 盒子圆角 圆角基础使用 圆角常见使用 通过设置盒子圆角得到一个圆形 通过设置盒子圆角,得到一个“操场”的样式 盒子阴影 文字阴影 盒子圆角 圆角基础使用 在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。 使用…

深入浅出TCP 与 UDP

🔥 引言 在互联网的广阔天地里,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)作为传输层的两大支柱,各自承担着不同的使命。下面这篇文章将带你从基础到进阶,全…

8. Django 表单与模型

8. 表单与模型 表单是搜集用户数据信息的各种表单元素的集合, 其作用是实现网页上的数据交互, 比如用户在网站输入数据信息, 然后提交到网站服务器端进行处理(如数据录入和用户登录注册等).网页表单是Web开发的一项基本功能, Django的表单功能由Form类实现, 主要分为两种: dj…

练习题(2024/5/1)

1二叉树的层平均值 简单 相关标签 相关企业 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000…