NPS——搭建属于你的内网穿透平台[通俗易懂]

NPS——搭建属于你的内网穿透平台[通俗易懂]内网穿透

大家好,又见面了,我是你们的朋友全栈君。

NPS——搭建属于你的内网穿透平台

引言

在日常的开发工作中,对接第三方API是在所难免的,一些比较复杂的业务场景往往需要双向交互(指不仅仅需要请求第三方API,而且还需要第三方API回调指定地址)。

一般来说开发阶段通常由开发同学在本地环境完成,再由运维同学将应用部署到公网环境中与第三方进行联调,联调过程中可能会遇到一些的问题(例如:返回值与期望值不符合、字段名不一致、状态码不一致等),于是就需要开发同学再次编写代码修复问题后丢给运维同学重新部署,运维同学部署后再次进行联调,联调过程的中如果开发同学又发现了bug,那么就需要再次修改代码并丢给运维同学重新发布。

工作流程如下:

开发同学编写代码——>运维同学部署——>与第三方联调——>发现Bug——>开发同学编写代码——>运维同学部署——>与第三方联调——>发现Bug——>开发同学编写代码——>运维同学部署——>与第三方联调——>发现Bug——>开发同学编写代码——>运维同学部署——>与第三方联调——>发现Bug——>开发同学编写代码。

反复了十几遍后,运维同学终于崩溃了(搁着鸡生蛋蛋生鸡呢?):

运维同学气鼓鼓的说道:“我还有自己的工作任务要忙,你就不能一次性修改完所有的问题后再给我吗?”

开发同学也很无奈的说:“我也没办法呀,有些问题只能在联调时发现,我本地环境跟第三方联调不了呀。”

运维同学:“为什么联调不了?”

开发同学:“第三方需要回调我们的api,我是在本地写的代码,网络不通回调不了啊。”

运维同学:“这还不简单?一个内网穿透不就搞定了。免费的内网穿透有一个Sunny-Ngrok,但是不太稳定,或者你也可以用NPS自己搭建一个”

开发同学:“噢,好的好的,我去看一下”

PS:作为一个多年的白嫖党,我首先体验了Sunny-Ngrok白嫖版,使用了一段时间后发现隧道总是时不时的就down了,而且一down就是好几天,考虑到以后可能经常需要使用,于是决定使用自己价值好几百的云服务器搭建一个内网穿透平台。

前期准备

  • Docker环境
  • 云服务器(需要公网IP)
  • 域名(可选)
  • 官方文档(参考):https://ehang-io.github.io/nps/#/
  • 镜像地址(参考):https://hub.docker.com/r/ffdfgdfg/nps
  • GitHub(参考):https://github.com/ehang-io/nps/

我要白嫖

个人nps平台地址:hechaoqi.cn/nps

如果没有公网服务器,或者是不想搭建的同学,可以通过微信或公众号联系我开通账号。

平台搭建

服务端搭建

下载配置文件

  • 下载地址:https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/ehang-io/nps/tree/master/conf

下载完成后,将配置文件上传至服务器,并解压,解压完成后将产生如下几个文件

[root@VM_16_15_centos conf]# pwd
/usr/docker/nps/conf
[root@VM_16_15_centos conf]# ls
clients.json  hosts.json  multi_account.conf  npc.conf  nps.conf  server.key  server.pem  tasks.json

启动服务端

为了方便移植,我将采用docker的部署方式,启动命令如下。(需注意/usr/docker/nps/conf目录是配置文件的解压目录)

[root@VM_16_15_centos nps]# docker run -d --name nps --net=host -v /usr/docker/nps/conf:/conf ffdfgdfg/nps
09de94305d60671336a5fb41a512b833a70fb4540a1bd653f1d33b6fe19b1f57
[root@VM_16_15_centos nps]# docker logs nps
2022/04/09 03:32:18.306 [I] [nps.go:202]  the version of server is 0.26.10 ,allow client core version to be 0.26.0
2022/04/09 03:32:18.568 [I] [server.go:200]  tunnel task  start mode:httpHostServer port 0
2022/04/09 03:32:18.568 [I] [connection.go:71]  web management start, access port is 8080
2022/04/09 03:32:18.568 [E] [tcp.go:80]  listen tcp 0.0.0.0:8080: bind: address already in use
2022/04/09 03:32:18.568 [E] [server.go:105]  listen tcp 0.0.0.0:8080: bind: address already in use
2022/04/09 03:32:18.571 [I] [connection.go:62]  start https listener, port is 443
2022/04/09 03:32:18.571 [I] [connection.go:36]  server start, the bridge type is tcp, the bridge port is 8024
2022/04/09 03:32:18.571 [I] [connection.go:53]  start http listener, port is 80
2022/04/09 03:32:18.571 [E] [http.go:67]  listen tcp 0.0.0.0:80: bind: address already in use

通过日志看到nps服务启动失败了,原因是80和8080端口被占用,检查一下nps.conf配置文件,发现nps默认占用了80、443、8080、8024这四个端口,其中80与443是http与https的代理端口,8080是web管理后台的端口、8024是客户端与服务端通信的端口。一般情况下我通常将80与443端口分配给nginx使用,所以在这里通过修改nps.conf,将80与443端口号修改为180与1443(http_proxy_port=180 https_proxy_port=1443),并修改初始密码(public_vkey=xxx)。然后再次启动nps

