nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理,可实现在非内网环境下如同使用vpn一样访问内网资源和设备的效果。
目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。
Docker
https://hub.docker.com/r/oldiy/nps-server
https://hub.docker.com/r/oldiy/npc-client
本项目地址:https://github.com/cnlh/nps
今天我们只讲以Centos7作为服务器,群晖作为客户端为例的一个教程,其他环境请到页面下方加入群聊一起讨论!
由于是内网穿透服务,所以一定会有一个服务器端和一个客户端,好了,我们按步骤开始安装走起!使用Docker安装服务器端。
1.安装docker
- 执行以下几条命令
- 安装并启动Docker
1234567891011 | #获取root权限sudo –i#更新yum update#安装 Dockeryum –y install docker#启动 Docker 后台服务service docker start |
2.安装nps服务器
- 执行以下命令安装nps服务器端
- 将<本机conf目录>修改为你自己需要保存conf文件的目录
- 修改并输入以下命令启动nps服务器
1 | docker run –d —name nps —net=host –v <本机conf目录>:/nps/conf oldiy/nps–server:latest |
如果运行成功就可以通过 http://<Centos7 IP>:8080 访问管理服务器,默认密码123。
如果测试无误后,可以添加如下参数,让nps总是可以自动重启(听不懂这条可以无视)
1 | —restart=always |
特殊情况(已安装过其他服务占用了80等端口)
安装完毕后如果服务器端口已经被占用的情况,服务会启动失败,同时<本机conf目录>下面已经有了nps.conf文件,如果本机端口被占用,服务启动失败,此时我们编辑conf文件,修改被占用的默认端口,再重新执行以上命令即可。
输入下面命令查看已经使用的端口
1 | netstat –ntlp |
对照conf文件查找冲突端口,并修改
编辑conf方法如下
12345 | #cd到conf目录cd <本机conf目录>#vim命令编辑confvim nps.conf |
进入后按Ins键进入编辑,编辑结束后按 Esc,之后输入:wq 回车保存退出
重新执行第2步命令即可!
之后就可以通过http://<Centos7 IP>:8080 访问服务器web管理界面,默认密码123。
服务端配置文件
- nps.conf
名称 | 含义 |
---|---|
httpport | web管理端口 |
password | web界面管理密码 |
bridePort | 服务端客户端通信端口 |
pemPath | ssl certFile绝对路径 |
keyPath | ssl keyFile绝对路径 |
httpsProxyPort | 域名代理https代理监听端口 |
httpProxyPort | 域名代理http代理监听端口 |
authip | web api免验证IP地址 |
bridgeType | 客户端与服务端连接方式kcp或tcp |
publicVkey | 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式 |
ipLimit | 是否限制ip访问,true或false或忽略 |
flowStoreInterval | 服务端流量数据持久化间隔,单位分钟,忽略表示不持久化 |
logLevel | 日志输出级别 |
3.设置防火墙
如果开了防火墙,我们需要关闭防火墙或者放行8080、8284、80、443端口,如需要其他端口,自己放行!
- 关闭防火墙执行以下命令
12345 | #停止firewallsystemctl stop firewalld.service#禁止firewall开机启动systemctl disable firewalld.service |
此时服务器端安装完毕!
4.在web界面新建一个客户端(只做http内网网页穿透演示)
之后添加要穿透内网使用的域名。并确认域名已经解析到你的nps服务器IP。
经过测试使用,nps的最大优点就是客户端无需任何设置,无需编写conf文件,直接连接到服务器之后,全部穿透和隧道均可以在服务器web端操作添加!相当方便!并且支持https,支持socks5等等。