前一阵对自己装的frp不是很满意,安装了很多之后,对比一下发现nps应该是目前为止最好的一个了,所以写一篇nps的安装教程和辅助使用教程。

安装准备

环境准备,需要一台有公网IP的云服务器。
选自己需要的客户端进行下载,这里本站提供了下载。

自己开放需要的端口,查询一下自己现在有什么服务,端口是否有冲突。
安装参考官方教程https://ehang-io.github.io/nps/#/

服务端安装

  • 将安装文件传到服务器上,然后解压,执行安装命令./nps install
  • 然后进行启动,值得注意的是如果命令是nps start的话,是直接在后台运行,很不利于我们的调试,所以应该使用nps命令,就是直接输入nps,然后可以看见服务器的运行,一般都会在端口处卡住。
  • 然后我们进行调试,安装完成后的配置文件etc/nps/conf/nps.conf,进去之后调整冲突的端口,然后重新执行nps命令。

配置文件模板

appname = nps
#Boot mode(dev|pro)
runmode = dev

#HTTP(S) proxy port, no startup if empty
#监听端口,就是0.0.0.0
http_proxy_ip=0.0.0.0
#映射出来的http服务端口
http_proxy_port=7080
#映射出来的https服务端口
https_proxy_port=7443
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key

##bridge
bridge_type=tcp
#服务器和客户端的通信端口
bridge_port=7600
bridge_ip=0.0.0.0

# Public password, which clients can use to connect to the server
# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
public_vkey=123456

#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1

# log level LevelEmergency->0  LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
#log_path=nps.log

#Whether to restrict IP access, true or false or ignore
#ip_limit=true

#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000

#web
web_host=a.o.com
#面板的用户名和密码
web_username=admin
web_password=admin
web_port = 7000
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps

#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
auth_crypt_key =1234567812345678

#allow_ports=9001-9009,10001,11000-12000

#Web management multi-user login
allow_user_login=false
#是否允许用户注册
allow_user_register=false
allow_user_change_username=false


#extension
#流量限制
allow_flow_limit=false  
#带宽限制
allow_rate_limit=false
#客户端最大隧道数限制
allow_tunnel_num_limit=false
#代理到服务端本地
allow_local_proxy=true
#客户端最大连接数量限制
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false

#cache
http_cache=false
http_cache_length=100

#get origin ip
http_add_origin_header=false

#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999

#client disconnect timeout
disconnect_timeout=60

  • 然后就可以使用我们的ip加上端口打开了,默认的端口是8080

客户端配置

  • 打开面板之后我们先创建客户端,配置完成后客户端下面会生成命令,然后在我们的客户机下解压文件,如果是linux直接执行命令即可,如果是windows将./npc换成npc在cmd下即可执行。powershell的话需要./npc.exe+命令。

客户端配置

域名代理

我们的管理页面时ip+端口,很不方便,所以我们可以使用域名代理来让他拥有自己的域名,首先配置好服务端之后,在服务器上安装客户端,然后运行客户端之后,将云解析到当前服务器的IP,这里可以用一个废弃域名,然后在设置一个隐性url,这样双层解析后就可以使该管理面板具有域名了。

域名代理
域名代理

服务端开机自启

使用systemctl来控制启动
使用以下命令创建一个文件

sudo vi /lib/systemd/system/nps.service

在nps.service里写入以下内容

[Unit]
Description=nps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令
ExecStart=nps start

[Install]
WantedBy=multi-user.target
  • 启动nps:sudo systemctl start nps
  • 打开自启动:sudo systemctl enable nps
  • 重启应用:sudo systemctl restart nps
  • 停止应用:sudo systemctl stop nps
  • 查看应用:sudo systemctl status nps

客户端开机自启

这里的客户端是win10,研究了一下目前为止并没有很完美的方法,注册为系统服务的话过于麻烦,所以现在使用的是一个bat脚本的自启动。相对而言简单也易操作。

  • 我们先创建一个nps.bat文件,然后我们写入如下内容(就是web页面端生成的内容),然后关闭并保存。
npc -server=ip:端口 -vkey=key -type=tcp
  • 创建nps_start.vbs文件,写入如下内容
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "C:\nps\windows_amd64_client\nps.bat",0
  • 将vbs文件生成一个快捷方式,放到自启动目录下,然后重启尝试即可。
  • 亲自尝试了一下winws和nssm,但是都注册失败了,不知道原因,查遍了全网也没有相关的教程,这就很爆炸了。

    C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp

Last modification:July 28th, 2020 at 09:32 pm
如果你觉得我的文章帮到你的话,不要白嫖,一毛两毛也是爱。