问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

轻量级内网穿透服务-nps

创作时间:
作者:
@小白创作中心

轻量级内网穿透服务-nps

引用
CSDN
1.
https://blog.csdn.net/weixin_45625174/article/details/136713047

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服务搭建

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_port web管理端口
web_password web界面管理密码
web_username web界面管理账号
web_base_url web管理主路径,用于将web管理置于代理子路径后面
bridge_port 服务端客户端通信端口
https_proxy_port 域名代理https代理监听端口
http_proxy_port 域名代理http代理监听端口
auth_key web 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_port p2p模式开启的udp端口
pprof_ip debug pprof 服务端ip
pprof_port debug 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隧道,实现端口映射

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号