轻量级内网穿透服务-nps

本文介绍了NPS(内网穿透代理服务器),它具有简单易用、高性能、安全可靠、开源免费等特点。详细说明了NPS服务搭建,包括服务端安装配置、访问web界面、修改配置文件等,还介绍了客户端连接与安装配置,以及如何创建tcp隧道实现端口映射,帮助用户在公网访问内网服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. NPS概述:

  • NPS(内网穿透代理服务器)是一款由TalentYoung开发的轻量级、高性能的内网穿透代理服务器。它的设计目标是简单易用、功能强大,可以帮助用户在公网上访问内网服务。

  • NPS支持TCP、UDP、HTTP等多种协议,并提供了灵活的配置选项。用户可以根据自己的需求,配置端口映射、域名绑定、访问控制等功能。同时,NPS还支持多用户、多客户端的管理,可以满足不同场景下的需求。

1.1. NPS具有以下特点:

  1. 简单易用:NPS提供了简洁的配置文件和命令行工具,使得部署和配置变得简单快捷。
  2. 高性能:NPS采用了高性能的网络传输技术,保证了数据传输的稳定和快速。
  3. 安全可靠:NPS支持SSL/TLS加密传输,保障数据的安全性。同时,NPS还提供了访问控制功能,可以限制访问权限,增加系统的安全性。
  4. 开源免费:NPS是开源软件,遵循MIT许可证,用户可以免费使用、修改和分发。

1.2. NPS的工作原理可以通过以下示例来说明:

  • 假设您有一台内网服务器,它运行在内网的IP地址为192.168.1.100,监听着某个端口号(例如80端口)提供Web服务。但是由于内网的限制,外部网络无法直接访问该服务器。

  • 为了实现内网穿透,您可以在公网上部署一台NPS服务器,并在内网中部署NPS客户端。NPS客户端会与NPS服务器建立连接。

  • 配置NPS服务器:您在NPS服务器上配置一个映射规则,将公网的某个端口(例如8888端口)映射到内网服务器的IP地址和端口(192.168.1.100:80)。

  1. NPS客户端连接:NPS客户端会与NPS服务器建立连接,并向NPS服务器注册自己的信息。

  2. 公网访问:当外部用户通过公网访问NPS服务器的8888端口时,NPS服务器会接收到请求。

  3. 数据转发:NPS服务器收到请求后,会将请求转发给与之建立连接的NPS客户端。

  4. 内网转发:NPS客户端收到请求后,会将请求转发给内网服务器的192.168.1.100:80端口。

  5. 内网响应:内网服务器处理请求并生成响应,将响应发送给NPS客户端。

  6. 公网响应:NPS客户端将内网服务器的响应转发给NPS服务器。

  7. 用户接收:NPS服务器将内网服务器的响应发送给外部用户,用户就可以在公网上访问到内网服务器提供的Web服务。

2. NPS服务搭建

  • 官网:https://github.com/ehang-io/nps
  • 官方文档:https://ehang-io.github.io/nps/#/feature
  • 程序下载地址:https://github.com/ehang-io/nps/releases
    在这里插入图片描述

2.1. 服务端安装配置:

  • 服务端的程序可以安装在云服务器上或者你公司或者家里拉的网线是有固定IP地址(固定的公网IP地址)
  • 我这边展示的是公司有固定IP地址,所以不用在云服务器上操作。
#下载服务端程序
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
#创建nps工作目录
mkdir  /usr/local/soft/nps
#解压
tar -xf linux_amd64_server.tar.gz -C /usr/local/soft/nps/
#安装
cd /usr/local/soft/nps/
./nps install
#启动
cp -rp  nps   /usr/local/bin/
nps start

2.2. 访问web界面

  • 使用IP+8080端口,即可看到nps管理界面,用户名和密码默认是admin/123,请及时修改
    在这里插入图片描述

在这里插入图片描述

2.3. 修改配置文件

  • 如果需要修改登录用户名、密码、网页登录端口等信息,可以修改/etc/nps/conf/nps.conf即可
名称含义
web_portweb管理端口
web_passwordweb界面管理密码
web_usernameweb界面管理账号
web_base_urlweb管理主路径,用于将web管理置于代理子路径后面
bridge_port服务端客户端通信端口
https_proxy_port域名代理https代理监听端口
http_proxy_port域名代理http代理监听端口
auth_keyweb api密钥
bridge_type客户端与服务端连接方式kcp或tcp
public_vkey客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式
ip_limit是否限制ip访问,true或false或忽略
flow_store_interval服务端流量数据持久化间隔,单位分钟,忽略表示不持久化
log_level日志输出级别
auth_crypt_key获取服务端authKey时的aes加密密钥,16位
p2p_ip服务端Ip,使用p2p模式必填
p2p_portp2p模式开启的udp端口
pprof_ipdebug pprof 服务端ip
pprof_portdebug pprof 端口
disconnect_timeout客户端连接超时,单位 5s,默认值 60,即 300s = 5mins

2.4. 增强功能

  • 使用https
  1. 通过nginx实现https的处理
  2. 使用https也可在nginx监听443端口并配置ssl,并将本代理的httpsProxyPort设置为空关闭https即可,例如httpProxyPort为8020时
server {
    listen 443;
    server_name *.proxy.com;
    ssl on;
    ssl_certificate  certificate.crt;
    ssl_certificate_key private.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_set_header Host  $http_host;
        proxy_pass http://127.0.0.1:8020;
    }
}
  • web管理使用https
  1. 如果web管理需要使用https,可以在配置文件nps.conf中设置web_open_ssl=true,并配置web_cert_file和web_key_file

3. 客户端连接

  • 客户端-----》新增
    在这里插入图片描述

  • 填写备注,下面的压缩和加密选择“是”
    在这里插入图片描述

  • 新增客户端后,生成ID:2
    在这里插入图片描述

  • 点击左边的加号,会出现下面的一条客户端命令,这条命令是在客户端执行
    在这里插入图片描述

4. 客户端安装配置:

#下载客户端程序
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
#创建客户端工作目录
mkdir /usr/local/nps-client
#解压
tar -xf linux_amd64_client.tar.gz -C /usr/local/nps-client/
#启动
cd /usr/local/nps-client/

./npc -server=192.168.10.10:8024 -vkey=zl01gmco9xsuaei9 -type=tcp
  • 出现下图说明启动成功
    在这里插入图片描述
  • 也可以后台运行nps客户端服务
nohup ./npc -server=192.168.10.10:8024 -vkey=zl01gmco9xsuaei9 -type=tcp &

4.1. 可以看到网页上客户端的状态显示在线

在这里插入图片描述

5. 创建tcp隧道

  • 例:假如我这边想让192.168.100.20的80端口映射为10080,外网可以访问,下面的操作就可以实现

5.1. 需要在你公司的固定IP地址的路由器上设置端口映射

  • 每个品牌的路由器操作不一样

在这里插入图片描述

在这里插入图片描述

5.2. 创建tcp隧道,实现端口映射

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值