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

@Wen's  September 27, 2023

前期准备

  • 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 nps2022/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.02022/04/09 03:32:18.568 [I] [server.go:200]  tunnel task  start mode:httpHostServer port 02022/04/09 03:32:18.568 [I] [connection.go:71]  web management start, access port is 80802022/04/09 03:32:18.568 [E] [tcp.go:80]  listen tcp 0.0.0.0:8080: bind: address already in use2022/04/09 03:32:18.568 [E] [server.go:105]  listen tcp 0.0.0.0:8080: bind: address already in use2022/04/09 03:32:18.571 [I] [connection.go:62]  start https listener, port is 4432022/04/09 03:32:18.571 [I] [connection.go:36]  server start, the bridge type is tcp, the bridge port is 80242022/04/09 03:32:18.571 [I] [connection.go:53]  start http listener, port is 802022/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 nps2022/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.02022/04/09 04:02:22.748 [I] [connection.go:36]  server start, the bridge type is tcp, the bridge port is 80242022/04/09 04:02:22.749 [I] [server.go:200]  tunnel task  start mode:httpHostServer port 02022/04/09 04:02:22.749 [I] [connection.go:71]  web management start, access port is 80802022/04/09 04:02:22.753 [I] [connection.go:62]  start https listener, port is 14432022/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——搭建属于你的内网穿透平台[通俗易懂]

添加客户端链接信息

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

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

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

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

客户端搭建

下载客户端

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

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

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

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

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

编写启动脚本

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

windows脚本内容:npc.exe -server=xxx.xxx.xxx.xxx:8024 -vkey=0vkyonemij0f4r64
客户端秘钥通过服务管理后台获取

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

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

启动客户端链接

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

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

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

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

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

使用示例

启动本地服务

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

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

配置隧道

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

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

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

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

验证转发

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

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

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

踩坑记录

  • nps服务端需要使用宿主机网络(具体原因尚未分析)

  • 新增的隧道端口需要是可用状态,如果隧道端口号已被占用,则会转发失败

  • 云服务器安全组、防火墙等需要放开相应端口

个人建议

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

尾言

nps的功能还有很多,内网穿透只是其中之一,详情大家可以通过官方文档进行学习。

感谢作者,转载请注明出处:https://javaforall.cn/145176.html原文链接:https://javaforall.c


添加新评论