nps端口映射面板
最后便是nps端口映射面板的搭建了,要说他的应用过程可谓是十分广泛的,就比如我本地有个服务想让其他朋友也能访问得到,但由于一般来说非云服务的带宽很少带有公网IP,都是基于NAT的网络情况,这时候我们便可以利用我们的云服务器来进行端口映射,将我们本地的端口转发到我们的开发全家桶服务器上,这样大家都可以通过开发全家桶服务器访问到我们本地无公网IP机子所转发的端口了。
对于我个人来说,我经常用于转发我本地Mysql的端口,用于项目调试,当然玩法还有很多,比如对于Kali系统来说,我们可以映射一个端口方便我们反弹Shell等操作,游戏用途的话可以局域网连接,用法因人而异。
项目地址:https://github.com/ehang-io/nps
下面是安装过程,首先是去官方git仓库拉取项目:
- git clone https://github.com/ehang-io/nps.git
复制代码
国内服务器拉取无速度可以使用一下镜像:
- git clone https://github.com.cnpmjs.org/ehang-io/nps.git
复制代码
拉取完成后输入:
进入项目目录:
输入命令,拷贝并重命名一份Dockerfile文件:
- cp Dockerfile.nps Dockerfile
复制代码
编辑Dockerfile文件:
把第二行的:
改为,防止国内机子因为网络问题无法构建镜像:
- ARG GOPROXY=https://goproxy.cn,direct
复制代码
接着跟上边的步骤差不多,构建镜像:
构建完成后,新建一个目录与一个配置文件:
- mkdir /conf
- vim /conf/nps.conf
复制代码
填写内容如下(账号密码在#web处,线上部署请自行修改):
- appname = nps
- #Boot mode(dev|pro)
- runmode = dev
- #HTTP(S) proxy port, no startup if empty
- 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
- https_default_key_file=conf/server.key
- ##bridge
- bridge_type=tcp
- bridge_port=8024
- 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=123
- #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=123
- web_port = 8080
- 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=false
- 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
复制代码
配置项对应的含义:
| 名称 | 含义 |
| ------------------- | ------------------------------------------------------------ |
| 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 |
然后在/conf目录继续新建三个空文件(无内容):
- vim /conf/hosts.json
- vim /conf/clients.json
- vim /conf/hosts.json
复制代码
运行容器:
- docker run -d -p 10080:80 -p 10443:443 -p 18080:8080 -p 18024:8024 -v /conf:/conf --name nps nps
复制代码
其中:
80与443端口为域名解析模式默认端口
8080为web管理访问端口
8024为网桥端口,用于客户端与服务器通信
最后还是老规矩,使用nginx进行反代:
反代后访问我们的网站:
至此,我们的nps面板已经搭建好了,具体使用方法由于篇幅所限就不过多赘述了,网上已经有很全面的使用教程,也可以参考官方文档:https://ehang-io.github.io/nps/#/example
后话
至此,我们的开发全家桶已经部署好了,总共有:
- CodeServer在线IDE
- gogs私有GIT平台
- registry私有docker镜像仓库
- webssh在线SSH管理平台
- nps端口映射面板
现在,让我们来看看服务器的负载情况:
五个应用,总计不到1.2G内存的占用,1核2G的学生机都可以流畅搭建和使用,可谓是便宜又好用~
最后再让我介绍下这次使用的服务器平台:腾讯云轻量应用服务器。
在腾讯云的长期活动中新用户可¥74便可买到一台,1核2G内存60G SSD盘6Mbps的配置在性价比这块拿捏得死死得,感兴趣的读者可考虑入手:https://cloud.tencent.com/act/new。
|