NPS简介
NPS在GitHub 30.4k+ Stars,是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持Linux、Windows、Mac系统。
目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
各种模式下NPS的应用场景
NPS有多种模式可以用,下面是各模式的应用场景
域名代理模式:适用于微信公众号开发、小程序开发等场景。
TCP代理模式:适用于通过外网使用SSH连接内网机器,或进行云服务器与内网服务器端口的映射。
UDP代理模式:适用于非内网环境下使用内网DNS,或通过UDP协议访问内网设备的场景。
HTTP代理模式:适用于在外网使用HTTP代理访问内网网站的需求。
SOCKS5代理模式:适用于搭建内网穿透服务,如同VPN一样在外网访问内网资源或设备。
优势和特点
协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理…
全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务
控制全面,同时支持服务端和客户端控制
https集成,支持将后端代理和web服务转成https,同时支持多证书
操作简单,只需简单的配置即可在web ui上完成其余操作
展示信息全面,流量、系统信息、即时带宽、客户端版本等
扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等)
域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能
服务端支持多用户和用户注册功能
官方说明文档
说明文档:https://ehang-io.github.io/nps/#/use
源码地址:https://github.com/ehang-io/nps
需要一台有公网IP的服务器,
需要一台有公网IP的服务器,
需要一台有公网IP的服务器,
公网IP服务器的带宽决定了通过外网访问内网设备的速度,建议使用大带宽的服务器来部署服务端。
一、服务端部署
1.linux系统部署
a.下载服务端安装包
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
b.解压
tar -zxvf linux_amd64_server.tar.gz
c.修改配置文件。使用shh连接软件连接linux系统,进入服务端所在文件夹。修改/etc/nps/conf/nps.conf
文件。
http_proxy_ip=0.0.0.0 基本不用,因为需要备案
http_proxy_port=80
https_proxy_port=443
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem 域名ssl证书替换
https_default_key_file=conf/server.key
这一段代码可以删除掉。
bridge_port=8024 nps穿透连接端口(可改可不改)
web_host=a.o.com 域名
web_username=admin 控制台账户名
web_password=123 控制台账户密码
web_port = 8080 控制台访问端口(可改可不改)
修改上面这一段代码内的信息为你自己服务器的信息。控制台账号密码可修改为自己的复杂点的。
d.安装NPS
./nps install
默认端口
nps默认配置文件使用了80,443,8080,8024端口
80与443端口为域名解析模式默认端口
8080为web管理访问端口
8024为网桥端口,用于客户端与服务器通信
配置文件参数说明
可以根据个人需要动态调整参数,/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
e.启动服务端
./nps start
如果发现没有启动成功,可以查看日志(Windows日志文件位于当前运行目录下,linux和darwin位于/var/log/nps.log)
- 访问服务端ip:web服务端口(默认为8080)
- 使用用户名和密码登陆(默认admin/123,正式使用一定要更改)
- 创建客户端
服务端配置文件重载(目前支持功能不多)
对于linux、darwin
sudo nps reload
对于windows
nps.exe reload
说明: 仅支持部分配置重载,例如allow_user_login
auth_crypt_key
auth_key
web_username
web_password
等,未来将支持更多
服务端停止或重启
对于linux、darwin
sudo nps stop|restart
对于windows
nps.exe stop|restart
2.windows系统部署
a.下载windows服务端。
https://codeload.github.com/ehang-io/nps/zip/refs/heads/master
b.解压服务端到C盘根目录。
c.修改服务端配置文件。windows_amd64_server\conf\nps.conf
http_proxy_ip=0.0.0.0 基本不用,因为需要备案
http_proxy_port=80
https_proxy_port=443
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem 域名ssl证书替换
https_default_key_file=conf/server.key
删除上面的代码。
bridge_port=8024 nps穿透连接端口(可改可不改)
web_host=a.o.com 域名
web_username=admin 控制台账户名
web_password=123 控制台账户密码
web_port = 8080 控制台访问端口(可改可不改)
上面的代码内修改控制台账号和密码。
d.安装Windows服务端。
进入服务端目录,在文件夹地址栏处输入cmd,回车即可打开命令输入窗口。
在命令输入窗口输入命令
nps.exe install
e.启动服务端
打开windows服务,找到nps服务,启动
二、添加客户端
1.网站中创建客户端。网址是你的服务器IP:端口号(配置文件内的web_port)。账号密码也是配置文件内的,默认是admin,123。强烈建议进入后修改为复杂的账号密码。
2.选择页面左边的【客户端】选项。
3.可以自己设置,也可以全部使用默认。
新增成功后在页面可以看到客户端列表。此时我们创建完可以看到连接状态为离线,接下来我们注册客户端就可以。
三、部署客户端
1.linux系统部署客户端
a.下载客户端。
wget -b https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
b.解压缩。
tar -zxvf linux_amd64_client.tar.gz
c.启动客户端。
客户端无需修改配置文件启动。
进入客户端所在目录,输入下面的命令
./npc -server=${您服务器的IP地址}:${bridge_port} -vkey=${vkey}
- ${您服务器的IP地址} 是您要连接的 NPS 服务器的公网 IP 地址。
- ${bridge_port} 是 NPS 服务器的通信端口,通常在服务器端的配置中定义。
- -vkey=${vkey}: 指定 NPS 客户端的验证密钥。这是服务器和客户端进行通信时的身份验证信息,必须与服务器的配置匹配。取Web页面中显示的密钥。
此时通过我们公网的地址+新增对应的TCP隧道端口号进行访问就可以了。
2.windows系统客户端
a.下载客户端。
https://github.com/ehang-io/nps/releases/download/v0.26.10/windows_amd64_client.tar.gz
b.解压缩。
c.复制解压好的客户端文件到C盘。
d.修改客户端配置文件。windows_amd64_client\conf\npc.conf
只需要这几行
[common]
server_addr=服务端ip地址:8024
conn_type=tcp
vkey=创建客户端的key
e.直接双击npc.exe
会自动读取conf/npc.conf
配置文件
f.启动Windows开机自动启动配置。
①创建启动脚本start-npc.bat
脚本内容为下面的代码:
# 这一段是后台运行的命令
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
# 这一段是启动
cd C:\Users\Admin\Desktop\windows_amd64_client
.\npc.exe -server=${你的服务器公网IP地址}:8080 -vkey=123456 -config=C:\Users\Admin\Desktop\windows_amd64_client\conf\npc.conf
pause
②双击启动脚本,启动客户端。
③在电脑运行
中输入shell:startup
自动打开开机启动文件夹。
④把启动脚本或者它的快捷方式丢入开机启动文件夹,就完成了开机自动启动配置。
3.Mac系统客户端部署
与linux系统操作方法一致。
客户端下载地址:
https://github.com/ehang-io/nps/releases/download/v0.26.10/darwin_amd64_client.tar.gz
客户端启动后回到管理网页就能看到之前新增的客户端状态已经显示在线了。
四、添加TCP隧道
新增TCP隧道。各项选项的填写见下图。
新增结束就能看到刚刚添加的TCP隧道信息。
注意箭头指示的这一栏的端口号需要在公网IP的服务器上放行。不然无法访问和连接。
暂无评论内容