序言
在之前的文章中,我们介绍了两种外网穿透工具frp和zerotier。frp可参照《利用frp工具实现外网穿透、随时随地访问外网服务》,zerotier可参照《ZeroTier实现外网穿透、异地组网》。
应该说各个工具均有其各自的异同点。zerotier的缺点主要集中在:①安全性比较低;②免费版联接数目有限制;③每个终端均须要安装顾客端。frp尽管避开了联接数目限制、每个终端安装顾客端的麻烦,但其存在:①连接稳定性不够,例如长时间不使用后,顾客端与服务端会出现联接超时的情况;②访问端自构建联接后、间隔一段时间再访问服务会出现响应较慢的情况;③管理界面不够友好,难以自动配置。
这么有没有一种工具可以同时解决以上问题呢,答案就是:NPS。实际上,NPS这款工具我也是在上一篇frp文章分享的顶部评论中首次据说,这几天趁着空闲时间,研究了一下,果然十分强悍!明天就带着实操案例和你们简单分享一下。
一、NPS简介1.关于NPS
一款轻量级、高性能、功能强悍的外网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可拿来访问外网网站、本地支付插口调试、ssh访问、远程桌面,外网dns解析、内网socks5代理等等……红旗linux系统下载,并带有功能强悍的web管理端。
NPS项目地址:
NPS英文文档:
#/?id=nps
NPS下载地址:
2.NPS常见用途做陌陌公众号开发、小程序开发等—->域名代理模式想在内网通过ssh联接外网的机器,做云服务器到外网服务器端口的映射,—->tcp代理模式在非外网环境下使用外网dns,或则须要通过udp访问外网机器等—->udp代理模式在内网使用HTTP代理访问外网站点—->http代理模式搭建一个外网穿透ss,在内网就像使用外网vpn一样访问外网资源或则设备—->socks5代理模式3.NPS特征二、安装布署
NPS提供了多种安装方法,分别为安装包安装、源码安装以及docker安装。我们这儿选用的是安装包安装。
1.个人需求1)远程桌面
在家中的Windows笔记本上访问公司的Windows办公笔记本。
2)访问指定外网服务
在任意可以访问互联网的终端设备的浏览器上访问公司外网服务器布署的gitlab、jira、Jenkins等外网服务,满足出差或居家办公需求。
2.布署规划
布署NPS同样须要一台带有网段IP地址的服务器,用于与外网服务的端口之间构建映射关系,IP地址假定为1.1.1.1;
服务器
地址
用途
网段服务器
1.1.1.1
布署服务端
外网服务器1
192.168.1.123
布署顾客端
外网Windows办公笔记本
192.168.1.131
布署顾客端
其他Windows或Mac设备
能上网即可,用于访问外网服务
2.安装服务端1)下载解压安装包
下载对应的系统版本即可,服务端和顾客端是单独的,因而须要下载多份文件。
将下载出来的服务端压缩包上传到网段服务器上并解压:
tar -xvf linux_amd64_server.tar.gz
2)目录剖析
解压成功后,会得到以下文件及目录:
2)安装NPS
./nps install
3)启动NPS服务
nps start # 停止和重启可用stop和restart
假如发觉没有启动成功linux socks5代理,可以使用nps(.exe)stop,之后运行nps.(exe)运行调试,或查看日志(Windows日志文件坐落当前运行目录下,linux和darwin坐落/var/log/nps.log)
4)前台访问
网段ip:8080访问nps登陆页面:
使用用户名和密码登录(默认admin/123,即将使用一定要修改,可以通过conf/nps.conf文件更改)
5)新增顾客端
在web管理页面--顾客端,点击“新增”创建一个顾客端,填写内容如下:
创建,点击顾客端上面的+号,会手动展开并展示顾客端命令,复制此条命令,前面会用到。
创建Windows和Linux顾客端步骤一样,没有任何区别,只要设置的惟一验证秘钥不一致,而且你能区分开那个是Linux的、哪个是Windows的即可。
3.Linux安装顾客端1)下载解压安装包
将下载出来的顾客端上传到外网服务器,此后步入文件所在目录并解压:
tar -xvf linux_amd64_client.tar.gz
2)联接服务端
在顾客端终端上执行后面复制的命令,联接服务端(linux直接执行即可,windows将./npc换成npc.exe用cmd执行)。其中vkey就是我们上面创建顾客端时设置的惟一验证秘钥。
./npc -server=服务端IP:8024 -vkey=linux对应的密钥 -type=tcp
注意,假若出现如右图所示的联接超时情况,很可能是服务端所在的云服务器的安全组或防火墙没有放开8024端口
须要到安全组设置中放开8024端口:
再度执行联接命令,即可联接成功:
此时,web管理端中该顾客端的联接都会处于在线状态:
3)注册到系统服务(可选)
上述在终端命令行执行联接命令,联接成功后仍然处于前台执行,其他哪些也做不了,一旦Ctrl+C才会强行中止,带来众多不便,除非另开一个终端窗口。此时可以将其注册到系统服务,进而实现后台运行:
./npc install -server=服务端IP:8024 -vkey=linux对应的密钥 -type=tcp
npc start # 启动客户端,停止和重启可用stop和restart
4.Windows安装顾客端1)下载解压安装包
将下载出来的顾客端复制到须要穿透的外网Windows笔记本,此后步入文件所在目录,使用解压工具进行并解压,解压成功后会得到以下文件及目录:
注意:npc-update.exe是前面启动顾客端成功后生成的,不是一开始解压下来的。
2)联接服务端
在顾客端终端上执行上面复制的命令,联接服务端(windows将./npc换成npc.exe用cmd执行)。其中vkey就是我们后面创建顾客端时设置的惟一验证秘钥。
npc.exe -server=服务端IP:8024 -vkey=Windows对应的密钥 -type=tcp
此时,web管理端中该顾客端的联接都会处于在线状态:
3)注册到系统服务(可选)
npc.exe install -server=服务端IP:8024 -vkey=Windows对应的密钥 -type=tcp
npc.exe start # 启动客户端,停止和重启可用stop和restart
此时在NPC已注册到Windows系统服务列表中,且处于正在运行状态:
注意:假如须要更换命令内容须要先卸载npc.exeuninstall,再重新注册。
三、配置穿透服务
我们本次的主要目的是通过TCP隧洞实现远程桌面以及jira等外网服务的远程访问,所以会重点讲解TCP隧洞的配置过程。
1.远程桌面(TCP隧洞)
场景:想通过访问网段服务器1.1.1.1的6000端口,联接外网Windows个人办公笔记本的3690(Windows远程桌面默认端口),实现远程桌面的联接。
1)创建TCP隧洞
服务端端口填写6000,外网端口填写3690,可以不带ip地址,前提是顾客端ID要是Windows那台设备对应的ID,另外网段服务器的安全组中需放开6000端口。
2)访问远程桌面
非常注意:被远程访问的笔记本,须要提早在设置中打开容许被远程访问。
①在其他可以访问互联网的Windows笔记本上,通过win+R键调出运行窗口,输入mstsc回车
②随后在弹出的远程桌面联接窗口中输入网段IP地址:6000,并点击联接。需注意用户名填写正确。
③填写该用户的访问密码,即屏保密码
④用户名及密码正确,联接后会显示远程桌面的内容
2.外网服务映射(TCP隧洞)
场景:想通过访问网段服务器1.1.1.1的8888端口,联接外网机器192.168.1.123的8888端口,实现外网8888端口所在服务的访问。具体步骤如下:
1)创建TCP隧洞
在刚刚创建的顾客端隧洞管理中添加一条tcp隧洞,填写窃听的端口(8888)、内网目标ip和目标端口(192.168.1.123:8888),保存。
如右图列表所示,我在多台服务器上分别安装了顾客端,并配置了多个外网服务(指定端口)的隧洞转发
2)访问外网服务
①访问mayfly-go
在之前的文章中分享过mayfly-go,详情可参照《一站式Linux&数据库管理平台mayfly-go》。访问网段服务器ip:8888linux命令行和shell脚本编程宝典,就相当于访问外网192.168.1.123:8888,访问页面如下:
通过穿透后的mayfly-go,即可随时随地在web端的ssh终端操作管理外网服务器以及外网服务器了,nice!
②访问jira
jira布署在外网的211服务器上,端口为8088linux socks5代理,访问网段IP:8088,也就相当于访问192.168.1.211:8088。
假如由于疫情居家办公,bug库布署在外网上,而刚好又须要水单或修补bug,通过这些外网穿透进行访问bug库倒也不失为一种好的选择。虽然受限于网段服务器的带宽限制,访问速率可能会稍稍慢一些,不过聊胜过无。
小结
以上就是NPS的简单介绍,以及借助NPS实现远程桌面与外网服务穿透访问的全过程。总体来说,NPS比zerotier愈发安全,没有联接数目上的限制;比frp反应速率更快,且支持可视化配置,省去因更改顾客端配置而引起的来回重启顾客端的麻烦。
不仅上述提及的TCP转发外,NPS还提供了多种外网穿透模式:
因为时间匆忙,我还没有来得及一一试用,你们感兴趣的可以对照官方文档自行体验。也欢迎留言与我交流!