[root@VM_16_15_centos /]# docker start nps
d489c2750d90ec429d504ce4230dff169c406c349f343845af06f8be3c8e9141
[root@VM_16_15_centos /]# docker logs nps
2022/04/09 04:02:22.387 [I] [nps.go:202]  the version of server is 0.26.10 ,allow client core version to be 0.26.0
2022/04/09 04:02:22.748 [I] [connection.go:36]  server start, the bridge type is tcp, the bridge port is 8024
2022/04/09 04:02:22.749 [I] [server.go:200]  tunnel task  start mode:httpHostServer port 0
2022/04/09 04:02:22.749 [I] [connection.go:71]  web management start, access port is 8080
2022/04/09 04:02:22.753 [I] [connection.go:62]  start https listener, port is 1443
2022/04/09 04:02:22.753 [I] [connection.go:53]  start http listener, port is 180

访问web管理后台

访问地址:http:<服务器ip>:8080

账号:admin

初始化密码:123(或者是通过nps.conf修改后的密码)

NPS——搭建属于你的内网穿透平台[通俗易懂]

NPS——搭建属于你的内网穿透平台[通俗易懂]

添加客户端链接信息

NPS——搭建属于你的内网穿透平台[通俗易懂]

NPS——搭建属于你的内网穿透平台[通俗易懂]

客户端搭建

下载客户端

下载地址:https://github.com/ehang-io/nps/releases/tag/v0.26.10 下载nps客户端并解压

NPS——搭建属于你的内网穿透平台[通俗易懂]

NPS——搭建属于你的内网穿透平台[通俗易懂]

编写启动脚本

不写脚本也可以通过CMD命令行启动,但是每次使用时都需要手动输入客户端秘钥有些繁琐。

windows脚本内容:npc.exe -server=xxx.xxx.xxx.xxx:8024 -vkey=0vkyonemij0f4r64

客户端秘钥通过服务管理后台获取

NPS——搭建属于你的内网穿透平台[通俗易懂]

启动客户端链接

双击start.bat启动客户端链接

NPS——搭建属于你的内网穿透平台[通俗易懂]

NPS——搭建属于你的内网穿透平台[通俗易懂]

使用示例

启动本地服务

NPS——搭建属于你的内网穿透平台[通俗易懂]

配置隧道

NPS——搭建属于你的内网穿透平台[通俗易懂]

NPS——搭建属于你的内网穿透平台[通俗易懂]

验证转发

通过公网IP+端口访问内网服务以验证内网穿透是否可用(公网80端口转内网7372端口)。

NPS——搭建属于你的内网穿透平台[通俗易懂]

踩坑记录

  • nps服务端需要使用宿主机网络(具体原因尚未分析)
  • 新增的隧道端口需要是可用状态,如果隧道端口号已被占用,则会转发失败
  • 云服务器安全组、防火墙等需要放开相应端口

个人建议

  • 安全组中开放一个范围的端口号供隧道使用(规范端口号范围可以防止客户端使用到已经被占用的端口,从而导致转发失败)。

尾言

nps的功能还有很多,内网穿透只是其中之一,详情大家可以通过官方文档进行学习。最后欢迎大家关注我的个人微信公众号“敲得码黛”,一起学习,一起成长。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145176.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • sm4算法加密解密

    sm4算法加密解密一、基本知识分组加密(英语:Blockcipher),又称分块加密或块密码,是一种对称密钥算法。它将明文分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。 对称加密、加密算法主要可以分为两种,一个是非对称加密算法,另一个就是对称加密算法。对称加密简单来说就是有一个明文,通过一个密钥加密之后得到一个密文,这个密文可以通过相同的密要解密得出和原来相同的明文二、sm…

  • 光棍节程序员闯关秀过关全攻略(附带小工具)[通俗易懂]

    光棍节程序员闯关秀过关全攻略(附带小工具)[通俗易懂]光棍节程序员闯关秀过关全攻略。程序员的寂寞谁能懂?"SF光棍节程序员闯关秀"智力挑战小游戏火热上线,看看你能闯到第几关?游戏地址:http://segmentfault.com

  • Origin绘图快速上手指南「建议收藏」

    Origin绘图快速上手指南「建议收藏」1、创建工程打开origin后,点击菜单栏“文件”,选择“项目另存为”,给项目命名,并存到某个工作路径。2、导入数据然后将excel中的数据(只要数据)选中后复制到Book1中,从第5行开始粘贴。可以在侧面打开“项目管理器”,给表格“Book1”重命名为“曲线数据”。还可以在表格的“长单位”处给每列数据加上标签。3、那么这时可以直接使用Origin的自动绘图功能了。选择A、B、C所有列,然后点击菜单栏的“绘图”,选择一个折线图,双击即可绘图。这样呢就是将两条曲线放到同一张图中了。如果想要自定

  • Git 设置用户名、邮箱和SSH密钥

    Git 设置用户名、邮箱和SSH密钥当我们安装好Git之后第一件事就应该是设置用户名还有邮箱,那么下面就说说怎么设置吧~查看#查看当前项目中的设置gitconfig-l#查看git全局的设置gitconfig-l–global设置按照上面说的查看方法可以得知,设置用户名和邮箱同样可是全局还有单独项目,区分就是在参数中是否加上–globalgitconfig–globaluser.name’admin’gitconfig–globaluser.email’admin@gmail.com

  • canvas孙悟空脚踩白云今年是猴年

    效果查看:http://hovertree.com/texiao/html5/30/使用HTML5的canvas画的孙悟空,CSS3画的白云飘飘。刚擒住了几个妖又降住了几个魔魑魅魍魉怎么他就这

    2021年12月22日
  • Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)

    Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)最近研究了一下流媒体技术,也试着用免费开源的Red5搭建了流服务器,实现了直播,视频播放,远程视频会议等功能,下面是近期实践的总结,一.先介绍一下流媒体技术:所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看、收听(即所谓的“在线欣赏”),而不需要等整个压缩文件下载到自己的机器上才可以欣赏的网络传输技术。一般来说,一个

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号