2019-3-19 作者更新0.18.0以上版本默认暂不支持中文UI,想用的可以使用0.16.0
2019-3-19 更新视频教程:https://odcn.top/2019/03/20/2955/
经过博主测试,nps客户端无需任何设置,全部设置均可在服务器web页面设置完成!可以说相当方便,适合小白使用~!
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
1 2 3 4 5 6 7 8 9 10 11 |
#获取root权限 sudo -i #更新 yum update #安装 Docker yum -y install docker #启动 Docker 后台服务 service docker start |
2.安装nps服务器
- 执行以下命令安装nps服务器端
- 将<本机conf目录>修改为你自己需要保存conf文件的目录
- 修改并输入以下命令启动nps服务器
1 |
docker run -d --privileged=true --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方法如下
1 2 3 4 5 |
#cd到conf目录 cd <本机conf目录> #vim命令编辑conf vim 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端口,如需要其他端口,自己放行!
- 关闭防火墙执行以下命令
1 2 3 4 5 |
#停止firewall systemctl stop firewalld.service #禁止firewall开机启动 systemctl disable firewalld.service |
此时服务器端安装完毕!
4.在web界面新建一个客户端(只做http内网网页穿透演示)
添加客户端——设置备注名和链接秘钥!并牢记你设置的<秘钥>,客户端连接需要使用!
之后添加要穿透内网使用的域名。并确认域名已经解析到你的nps服务器IP。
点击新增
这里添加需要绑定的域名(域名需解析到nps服务器),并填写内网IP+端口
- 如果需要其他穿透服务,可以查看 http://<服务器IP>:8080/index/help 有详细官方教材
按操作添加客户端和域名后,我们进行客户端的安装
5.群晖安装客户端教程
群晖打开Docker并注册表搜索 oldiy,找到项目
下载之后,到镜像——找到项目选中——启动——高级设置——环境——修改服务器IP 和秘钥,然后应用启动容器。
此时容器启动后,我们回到nps服务器——客户端管理,可以看到群晖客户端已经连接成功,可以点击后面的 (域名、隧道)添加穿透类型!(可以点击左下方使用说明查看详细介绍)
经过测试使用,nps的最大优点就是客户端无需任何设置,无需编写conf文件,直接连接到服务器之后,全部穿透和隧道均可以在服务器web端操作添加!相当方便!并且支持https,支持socks5等等。
作者更新也很频繁,相信nps以后一定会越来越好用,越来越强大的!
常见问题
docker run 命令无法启动容器,使用 docker ps 看不到启动容器
可以使用 docker ps -a 查看未启动的容器,docker logs –tail -tf 容器名/容器ID 查看日志,找出错误原因,一般都是 cp xxxxxx Permission denied 这个错误
出现这个问题都是因为在挂载主机目录的到容器后,操作挂载的目录出现权限问题导致
原因是CentOS7中的安全模块selinux把权限禁掉了,提供2个方法解决该问题
docker rm 容器ID 删除创建失败的容器
方法1
添加 –privileged=true 参数,使用高权限(因为很多人使用的vps都有selinux安全模块,所以此方法已经更新到教程里!)
1 |
docker run -d --privileged=true --name nps --net=host -v <本机conf目录>:/nps/conf oldiy/nps-server:latest |
方法2
临时关闭selinux:
1 |
setenforce 0 |
其他系统安装Docker方法
1 2 3 4 5 6 7 8 9 10 11 |
#CentOS 6 rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum update -y yum -y install docker-io service docker start chkconfig docker on #CentOS 7、Debian、Ubuntu通用方法 curl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker.service |
安装好docker之后,直接跳转到第2步安装nps即可
- 本站教程,未注明转载均为原创内容,仅做为学习参考使用,切勿用于非法及商业用途!造成的后果作者不承担任何责任!
- 如果转载请注明出处!oD^Blog
- 本文如果需要更新,或者失效请联系微信 : oldiy2018 【微信不解答任何问题,不接收任何红包!】
- 如果支持作者,请点击下方赞赏,支持一杯饮料!
- 如果有问题可以点击【加入电报群】和我一起沟通或者下方留言讨论!
微信赞赏支付宝赞赏
oldiy出品必属精品,现在好了,可以免费直接使用一级域名了,是这样的么?打脸不?
群晖docker中搜索到不能下载,nps-client提示没有标签
检查自己的网络
请教一个新手问题,群辉的docker是图形界面,如何执行类似这种命令行
docker run -d \
–name=xware \
-m 256m \
-p 9000:9000 \
-v ~/data:/data \
–mac-address 00:1A:2B:3C:4D:5E \
–privileged \
keli/xiazaibao-xware
群晖无法绑定mac地址,直接去ssh执行
nps不稳定,开了个sock5代理,然后通过sock5代理开远程桌面,在远程桌面里面拷贝文件到本地多次都是直接异常断开.用frps就完全没问题
nps本身也处于开发阶段,不适合用于生产环境!
群晖只是安装的客户端, 那服务的只能安装在linux 服务器下吗?
我想使用一个群晖是用不了的把。还要linux 服务器是吗?
服务端要安装在服务器上才可以!或者有公网IP的机器上
好的。知道了。
请问下,我添加域名代理的时候,显示添加失败是咋回事?
建议生成环境使用frp穿透,这个nps还没有开发完成,存在一些BUG
请问debian 上如何安装的
除了 安装docker的方法不同 其他都一样
#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on
#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker.service
您好,请教个小白问题,本机conf目录怎么填
你自己本机目录
Unable to find image ‘oldiy/nps-server:latest’ locally
Trying to pull repository docker.io/oldiy/nps-server …
latest: Pulling from docker.io/oldiy/nps-server
c87736221ed0: Pull complete
566dc862703e: Pull complete
f81da1b20dea: Pull complete
eb96cc262e5c: Pull complete
Digest: sha256:067e0128ea2f8ca4be912866de682e506e347a395584245cba1d20fda508d9ff
Status: Downloaded newer image for docker.io/oldiy/nps-server:latest
/usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/bb6698b41b0fccbcec89d97ed89d68cc5475b6185e20628b33d3450cd509ca6b-init/merged: invalid argument.
See ‘/usr/bin/docker-current run –help’.
什么问题啊,不成功
你挂载了磁盘?实际没有建立?
疑问:
1.公网主机和内网群晖之间可以成功通讯吗?
2.公网主机和内网服务器之间可以成功通讯吗?
当然可以啊,这个就是内网穿透用的
请问怎样获得一个centos7的服务器呢?
购买,或者谷歌云等
你好,nps内网穿透已经做好,请问这个能解决 PLEX 的远程访问问题吗?
知道端口的话 全都可以穿透
博主好,照着你的方法服务器端装了nps,监听端口因和宝塔冲突给改了88,在宝塔面板里和ecs里都对监听、隧道、web端口做了放行,但就是打不开,也不知道啥原因
那你要用88端口穿透
楼主你好,我是小白,按照你的步骤操作,最后用地址访问链接不上
vps:阿里云vps
端口:应该没有冲突,显示的80 以及 8080 后面对应的是nps
防火墙,按照你给的命令运行过一遍
阿里云有防火墙需要打开
通过docker 安装的服务器端目录安装在哪里,后续要更新版本呢。
还有如何起停nps服务呢,直接起停容器么?
建议你查看docker帮助
不行啊 ,客户端显示nas外网ip已经更新上去 内网ip+端口也检查过没错 但是我的域名 就是访问不了nas
你域名指向nps,然后要设置域名绑定内网地址