基于NPS的穿透方案

撰文:liweinan (阿男) · GitHub / beyoung (beyoung) · GitHub

npc是一个基于go语言开发的穿透方案,它的项目地址在这里:

安装包在这里:

它需要同时在公网和私网两边的主机进行安装,下面是架构图:

下面讲解详细的安装过程。首先是服务端的安装。

服务端的安装配置过程

安装服务端

首先是服务器的安装。服务端的主机是阿里的云主机。从npc的release页面下载安装包:

下载好对应平台的安装包。解压后安装目录如下:

启动前按照自己主机具体情况,更改端口和web端登录用户名和密码。bridge配置为client链接端口:

为访问web控制台访问端口,修改下默认用户名和密码:

nps启动有两种方式:

  1. 直接启动(直接执行可运行文件)
  2. 安装启动。具体文档参考:Document

启动好server,登录web控制台:

服务端安装配置好以后,在服务端配置一个client:

服务端配置client

客户端要连接上server,首先得在控制台新建一个 client。点击左侧客户端,如图:

点击「新建」:

运行状态如下:

Basic认证可不填写。此时,客户端可连接上server。接下来是安装客户端。

客户端的安装过程

在我们实际的部署环境里,私网这边的主机使用的是一台树莓派:

在这边我们需要安装一下::armv7::版本的npc_client:

下载安装包以后,解压缩就算是安装好了,然后使用下面的命令连接服务端:

./npc -server=<public_ip>:8024 -vkey=alchemy-studio

客户端连接过程如下:

连接成功后服务端会显示客户端连接信息:

客户端连接一列显示 在线

此时要通过ssh连接上这个树莓派节点,还需要新建一个tcp隧道,点击截图红框中的隧道,

此时新建隧道:

服务端端口为服务器上需要新开端口,也是ssh -p时候需要用到的端口,这个端口需要在防火墙里面方形(如果是云服务器,得去安全控制里面放行)。目标端口为树莓派的ssh端口,这里为22

此时这个树莓派的私有节点就和阿里云的云主机节点建立了tunnel,我们就可以通过阿里云主机的节点的公网ip地址来访问树莓派的ssh服务了。

可以随便找一台设备(例子里使用手机上的ssh客户端),连接阿里云的ip地址和服务端口(注意服务端口不是22端口,因为云主机的22端口在自己用,而映射树莓派的ssh的服务端口另外设置):

设置完成后,下面是连接情况:

此时可以看到,我们通过公有云主机节点,通过ssh的方式,穿透登录到了私有节点树莓派主机上。

以上就是npc的一个使用场景。通过这样一个tunnel,我们还可以完成很多别的事情,比如通过ssh tunnel映射vnc服务,或者把私有节点的服务反向暴露给公有云节点,形成一个::混合云::的架构。比如应用在炼金工房的混合云架构里:

以上就是npc穿透方案的一个介绍。

My Github Page: https://github.com/liweinan

Powered by Jekyll and Theme by solid

If you have any question want to ask or find bugs regarding with my blog posts, please report it here:
https://github.com/liweinan/liweinan.github.io/issues