当前位置: 首页 > Linux

内网穿透神器NPS的使用

时间:2023-04-06 18:25:57 Linux

内网穿透是指通过网络代理将内网中的软件服务暴露给广域网用户。实现内网穿透的方法有很多,比如通过防火墙硬件和网络穿透软件。本文主要介绍通过NPS软件进行典型的内网穿透。NPS介绍nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可以支持任意tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面、内网dns解析等...),还支持内网http代理、内网socks5代理、p2p等,并拥有强大的web管理终端。它的官网是:https://ehang-io.github.io/nps它的官网文档对软件的安装和使用描述的很完整,基本上按照官方文档就可以安装和使用。基本概念要了解本软件的使用,首先需要了解一个基本的内网穿透使用场景。服务器端一般安装在公网服务器上,是所有内网资源的统一入口。客户端一般安装在内网服务器上,是连接内网服务器和公网服务器的桥梁。客户端连接端口,客户端使用这个key连接到服务器连接端口建立长连接,用于将外网服务器的请求信息转发给对应的客户端,对应的客户端也通过返回相关信息这个港口。客户端密钥。服务端部署完成后,需要建立客户端秘钥,客户端连接时需要使用秘钥进行连接。一台服务器可以对应多个客户端。服务器端的不同端口可以映射到不同客户端的相应本地端口。典型场景在本文中,我们设计了一个最常见的场景来说明整个软件的使用过程。我们设定基本要求如下。我们有一台公网IP的服务器,服务器名称为public-server,操作系统为linux。我们有两个内部网络服务器inner-server1(linux)和inner-server2(windows)。我们将公网服务器的8081端口,映射到inner-server1:80;端口8082映射到inner-server2:80端口。两个代理协议都是TCP协议。操作步骤外网服务器public-server(linux)服务器nps安装首先需要登录其github项目发布版本页面(https://github.com/ehang-io/nps/releases)下载对应版本的服务器端nps软件。根据public-server的情况,我们这里下载,linux\_amd??64\_server.tar.gz版本。通过ssh登录public-server,将文件上传到对应的安装目录,需要先解压。(假设文件上传到目录/usr/nps)tar-xzvflinux_amd64_server.tar.gz解压完成后,进入解压目录,需要执行相应的安装命令,确保我们可以加载nps相关命令加载到bin资源中sudo./npsinstall后,我们需要启动相关的服务端软件,在控制台查看是否启动成功。sudonpsstart配置网络代理并开启public-serverWEB服务器端口启动成功后,我们需要开启防火墙8080端口,这样我们就可以通过浏览器登录其管理控制台了。同时需要打开8024端口,客户端才能连接到服务端的通信端口。sudofirewall-cmd--permanent--add-port=8080/tcpsudofirewall-cmd--permanent--add-port=8024/tcpsudofirewall-cmd--reload使用浏览器登录相关端口,提示用户名和密码。使用以下默认用户名密码登录admin/123登录成功后一定要修改相关密码,修改配置文件nps.confsudovim/etc/nps/conf/nps.conf``````web_usernameweb_password重启相关服务,再次尝试登录sudonpsstopsudonpsstartpassedweb管理控制台配置客户端访问信息,使用浏览器登录相关端口,提示输入用户名和密码。使用修改后的用户名和密码登录,如下所示。点击Client->Add,填写备注(inner-server1),允许客户端通过配置文件连接(Yes),压缩(Yes),加密(Yes),Basic认证用户名不要填写,基本认证密码,唯一验证密钥,点击Client->Add,填写备注(inner-server2),允许客户端通过配置文件连接(Yes),压缩(Yes),加密(Yes),做Basicauthenticationusername不填写,Basicauthentication在创建密码和唯一认证密钥后查看客户端列表,保存两台服务器自动生成的唯一认证密钥和客户端ID,以备日后使用。这里我们假设它们分别是“client-key”和“client-id”在内网服务器inner-server1上安装连接npc(linux)客户端,需要登录其github项目发布版本页面(https://github.com/ehang-io/nps/releases)下载对应版本的客户端nps软件。根据public-server的情况,这里我们下载linux\_amd??64\_client.tar.gz版本。通过ssh登录inner-server1,将文件上传到对应的安装目录,需要先解压。(假设文件上传到目录/usr/npc)tar-xzvflinux_amd64_client.tar.gz解压完成后,进入解压目录。需要执行相应的安装命令,保证我们可以加载npc相关命令和bin资源,设置Serverip地址端口和connectionkey(上一步创建客户端时自动生成并备份的信息)。sudo./npcinstall-server=public-server:8024-vkey=client-key之后我们需要启动相关的服务端软件,在控制台查看是否启动成功。sudonpcstopsudonpcstartintranetserverinner-server2安装npc(windows)客户端并连接,需要登录其github项目发布版本页面(https://github.com/ehang-io/nps/releases)下载相应版本的客户端nps软件。根据public-server的情况,我们这里下载,windows\_amd??64\_client.tar.gz版本。通过ssh登录inner-server1,将文件上传到对应的安装目录,需要先解压。(假设文件上传到目录D:\npc)tar-xzvfwindows_amd64_client.tar.gz解压完成后,进入解压目录,需要执行相应的安装命令,并设置服务器ip地址端口和连接密钥(在上一步创建新客户端时自动生成和备份的信息)。npc.exeinstall-server=public-server:8024-vkey=inner-server2唯一验证密钥后,我们需要启动相关服务器软件,在控制台查看是否启动成功。npc.exestopnpc.exestartexternalnetworkserverpublic-server(linux)服务器端口映射配置使用浏览器登录相关端口,提示用户名和密码。使用修改后的用户名和密码登录,如下所示。这里需要使用上面提到的创建客户端后自动生成的客户端ID。选择TCP隧道->添加,依次填写模式(TCP)、客户端ID(client-id)、备注(inner-server1-80)、**服务器端口(8081)、目标(127.0.0.1:80)选择TCP隧道->添加,依次填写模式(TCP)、客户端ID(client-id)、备注(inner-server2-80)、**服务器端口(8082)、目标(127.0.0.1:80)开启public-server相关防火墙sudofirewall-cmd--permanent--add-port=8081/tcpsudofirewall-cmd--permanent--add-port=8082/tcpsudofirewall-cmd--reloadtestaccesspublic-server:8081/8082端口,观察服务器和客户端日志,验证是否转发成功。综上,我们完成了最常见的基于nps的内网穿透配置。事实上,nps支持很多协议和操作系统。大家可以根据官方文档一步步学习验证。总体系统可用性非常好,我已经部署了一年没有任何问题。版权声明,