一、基本介绍:
NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器、
- 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理…
- 可以用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……
- 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务
- 控制全面,同时支持服务端和客户端控制,带有功能强大的web管理端
- https集成,支持将后端代理和web服务转成https,同时支持多证书
- 操作简单,只需简单的配置即可在web ui上完成其余操作
- 展示信息全面,流量、系统信息、即时带宽、客户端版本等
- 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等)
- 域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能
- 服务端支持多用户和用户注册功能
二、安装方式:
1、Docker安装:
2、安装包安装:下载对应的系统版本即可,服务端和客户端是单独的
点击访问安装包下载地址:Releases
3、源码安装:
安装源码:go get -u ehang.io/nps
服务端编译:go build cmd/nps/nps.go
客户端编译:go build cmd/npc/npc.go
三、基本使用:
1、安装:
对于linux|darwin sudo ./nps install
对于windows,管理员身份运行cmd,进入安装目录 nps.exe install
2、启动:
对于linux|darwin sudo nps start
对于windows,管理员身份运行cmd,进入程序目录 nps.exe start
安装后windows配置文件位于 C:\Program Files\nps,linux和darwin位于/etc/nps
停止和重启可用,stop和restart
如果发现没有启动成功,可以使用nps(.exe) stop,然后运行nps.(exe)运行调试,或查看日志(Windows日志文件位于当前运行目录下,linux和darwin位于/var/log/nps.log)
3、版本检查:对客户端以及服务端均可以使用参数-version
打印版本
nps -version或./nps -version
npc -version或./npc -version
4、版本更新:
服务端更新:请首先执行 sudo nps stop
或者 nps.exe stop
停止运行,然后
对于linux
sudo nps-update update
对于windows
nps-update.exe update
更新完成后,执行执行 sudo nps start
或者 nps.exe start
重新运行即可完成升级
如果无法更新成功,可以直接自行下载releases压缩包然后覆盖原有的nps二进制文件和web目录
注意:nps install
之后的 nps 不在原位置,请使用 whereis nps
查找具体目录覆盖 nps 二进制文件
客户端更新:首先进入到对于的客户端二进制文件目录,先执行sudo npc stop
或者npc.exe stop
停止运行,然后
对于linux
sudo npc-update update
对于windows
npc-update.exe update
更新完成后,执行执行sudo npc start
或者npc.exe start
重新运行即可完成升级
如果无法更新成功,可以直接自行下载releases压缩包然后覆盖原有的npc二进制文件
5、注册到系统服务(开机启动、守护进程)
对于linux、darwin
注册:sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
启动:sudo npc start
停止:sudo npc stop
如果需要更换命令内容需要先卸载./npc uninstall,再重新注册
对于windows,使用管理员身份运行cmd
注册:npc.exe install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
启动:npc.exe start
停止:npc.exe stop
如果需要更换命令内容需要先卸载npc.exe uninstall,再重新注册
如果需要当客户端退出时自动重启客户端,请按照如图所示配置
注册到服务后,日志文件windows位于当前目录下,linux和darwin位于/var/log/npc.log
6、群晖支持:可在releases中下载spk群晖套件,例如npc_x64-6.1_0.19.0-1.spk
四、配置文件说明:
1、服务端配置文件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 |
增强功能:
使用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处理
与nginx配合
有时候我们还需要在云服务器上运行nginx来保证静态文件缓存等,本代理可和nginx配合使用,在配置文件中将httpProxyPort设置为非80端口,并在nginx中配置代理,例如httpProxyPort为8010时
server {
listen 80;
server_name *.proxy.com;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8010;
}
}
Copy to clipboardErrorCopied
如需使用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;
}
}
Copy to clipboardErrorCopied
web管理使用https
如果web管理需要使用https,可以在配置文件nps.conf中设置web_open_ssl=true,并配置web_cert_file和web_key_file
web使用Caddy代理
如果将web配置到Caddy代理,实现子路径访问nps,可以这样配置.
假设我们想通过 http://caddy_ip:caddy_port/nps 来访问后台, Caddyfile 这样配置:
caddy_ip:caddy_port/nps {
##server_ip 为 nps 服务器IP
##web_port 为 nps 后台端口
proxy / http://server_ip:web_port/nps {
transparent
}
}
Copy to clipboardErrorCopied
nps.conf 修改 web_base_url 为 /nps 即可
web_base_url=/nps
Copy to clipboardErrorCopied
关闭代理
如需关闭http代理可在配置文件中将http_proxy_port设置为空,如需关闭https代理可在配置文件中将https_proxy_port设置为空。
流量数据持久化
服务端支持将流量数据持久化,默认情况下是关闭的,如果有需求可以设置nps.conf中的flow_store_interval参数,单位为分钟
注意: nps不会持久化通过公钥连接的客户端
系统信息显示
nps服务端支持在web上显示和统计服务器的相关信息,但默认一些统计图表是关闭的,如需开启请在nps.conf中设置system_info_display=true
自定义客户端连接密钥
web上可以自定义客户端连接的密钥,但是必须具有唯一性
关闭公钥访问
可以将nps.conf中的public_vkey设置为空或者删除
关闭web管理
可以将nps.conf中的web_port设置为空或者删除
服务端多用户登陆
如果将nps.conf中的allow_user_login设置为true,服务端web将支持多用户登陆,登陆用户名为user,默认密码为每个客户端的验证密钥,登陆后可以进入客户端编辑修改web登陆的用户名和密码,默认该功能是关闭的。
用户注册功能
nps服务端支持用户注册功能,可将nps.conf中的allow_user_register设置为true,开启后登陆页将会有有注册功能,
监听指定ip
nps支持每个隧道监听不同的服务端端口,在nps.conf中设置allow_multi_ip=true后,可在web中控制,或者npc配置文件中(可忽略,默认为0.0.0.0)
server_ip=xxx
Copy to clipboardErrorCopied
代理到服务端本地
在使用nps监听80或者443端口时,默认是将所有的请求都会转发到内网上,但有时候我们的nps服务器的上一些服务也需要使用这两个端口,nps提供类似于nginx proxy_pass 的功能,支持将代理到服务器本地,该功能支持域名解析,tcp、udp隧道,默认关闭。
即: 假设在nps的vps服务器上有一个服务使用5000端口,这时候nps占用了80端口和443,我们想能使用一个域名通过http(s)访问到5000的服务。
使用方式: 在nps.conf中设置allow_local_proxy=true,然后在web上设置想转发的隧道或者域名然后选择转发到本地选项即可成功。
五、使用示例
统一准备工作(必做):
开启服务端,假设公网服务器ip为1.1.1.1,配置文件中bridge_port为8024,配置文件中web_port为8080
访问1.1.1.1:8080
在客户端管理中创建一个客户端,记录下验证密钥
内网客户端运行(windows使用cmd运行加.exe)
./npc -server=1.1.1.1:8024 -vkey=客户端的密钥
Copy to clipboardErrorCopied
注意:运行服务端后,请确保能从客户端设备上正常访问配置文件中所配置的bridge_port端口,telnet,netcat这类的来检查
域名解析:
适用范围: 小程序开发、微信公众号开发、产品演示
注意:域名解析模式为http反向代理,不是dns服务器,在web上能够轻松灵活配置
假设场景:
有一个域名proxy.com,有一台公网机器ip为1.1.1.1
两个内网开发站点127.0.0.1:81,127.0.0.1:82
想通过(http|https://)a.proxy.com访问127.0.0.1:81,通过(http|https://)b.proxy.com访问127.0.0.1:82
使用步骤
将*.proxy.com解析到公网服务器1.1.1.1
点击刚才创建的客户端的域名管理,添加两条规则规则:1、域名:a.proxy.com,内网目标:127.0.0.1:81,2、域名:b.proxy.com,内网目标:127.0.0.1:82
现在访问(http|https://)a.proxy.com,b.proxy.com即可成功
https: 如需使用https请进行相关配置,详见 使用https
tcp隧道:
适用范围: ssh、远程桌面等tcp连接场景
假设场景: 想通过访问公网服务器1.1.1.1的8001端口,连接内网机器10.1.50.101的22端口,实现ssh连接
使用步骤
在刚才创建的客户端隧道管理中添加一条tcp隧道,填写监听的端口(8001)、内网目标ip和目标端口(10.1.50.101:22),保存。
访问公网服务器ip(1.1.1.1),填写的监听端口(8001),相当于访问内网ip(10.1.50.101):目标端口(22),例如:ssh -p 8001 root@1.1.1.1
udp隧道:
适用范围: 内网dns解析等udp连接场景
假设场景: 内网有一台dns(10.1.50.102:53),在非内网环境下想使用该dns,公网服务器为1.1.1.1
使用步骤
在刚才创建的客户端的隧道管理中添加一条udp隧道,填写监听的端口(53)、内网目标ip和目标端口(10.1.50.102:53),保存。
修改需要使用的dns地址为1.1.1.1,则相当于使用10.1.50.102作为dns服务器
socks5代理
适用范围: 在外网环境下如同使用vpn一样访问内网设备或者资源
假设场景: 想将公网服务器1.1.1.1的8003端口作为socks5代理,达到访问内网任意设备或者资源的效果
使用步骤
在刚才创建的客户端隧道管理中添加一条socks5代理,填写监听的端口(8003),保存。
在外网环境的本机配置socks5代理(例如使用proxifier进行全局代理),ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(8003),即可畅享内网了
注意 经过socks5代理,当收到socks5数据包时socket已经是accept状态。表现是扫描端口全open,建立连接后短时间关闭。若想同内网表现一致,建议远程连接一台设备。
http正向代理:
适用范围: 在外网环境下使用http正向代理访问内网站点
假设场景: 想将公网服务器1.1.1.1的8004端口作为http代理,访问内网网站
使用步骤
在刚才创建的客户端隧道管理中添加一条http代理,填写监听的端口(8004),保存。
在外网环境的本机配置http代理,ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(8004),即可访问了
注意:对于私密代理与p2p,除了统一配置的客户端和服务端,还需要一个客户端作为访问端提供一个端口来访问
私密代理:
适用范围: 无需占用多余的端口、安全性要求较高可以防止其他人连接的tcp服务,例如ssh。
假设场景: 无需新增多的端口实现访问内网服务器10.1.50.2的22端口
使用步骤
在刚才创建的客户端中添加一条私密代理,并设置唯一密钥secrettest和内网目标10.1.50.2:22
在需要连接ssh的机器上以执行命令
./npc -server=1.1.1.1:8024 -vkey=vkey -type=tcp -password=secrettest -local_type=secret
Copy to clipboardErrorCopied
如需指定本地端口可加参数-local_port=xx,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设10.1.50.2用户名为root,现在执行ssh -p 2000 root@127.0.0.1即可访问ssh
p2p服务:
适用范围: 大流量传输场景,流量不经过公网服务器,但是由于p2p穿透和nat类型关系较大,不保证100%成功,支持大部分nat类型。nat类型检测
假设场景:
想通过访问使用端机器(访问端,也就是本机)的2000端口—->访问到内网机器 10.2.50.2的22端口
使用步骤
在nps.conf中设置p2p_ip(nps服务器ip)和p2p_port(nps服务器udp端口)
注:若 p2p_port 设置为6000,请在防火墙开放6000~6002(额外添加2个端口)udp端口
在刚才刚才创建的客户端中添加一条p2p代理,并设置唯一密钥p2pssh
在使用端机器(本机)执行命令
./npc -server=1.1.1.1:8024 -vkey=123 -password=p2pssh -target=10.2.50.2:22
Copy to clipboardErrorCopied
如需指定本地端口可加参数-local_port=xx,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设内网机器为10.2.50.2的ssh用户名为root,现在在本机上执行ssh -p 2000 root@127.0.0.1即可访问机器2的ssh,如果是网站在浏览器访问127.0.0.1:2000端口即可。
六、扩展功能
缓存支持:
对于web站点来说,一些静态文件往往消耗更大的流量,且在内网穿透中,静态文件还需到客户端获取一次,这将导致更大的流量消耗。nps在域名解析代理中支持对静态文件进行缓存。
即假设一个站点有a.css,nps将只需从npc客户端读取一次该文件,然后把该文件的内容放在内存中,下一次将不再对npc客户端进行请求而直接返回内存中的对应内容。该功能默认是关闭的,如需开启请在nps.conf中设置http_cache=true,并设置http_cache_length(缓存文件的个数,消耗内存,不宜过大,0表示不限制个数)
数据压缩支持:
由于是内网穿透,内网客户端与服务端之间的隧道存在大量的数据交换,为节省流量,加快传输速度,由此本程序支持SNNAPY形式的压缩。
所有模式均支持数据压缩
在web管理或客户端配置文件中设置
加密传输:
如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了ssh协议等,通过设置 配置文件,将服务端与客户端之间的通信内容加密传输,将会有效防止流量被拦截。
nps现在默认每次启动时随机生成tls证书,用于加密传输
站点保护:
域名代理模式所有客户端共用一个http服务端口,在知道域名后任何人都可访问,一些开发或者测试环境需要保密,所以可以设置用户名和密码,nps将通过 Http Basic Auth 来保护,访问时需要输入正确的用户名和密码。
在web管理或客户端配置文件中设置
host修改:
由于内网站点需要的host可能与公网域名不一致,域名代理支持host修改功能,即修改request的header中的host字段。
使用方法:在web管理中设置
自定义header:
支持对header进行新增或者修改,以配合服务的需要
404页面配置:
支持域名解析模式的自定义404页面,修改/web/static/page/error.html中内容即可,暂不支持静态文件等内容
流量限制:
支持客户端级流量限制,当该客户端入口流量与出口流量达到设定的总量后会拒绝服务 ,域名代理会返回404页面,其他代理会拒绝连接,使用该功能需要在nps.conf中设置allow_flow_limit,默认是关闭的。
带宽限制:
支持客户端级带宽限制,带宽计算方式为入口和出口总和,权重均衡,使用该功能需要在nps.conf中设置allow_rate_limit,默认是关闭的。
负载均衡:
本代理支持域名解析模式和tcp代理的负载均衡,在web域名添加或者编辑中内网目标分行填写多个目标即可实现轮训级别的负载均衡
端口白名单:
为了防止服务端上的端口被滥用,可在nps.conf中配置allow_ports限制可开启的端口,忽略或者不填表示端口不受限制,格式:
allow_ports=9001-9009,10001,11000-12000
Copy to clipboardErrorCopied
端口范围映射:
当客户端以配置文件的方式启动时,可以将本地的端口进行范围映射,仅支持tcp和udp模式,例如:
[tcp]
mode=tcp
server_port=9001-9009,10001,11000-12000
target_port=8001-8009,10002,13000-14000
Copy to clipboardErrorCopied
逗号分隔,可单个或者范围,注意上下端口的对应关系,无法一一对应将不能成功
端口范围映射到其他机器:
[tcp]
mode=tcp
server_port=9001-9009,10001,11000-12000
target_port=8001-8009,10002,13000-14000
target_ip=10.1.50.2
Copy to clipboardErrorCopied
填写target_ip后则表示映射的该地址机器的端口,忽略则便是映射本地127.0.0.1,仅范围映射时有效
KCP协议支持:
在网络质量非常好的情况下,例如专线,内网,可以开启略微降低延迟。如需使用可在nps.conf中修改bridge_type为kcp ,设置后本代理将开启udp端口(bridge_port)
注意:当服务端为kcp时,客户端连接时也需要使用相同配置,无配置文件模式加上参数type=kcp,配置文件模式在配置文件中设置tp=kcp
域名泛解析:
支持域名泛解析,例如将host设置为*.proxy.com,a.proxy.com、b.proxy.com等都将解析到同一目标,在web管理中或客户端配置文件中将host设置为此格式即可。
URL路由:
本代理支持根据URL将同一域名转发到不同的内网服务器,可在web中或客户端配置文件中设置,此参数也可忽略,例如在客户端配置文件中
[web1]
host=a.proxy.com
target_addr=127.0.0.1:7001
location=/test
[web2]
host=a.proxy.com
target_addr=127.0.0.1:7002
location=/static
Copy to clipboardErrorCopied
对于a.proxy.com/test将转发到web1,对于a.proxy.com/static将转发到web2
限制ip访问:
如果将一些危险性高的端口例如ssh端口暴露在公网上,可能会带来一些风险,本代理支持限制ip访问。
使用方法: 在配置文件nps.conf中设置ip_limit=true,设置后仅通过注册的ip方可访问。
ip注册:
方式一: 在需要访问的机器上,运行客户端
./npc register -server=ip:port -vkey=公钥或客户端密钥 time=2
Copy to clipboardErrorCopied
time为有效小时数,例如time=2,在当前时间后的两小时内,本机公网ip都可以访问nps代理.
方式二: 此外nps的web登陆也可提供验证的功能,成功登陆nps web admin后将自动为登陆的ip注册两小时的允许访问权限。
注意: 本机公网ip并不是一成不变的,请自行注意有效期的设置,同时同一网络下,多人也可能是在公用同一个公网ip。
客户端最大连接数:
为防止恶意大量长连接,影响服务端程序的稳定性,可以在web或客户端配置文件中为每个客户端设置最大连接数。该功能针对socks5、http正向代理、域名代理、tcp代理、udp代理、私密代理生效,使用该功能需要在nps.conf中设置allow_connection_num_limit=true,默认是关闭的。
客户端最大隧道数限制:
nps支持对客户端的隧道数量进行限制,该功能默认是关闭的,如需开启,请在nps.conf中设置allow_tunnel_num_limit=true。
端口复用:
在一些严格的网络环境中,对端口的个数等限制较大,nps支持强大端口复用功能。将bridge_port、 http_proxy_port、 https_proxy_port 、web_port都设置为同一端口,也能正常使用。
使用时将需要复用的端口设置为与bridge_port一致即可,将自动识别。
如需将web管理的端口也复用,需要配置web_host也就是一个二级域名以便区分
多路复用:
nps主要通信默认基于多路复用,无需开启。
多路复用基于TCP滑动窗口原理设计,动态计算延迟以及带宽来算出应该往网络管道中打入的流量。 由于主要通信大多采用TCP协议,并无法探测其实时丢包情况,对于产生丢包重传的情况,采用较大的宽容度, 5分钟的等待时间,超时将会关闭当前隧道连接并重新建立,这将会抛弃当前所有的连接。 在Linux上,可以通过调节内核参数来适应不同应用场景。
对于需求大带宽又有一定的丢包的场景,可以保持默认参数不变,尽可能少抛弃连接 高并发下可根据[Linux系统限制](## Linux系统限制) 调整
对于延迟敏感而又有一定丢包的场景,可以适当调整TCP重传次数 tcp_syn_retries, tcp_retries1, tcp_retries2 高并发同上 nps会在系统主动关闭连接的时候拿到报错,进而重新建立隧道连接
环境变量渲染:
npc支持环境变量渲染以适应在某些特殊场景下的要求。
在无配置文件启动模式下: 设置环境变量
export NPC_SERVER_ADDR=1.1.1.1:8024
export NPC_SERVER_VKEY=xxxxx
Copy to clipboardErrorCopied
直接执行./npc即可运行
在配置文件启动模式下:
[common]
server_addr={{.NPC_SERVER_ADDR}}
conn_type=tcp
vkey={{.NPC_SERVER_VKEY}}
auto_reconnection=true
[web]
host={{.NPC_WEB_HOST}}
target_addr={{.NPC_WEB_TARGET}}
Copy to clipboardErrorCopied
在配置文件中填入相应的环境变量名称,npc将自动进行渲染配置文件替换环境变量
健康检查:
当客户端以配置文件模式启动时,支持多节点的健康检查。配置示例如下
[health_check_test1]
health_check_timeout=1
health_check_max_failed=3
health_check_interval=1
health_http_url=/
health_check_type=http
health_check_target=127.0.0.1:8083,127.0.0.1:8082
[health_check_test2]
health_check_timeout=1
health_check_max_failed=3
health_check_interval=1
health_check_type=tcp
health_check_target=127.0.0.1:8083,127.0.0.1:8082
Copy to clipboardErrorCopied
health关键词必须在开头存在
第一种是http模式,也就是以get的方式请求目标+url,返回状态码为200表示成功
第一种是tcp模式,也就是以tcp的方式与目标建立连接,能成功建立连接表示成功
如果失败次数超过health_check_max_failed,nps则会移除该npc下的所有该目标,如果失败后目标重新上线,nps将自动将目标重新加入。
项 含义
health_check_timeout 健康检查超时时间
health_check_max_failed 健康检查允许失败次数
health_check_interval 健康检查间隔
health_check_type 健康检查类型
health_check_target 健康检查目标,多个以逗号(,)分隔
health_check_type 健康检查类型
health_http_url 健康检查url,仅http模式适用
日志输出:
日志输出级别
对于npc:
-log_level=0~7 -log_path=npc.log
Copy to clipboardErrorCopied
LevelEmergency->0 LevelAlert->1
LevelCritical->2 LevelError->3
LevelWarning->4 LevelNotice->5
LevelInformational->6 LevelDebug->7
Copy to clipboardErrorCopied
默认为全输出,级别为0到7
对于nps:
在nps.conf中设置相关配置即可
pprof性能分析与调试:
可在服务端与客户端配置中开启pprof端口,用于性能分析与调试,注释或留空相应参数为关闭。
默认为关闭状态
自定义客户端超时检测断开时间:
客户端与服务端间会间隔5s相互发送延迟测量包,这个时间间隔不可修改。 可修改延迟测量包丢包的次数,默认为60也就是5分钟都收不到一个延迟测量回包,则会断开客户端连接。 值得注意的是需要客户端的socket关闭,才会进行重连,也就是当客户端无法收到服务端的fin包时,只有客户端自行关闭socket才行。 也就是假如服务端设置为较低值,而客户端设置较高值,而此时服务端断开连接而客户端无法收到服务端的fin包,客户端也会继续等着直到触发客户端的超时设置。
在nps.conf或npc.conf中设置disconnect_timeout即可,客户端还可附带-disconnect_timeout=60参数启动
web管理页面的https端口号可以修改吗,怎么修改呢