搭建的详细步骤官方文档已经很详细了:nps官方文档

这里我记录一下自己的安装过程(使用docker实现)

1、安装docker

首先要有docker,没有的话yum install -y docker

2、服务端(有公网ip的主机)安装nps

2.1 docker拉取镜像:
命令:docker pull ffdfgdfg/nps

查看一下:

2.2 配置conf文件(也可以不配置用默认的,服务端推荐配置)
需要下载一下官方的conf文件然后自己配置成自己的,这里主要是为了把docker里运行的nps的配置文件目录挂载到docker外面,方便修改,如果可以进入容器中修改配置文件的话可以直接启动,不用下配置文件。

GitHub慢的话可以在gitee同步GitHub的镜像里面下:nps镜像站

下载后的配置文件有这些:

修改其中的nps.conf,主要是一些端口号,我这里是想要通过域名+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处理

我这里直接采用方式二

配置文件(/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
2.3 docker跑一个nps实例(有配置文件)
自己挂载了外部配置文件:

 

docker run -d --name nps --net=host -v <本机conf目录>:/conf ffdfgdfg/nps

参数解释一下:

-d后台运行,–name给当前镜像起一个名字 -v挂载目录(将docker外的目录映射到docker内的目录,这样就读外面的了)

我是在/root/nps/conf这个目录下放了配置文件,所以我的命令就是:

没有挂载外部配置文件(用容器内的)

官方:

docker run -d --name nps --net=host ffdfgdfg/nps

我的命令是:

在阿里的防火墙记得也要打开指定端口

然后就可以访问到web界面了(配置了配置文件的):

2.4 docker跑一个nps实例(无配置文件)
用默认配置的话就异常方便了,直接命令:

然后就可以访问页面了(默认端口8024)

3、客户端(内网ip主机)安装npc

3.1 docker拉取镜像
注意这里拉取的是npc,不是nps

查看一下:

3.2 配置配置文件(不配置配置文件更方便,客户端推荐不配置)

参数解释:

项 含义
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
我这里实现想通过域名+https到访问内网主机的8080端口,所以我的配置文件是这样的:

3.3 docker启动一个镜像实例(有配置文件)
同样在外面创建一个文件映射的地址

命令:

3.4 docker启动一个镜像实例(无配置文件,推荐,异常方便)
首先我们要在我们的网页上配置一下(可以不配置直接新增):

拿到客户端命令:

然后就可以在客户端上用docker创建一个实例:

接下来你就可以看到你的客户端上线了:

4、配置内网穿透
这里有几个点需要注意:

域名解析不能配置端口号,且只能解析到你配置好的http端口和https端口
只要在内网主机上做好了https,可以直接用TCP,很方便
像这样:

然后就可以直接访问了!!!!!!!!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。