文章目录
因为要进行微信小程序开发,需要做域名配置和服务代理,所以简单看了看
nps
内网穿透。
1. NPS
介绍
NPS
是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持**tcp
、udp
流量转发**,可支持任何**tcp
、udp
上层协议(访问内网网站、本地支付接口调试、ssh
访问、远程桌面,内网dns
解析等等……),此外还支持内网http
代理、内网socks5
代理**、p2p
等,并带有功能强大的web
管理端。
Github
地址:一款轻量级、高性能、功能强大的内网穿透代理服务器
Web管理界面
2. 作用
- 做微信公众号开发、小程序开发等----> 域名代理模式
- 想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,---->
tcp
代理模式 - 在非内网环境下使用内网
dns
,或者需要通过udp
访问内网机器等---->udp
代理模式 - 在外网使用
HTTP
代理访问内网站点---->http
代理模式 - 搭建一个内网穿透
ss
,在外网如同使用内网vpn
一样访问内网资源或者设备---->socks5
代理模式
3. 准备工作
一个有公网ip
的Linux服务器,一个已备案域名,服务器及客户端压缩包。
压缩包地址
4. 启动
4.1 服务端
下载完服务器压缩包后,解压,然后进入解压后的文件夹
4.1.1 修改配置文件
当前配置文件位于当前文件/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 |
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日志文件位于当前运行目录下
停止和重启可用 stop
和restart
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 | 与服务端通信模式(tcp 或kcp ) |
vkey | 服务端配置文件中的密钥(非web) |
username | socks5 或http (s)密码保护用户名(可忽略) |
password | socks5 或http (s)密码保护密码(可忽略) |
compress | 是否压缩传输(true或false或忽略) |
crypt | 是否加密传输(true或false或忽略) |
rate_limit | 速度限制,可忽略 |
flow_limit | 流量限制,可忽略 |
remark | 客户端备注,可忽略 |
max_conn | 最大连接数,可忽略 |
pprof_addr | debug 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
项 | 含义 |
---|---|
mode | tcp |
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
项 | 含义 |
---|---|
mode | udp |
server_port | 在服务端的代理端口 |
target_addr | 内网目标 |
5)http
代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[http]
mode=httpProxy
server_port=9003
项 | 含义 |
---|---|
mode | httpProxy |
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
项 | 含义 |
---|---|
mode | socks5 |
server_port | 在服务端的代理端口 |
multi_account | socks5 多账号配置文件(可选),配置后使用basic_username 和basic_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
项 | 含义 |
---|---|
mode | p2p |
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/
项 | 含义 |
---|---|
mode | file |
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
在nps.conf
中将https_just_proxy
设置为true,并且打开https_proxy_port
端口,然后nps
将直接转发https
请求到内网服务器上,由内网服务器进行https
处理