0


【从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 enabledocker# 设置开机自动启动

服务端(阿里云服务器)的准备工作已经做好了,接下来也要给代理端安装一下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=falsedriver-class: com.mysql.jdbc.Driver
      # 数据库帐号username: xxx
      # 数据库密码password: xxx

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

docker run -it-p9000-9200:9000-9200/tcp -p8888: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 -eSERVER_IP={替换为你的公网ip}\-eLICENSE_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,需要将端口暴露在互联网上,使用方便但安全性较差(虽然我们可以额外配置安全组提高安全性)。


本文转载自: https://blog.csdn.net/weixin_70757494/article/details/138374926
版权归原作者 IQ50zzzZ 所有, 如有侵权,请联系我们删除。

“【从0开始搭建内网穿透】开源内网穿透神器-中微子代理”的评论:

还没有评论