前期准备
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——搭建属于你的内网穿透平台[通俗易懂]
客户端搭建
下载客户端
下载地址: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的功能还有很多,内网穿透只是其中之一,详情大家可以通过官方文档进行学习。
感谢作者,转载请注明出处:https://javaforall.cn/145176.html原文链接:https://javaforall.c