内网穿透工具 nps

展开阅读全文
利用nps与自家带宽搭建内网穿透代理服务器,实现手机远程访问群晖监控录

一、前言

本人在A,B两地有两台黑裙晖主机,分别搭建了两台无限制许可的群晖监控录像机,然后在黑群晖主机做花生壳DDNS,然后手机使用DS Cam用来查看人员日常活动情况。但是A,B两地路由器在重新拨号后,经常出现10.x.x.x的内网地址,导致ddns不可用,每次都要去A,B两地去重新拨号,直到拨成公网IP(但是有时候会一直无法获得公网ip)。

每次出问题就上门重拨号不是一个通用化解决方案,费时费力,搞的心累... 那就研究一下内网穿透,来实现代理访问吧。分析对比各类穿透方案:花生壳、FRP、NPS等,最终选用NPS,主要是看中它的客户端不需要任何配置文件所有配置完全在服务端实现,在家就能轻松对多台远端主机进行管理,并且NPS的web管理界面简洁、美观、易用。

图1.1

图1.2

图1.3

二、准备工作

  1. 有公网ip的宽带:自家宽带,朋友家宽带,云服务器等等 (本文使用的自家200兆宽带)

  2. 支持端口映射的路由器一台 (本文使用的路由器为WRT1900AC)

  3. 域名:可以是*级域名,二级域名,壳域名(本文使用白群晖自带的二级域名)

  4. 代理服务器一台:x86,arm均可,最好能安装docker,因为部署与维护比较简单(本文使用一台白群晖主机并且使用docker部署相关程序)

  5. 监控服务器多台 (本文使用两台黑群晖主机)

  6. 内网穿透服务端软件:nps(本文使用docker版本的nps)

  7. 内网穿透客户端软件:npc(本文使用群晖原生spk版本的npc)

  8. 监控录像软件:群晖Surveillance Station

  9. 移动端app:群晖DS Cam

三、简单介绍

  1. 使用手机上的DS Cam访问代理服务器的域名与端口(abc.xx.com:1234)。

  2. 代理服务器Synology_1的NPS-server接受到访问请求,根据配置文件中端口1234的代理规则,使用专用代理隧道与内网Synology_2主机的NPC-client进行通信。

  3. 监控服务器Synology_2的NPC-client 向本机(或者局域网内)的Surveillance Station请求数据,然后回传给Synology_1的NPS-server。

  4. 现在我们的DS Cam就可以通过代理服务器Synology_1访问到监控服务器Synology_2的监控数据了。

图3.1

四、使用带公网ip环境的主机部署nps-server

1.下载nps-server配置文件,地址,然后将配置文件上传到群晖主机在群晖主机上,我使用的目录是docker/npsserver/conf(图4.1)。

图4.1

2.群晖套件中心-搜索并安装docker;打开docker-注册表-选择官方docker版本ffdfgdfg/nps(图4.2)。

图4.2

3.打开docker-映像-双击ffdfgdfg/nps:latest 进行配置:

(1)勾选“使用高权限执行容器”(图4.3);

图4.3

(2)然后点击高级设置:勾选自动重新启动(图4.4);

图4.4

(3)点击 “卷”,在docker中映射一下本地目录,选择“添加文件夹”,浏览目录选择docker/npsserver/conf,点击“选择”(图4.5),然后配置装载路径为/conf(图4.6);

图4.5

图4.6

(4)点击“网络”,勾选“使用与Docker Host相同的网络” (图4.7);

图4.7

(5)点击应用,然后点击下一步,在最终确认面板里,取消勾选“向导完成后运行此容器” (图4.8)

图4.8

4.打开上传配置文件的群晖目录,打开nps.conf文件进行修改(图4.9),主要就是修改http_proxy_port,https_proxy_port,将原来的80,443端口修改为不冲突的,如10001,10002之类,修改完成之后保存一下。不修改的话,nps-server可能会因为端口被占用而启动失败。

图4.9

5.打开docker界面,选择“容器”,点击启动(图4.10)。

图4.10

6.修改docker容器内的时区,docker容器默认的时区不是上海,然后docker日志时间和主机时间会不一致(待完善:我手动拷贝了一下群晖时区到docker容器),这个问题即使不处理,nps-server好像也能正常运行。解决方案百度“docker 时区”即可。

7.使用浏览器访问http://主机IP地址:8080 进入控制台。输入默认的admin/123登录控制台(图4.11)。

图4.11

8.进入web控制台,点击客户端-新增,填写“备注”,“唯一验证秘钥”,“压缩”,“加密”等信息 ,然后点击新增(图4.12)。

图4.12

9.为新增的客户端添加隧道,点击隧道(图4.13),填写“客户端ID”,“备注”,“服务端端口”,“目标ip:端口” (图4.14),然后点击新增;

图4.13

图4.1

10.nps-server 部署完成。

五、配置DDNS动态域名服务与代理端口映射

DDNS动态域名服务:我使用的是白群晖的DDNS域名解析,在控制面板-外部访问-DDNS-服务供应商Synology 中添加(图5.1)。

图5.1

配置端口转发:需要转发的端口为(1)转发默认服务端口8024(2)转发图4.14中的代理端口。

图5.2

六、在A,B两地的无公网ip的黑群晖上部署npc客户端

1.下载群晖版本的npc安装程序,地址,文件名“npc_syno.spk”

2.打开套件中心-手动安装-选择npc_syno.spk文件,安装即可。

3.打开npc客户端,填写图5.1中的DDNS的域名、nps-server的默认端口8024、以及图4.12中的唯一验证秘钥,点击保存。npc客户端配置完成,下图为npc程序界面 (图6.1)

图6.1

七,打开web控制台,查看客户端状态,已经显示客户端在线状态了。(图7.1)

图7.1

八、此时打开手机的DS Cam,输入图5.1中的ddns动态域名,与图5.2中配置的代理端口,然后输入远端监控主机的用户名密码,就可以正常使用了。(图8.1,图8.2)

图8.1

图8.2

进入web控制台,查看客户端状态,当DS Cam同时六画面实时预览时,占用带宽大约为1MB/s。

图8.3

九、总结

使用这个方案解决了我一个大问题,从此不管远端是公网ip还是内网ip,我这两套自建的群晖监控录像机,外网访问再也不会掉链子了。不需要花生壳,萤石云之类的东西,自建内网穿透方便快捷,稳定可靠!


展开阅读全文