后端开发小技巧-NPS内网穿透


​ 因为要进行微信小程序开发,需要做域名配置和服务代理,所以简单看了看 nps内网穿透。

1. NPS介绍

NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持**tcpudp流量转发**,可支持任何**tcpudp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理**、p2p,并带有功能强大的web管理端。

Github地址:一款轻量级、高性能、功能强大的内网穿透代理服务器
Web管理界面
Web管理界面

2. 作用

  1. 做微信公众号开发、小程序开发等----> 域名代理模式
  2. 想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式
  3. 在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式
  4. 在外网使用HTTP代理访问内网站点----> http代理模式
  5. 搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备----> socks5代理模式

3. 准备工作

​ 一个有公网ip的Linux服务器,一个已备案域名,服务器及客户端压缩包。

压缩包地址

4. 启动

4.1 服务端

​ 下载完服务器压缩包后,解压,然后进入解压后的文件夹

4.1.1 修改配置文件

当前配置文件位于当前文件/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客户端与服务端连接方式kcptcp
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

4.1.2 执行安装命令

​ Linux: sudo ./nps install

​ Windows:管理员身份运行 cmd,进入安装目录nps.exe install

4.1.3 启动

​ Linux:sudo nps start

​ Windows:管理员身份运行 cmd,进入程序目录nps.exe start

注册后配置文件位置:
	linux和darwin位于/etc/nps
	windows位于C:\Program Files\nps
日志文件位置:
	linux和darwin位于/var/log/nps.log
	Windows日志文件位于当前运行目录下

​ 停止和重启可用 stoprestart

4.1.4 服务器配置文件重载

​ Linux: sudo nps reload

​ Windows: nps.exe reload

说明: 仅支持部分配置重载,例如allow_user_login auth_crypt_key auth_key web_username web_password

4.2 客户端

4.2.1 在服务器Web端添加客户端配置,复制命令。

添加客户端配置

复制命令

4.2.2 无配置文件模式

​ 此模式的各种配置在服务端web管理中完成,客户端除运行一条命令外无需任何其他设置

 ./npc -server=ip:port -vkey=web界面中显示的密钥

4.2.3 注册到系统服务(开机启动、守护进程)

​ 对于Linux:

​ 注册:sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)

​ 启动:sudo npc start

​ 停止:sudo npc stop

​ 如果需要更换命令内容需要先卸载 ./npc uninstall,再重新注册。

​ 对于Windows:

​ 注册:npc.exe install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)

​ 启动:npc.exe start

​ 停止:npc.exe stop

​ 如果需要更换命令内容需要先卸载npc.exe uninstall,再重新注册

注册到服务后,日志文件位置:
	linux和darwin位于/var/log/npc.log
	windows位于当前目录下

4.2.4 配置文件模式

​ 此模式使用nps的公钥或者客户端私钥验证,各种配置在客户端完成,同时服务端web也可以进行管理

 ./npc -config=npc配置文件路径

查看配置列表

编辑配置信息

4.2.5 配置文件说明

1)全局配置
[common]
server_addr=1.1.1.1:8024
conn_type=tcp
vkey=123
username=111
password=222
compress=true
crypt=true
rate_limit=10000
flow_limit=100
remark=test
max_conn=10
#pprof_addr=0.0.0.0:9999
含义
server_addr服务端ip/域名:port
conn_type与服务端通信模式(tcpkcp)
vkey服务端配置文件中的密钥(非web)
usernamesocks5http(s)密码保护用户名(可忽略)
passwordsocks5http(s)密码保护密码(可忽略)
compress是否压缩传输(true或false或忽略)
crypt是否加密传输(true或false或忽略)
rate_limit速度限制,可忽略
flow_limit流量限制,可忽略
remark客户端备注,可忽略
max_conn最大连接数,可忽略
pprof_addrdebug pprof ip:port
2)域名代理
[common]
server_addr=1.1.1.1:8024
vkey=123
[web1]
host=a.proxy.com
target_addr=127.0.0.1:8080,127.0.0.1:8082
host_change=www.proxy.com
header_set_proxy=nps
含义
web1备注
host域名(http
target_addr内网目标,负载均衡时多个目标,逗号隔开
host_change请求host修改
header_xxx请求header修改或添加,header_proxy表示添加header proxy:nps
3)tcp隧道模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[tcp]
mode=tcp
target_addr=127.0.0.1:8080
server_port=9001
含义
modetcp
server_port在服务端的代理端口
tartget_addr内网目标
4)udp隧道模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[udp]
mode=udp
target_addr=127.0.0.1:8080
server_port=9002
含义
modeudp
server_port在服务端的代理端口
target_addr内网目标
5)http代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[http]
mode=httpProxy
server_port=9003
含义
modehttpProxy
server_port在服务端的代理端口
6) socks5代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[socks5]
mode=socks5
server_port=9004
multi_account=multi_account.conf
含义
modesocks5
server_port在服务端的代理端口
multi_accountsocks5多账号配置文件(可选),配置后使用basic_usernamebasic_password无法通过认证
7)p2p代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[p2p_ssh]
mode=p2p
password=ssh2
target_addr=10.1.50.2:22
含义
modep2p
password唯一密钥
target_addr内网目标
8)文件访问模式

​ 利用nps提供一个公网可访问的本地文件服务,此模式仅客户端使用配置文件模式方可启动

[common]
server_addr=1.1.1.1:8024
vkey=123
[file]
mode=file
server_port=9100
local_path=/tmp/
strip_pre=/web/
含义
modefile
server_port服务端开启的端口
local_path本地文件目录
strip_pre前缀

​ 对于strip_pre,访问公网ip:9100/web/相当于访问/tmp/目录

9)断线重连
[common]
auto_reconnection=true

5. 使用https

  • 方式一:类似于nginx实现https的处理

​ 在配置文件中将https_proxy_port设置为443或者其他你想配置的端口,将https_just_proxy设置为false,nps 重启后,在web管理界面,域名新增或修改界面中修改域名证书和密钥。

此外: 可以在nps.conf中设置一个默认的https配置,当遇到未在web中设置https证书的域名解析时,将自动使用默认证书,另还有一种情况就是对于某些请求的clienthello不携带sni扩展信息,nps也将自动使用默认证书

https增强

  • 方式二:在内网对应服务器上设置https

​ 在nps.conf中将https_just_proxy设置为true,并且打开https_proxy_port端口,然后nps将直接转发https请求到内网服务器上,由内网服务器进行https处理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值