NPS内网穿透服务搭建,轻松实现远程办公

背景

一般为了信息安全,研发的环境都是内网的环境,外网是不能够直接登入的。但是也会有这样的情况,在其他城市的分公司需要远程接入本地在内网环境中的研发服务器。搭建NPS内网穿透服务就可以实现这种需求,特别需要的是NPS server端所在的服务器需要有一个公网的IP,获取公网IP有许多方法,比如买个运营商路由器,申请公网IP或者租个云主机(云主机都会带有一个公网IP)等。

NPS简介

NPS是一款轻量级、高性能、功能强大的内网穿透代理服务,支持tcp、udp、http等几乎所有流量转发,支持Web界面管理主机连接。GitHub的地址:https://github.com/ehang-io/nps。NPS的原理为运行NPS server的服务器(拥有公网IP)和运行NPS client的主机(在内网环境中,格外需要一条网线连接外网,能ping通公网IP)之间会创建一条TCP或UDP隧道,可以映射NPS server服务器上的某个端口到NPS client主机的指定端口,其他主机访问NPS server服务器的这个端口的流量都会通过创建的这条隧道转发到映射的NPS client主机端口,实现内网穿透的效果。下图以NPS server的服务器是一个阿里云服务器为例子,公网IP:30.110.39.175是博主为了举例子随意写的。
在这里插入图片描述

NPS server搭建(Windows)

因为阿里云主机是Windows server 2012-r2的系统,就先介绍NPS server在Windows系统下搭建的方法。用本地Windows服务器上的远程桌面连接登入云主机( 地址:30.110.39.175)。

登入云主机后,打开浏览器,从https://github.com/ehang-io/nps上下载windows_amd64_server_tar.gz。解压缩后用管理员身份运行cmd, 用cd命令到解压缩目录,安装时输入:

nps.exe install

安装完成后配置文件是nps.conf,位于C:\Program Files\nps文件夹下。修改配置文件,重要的部分如下,其他配置可以保持默认:

/* 将代理端口置空,防止端口冲突 */
http_proxy_port=
https_proxy_port=

/* NPS server的桥接端口,具体在NPS client配置命令中会体现这个端口号 */
bridge_port=8024

/* 设置Web管理界面的IP跟端口,IP使用公网IP */
web_host=30.110.39.175
web_port=8080

/* 为了信息安全考虑,重新设置Web管理界面的用户名跟密码,不要使用默认的 */
web_username=XXX
web_password=XXX

需要注意的是,所有在配置文件里使用到的端口都需要端口放行,一般NPS服务搭建没有成功,大多数是因为所使用的的端口被防火墙所限制。端口放行在Windows系统中是在防火墙下出栈入栈规则里设置。查看端口是否可用,比如8080端口,可以在cmd里用"telnet 127.0.0.1 8080"命令查看。
修改完成后就可以启动NPS server,命令为:

nps.exe start

当然还有其他命令:

nps.exe restart
nps.exe stop

NPS server启动成功的话,我们就能在任何一台连外网的主机的浏览器中输入地址:30.110.39.175:8080,登入NPS server的Web管理界面:

用户名和密码为之前在配置文件里设置的web_username和web_password。登入成功后点击客户端

然后点击新增

新增完成后会显示如下的客户端信息,点击ID左边的符号会新扩展出客户端命令,在接下来NPS client的配置中会用到,比如说这里vkey值。

然后点击右边的隧道,然后同样点击新增

在模式中选择TCP隧道,在备注中可以添加些信息,比如我们想连接的是内网里主机的22端口,即ssh的默认端口。服务端端口选择8822(根据自身情况设置),同样的8822端口要在云主机里设置好端口放行。目标端口就是内网里主机的IP地址加上22端口号,即为:192.168.0.5:22。完成后点击保存。到这步为止NPS server就基本搭建完成了。

NPS server搭建(Ubuntu 18.04)

之前介绍了NPS server在Windows系统下的搭建方法,这里也简单介绍下在linux系统中搭建的方法。首先从https://github.com/ehang-io/nps上下载linux_amd64_server.tar.gz,然后解压缩。

tar xzvf linux_amd_64_server.tar.gz

安装NPS:

sudo ./nps install

安装完成后配置文件为/etc/nps/conf/np.conf。可以用同样的方法用vim去编辑修改配置文件。然后运行NPS server。

sudo ./nps start

当然也有restart跟stop命令,运行成功后登入Web管理界面进行配置。
在Ubuntu18.04系统下开启某个端口可以用命令:

sudo ufw allow 8822

或者可以干脆关闭防火墙:

sudo ufw disable

NPS client搭建(Ubuntu 18.04)

最后介绍在NPS client在linux系统中的搭建方法。首先从https://github.com/ehang-io/nps上下载linux_amd64_client.tar.gz,然后解压缩。

tar xzvf linux_amd_64_server.tar.gz

然后运行:

sudo ./npc install -server=30.110.39.175:8024 -vkey=xxxx -type=tcp -log_level=0

这个命令跟之前在NPS Web管理界面中提到的客户端命令是类似的,也可以直接用客户端命令,用install的话就是在主机重启之后也能自动启动NPS client服务,比较方便。-server后面跟NPS server的公网IP加桥接端口号,-vkey具体的值在NPS Web管理界面中查询。
最后运行NPS client:

sudo ./npc start

一切都顺利的话,最后我们能在NPS Web管理界面中看到:

在这里插入图片描述
如果客户端状态显示在线的话说明NPS server跟NPS client的连接已经成功建立了。
假如我们在内网主机上有个账号名称叫做alex,我们就可以在任何可以上网的主机里用命令:

ssh –p 8822 alex@30.110.39.175

远程连接进入内网主机。既然一台内网主机可以用ssh方式连接,那其他在内网环境中的主机都是可见的。同样的道理,我们也可以使用远程桌面RDP的3389端口,根据图中的配置,我们使用远程桌面连接:

这样的话我们图形界面也有了,have fun!

总结

使用NPS,能让我们在任何能上网的环境下连接进入内网的主机,实现远程办公。所以在公司内网研发环境中,为了信息安全,各个服务器的权限管理就变得重要了。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李71~李先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值