一款带Web面板的轻量级、高性能内网穿透工具:nps使用教程
说明:内网穿透工具之前已经介绍了不少了,比如Frp、lanproxy、Holer等,现在再介绍个带Web面板的穿透工具nps,之前叫easyProxy,只是改名了而已,该工具是一款使用go语言编写的轻量级、功能强大的内网穿透服务器。支持tcp、udp流量转发,支持内网http、socks5代理,同时支持snappy压缩(节省带宽和流量)、站点保护、加密传输、多路复用、header修改等。同时还支持web图形化管理。
截图
.png)
.png)
安装
Github地址:https://github.com/cnlh/nps
通常内网穿透工具都有服务端和客户端,安装要求如下:
服务端:需要安装在一个有公网IP的服务器上,系统为Linux/Windows/Mac均可。
客户端:一般安装在一个内网的VPS服务器或Windows/Mac电脑上使用。
1、编译安装
提示:编译安装主要讲的Linux系统,其它系统(Win/Mac,也包括Linux)建议直接使用作者编译好的文件即可。
安装Go语言:
#Debian/Ubuntu系统
apt-get -y install golang
#创建目录并定义GOPATH环境变量指向该目录
mkdir ~/workspace
echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc
source ~/.bashrc#CentOS/RHEL系统
yum -y install golang
#创建目录并定义GOPATH环境变量指向该目录。
mkdir ~/workspace
echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc
source ~/.bashrc
安装git:
#Debian/Ubuntu系统
apt-get -y install git #CentOS/RHEL系统
yum -y install git
安装源码:
go get github.com/cnlh/nps
编译服务端和客户端:
#进入指定目录
cd ~/workspace/src/github.com/cnlh/nps
#编译服务端
go build cmd/nps/nps.go
#编译客户端
go build cmd/npc/npc.go
编译好了后,就会在当前目录生成npc或nps二进制文件了,就可以直接拿来用了。
编译的时候可能出现的问题解决方法:
#只拿一种常见的错误做例子,有时候可能会出现很多种这样的提示
lib/kcp/crypt.go:14:2: cannot find package "golang.org/x/crypto/pbkdf2" in any of:
/usr/lib/go-1.7/src/golang.org/x/crypto/pbkdf2 (from $GOROOT)
/root/workspace/src/golang.org/x/crypto/pbkdf2 (from $GOPATH) #意思是缺少这种包,然后记住提示的地址,比如上面的golang.org/x/crypto/pbkdf2,有时候也会提示的github地址。 然后再使用命令go get golang.org/x/crypto/pbkdf2命令安装一下就行了。
2、直接安装
除了自己编译外,作者也直接提供了编译好的文件给你使用,文件下载地址:点击进去,然后再根据自己的系统架构下载对应的最新版服务端和客户端。
如果对于Linux服务器还是不知道怎么选择的,这里拿Vultr、搬瓦*大多数VPS为例。先使用命令getconf LONG_BIT获取系统版本,32位就选386,64就选amd64,具体还是以实际情况为准。
服务端使用
这里博主使用的是Vultr Linux x64服务器,直接使用命令:
#记得复制前先将下面链接替换成当前最新版地址
cd ~
#下载并解压服务端
wget https://github.com/cnlh/nps/releases/download/v0.0.14/linux_amd64_server.tar.gz && tar zxvf linux_amd64_server.tar.gz
#编辑配置文件
cd nps
nano conf/nps.conf
配置文件参数如下:
#web管理端口
httpport
#web界面管理密码
password
#服务端客户端通信端口
bridePort
#ssl certFile绝对路径
pemPath
#ssl keyFile绝对路径
keyPath
#域名代理https代理监听端口
httpsProxyPort
#域名代理http代理监听端口
httpProxyPort
#web api免验证IP地址
authip
#客户端与服务端连接方式kcp或tcp
bridgeType
然后启动服务端:
./nps start
#重启/停止服务端
./nps stop|restart
然后打开地址http://ip:8080访问管理界面,具体端口以自己修改的为准,再使用密码登录进去,默认为123。
#如果打不开Web界面,就需要开启防火墙,一般CentOS系统出现情况最多
#Centos 6系统
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart #CentOS 7系统
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
对于有些服务器,比如阿里云,谷歌云等,还需要在服务器管理面板上开放Web端口才行。
客户端使用
1、Linux系统
#比如下载的客户端文件在根目录,先进入根目录
cd ~
#启动客户端,比如服务端公网IP为1.1.1.1,服务端配置文件中tcpport为8284
./npc -server=1.1.1.1:8284 -vkey=客户端的密钥
2、Windows系统
首先按住Win+R,输入cmd进入命令窗口,然后使用命令:
#比如下载的客户端文件在D盘,先进入到D盘
cd /d d:
#启动客户端,比如服务端公网IP为1.1.1.1,服务端配置文件中tcpport为8284
npc.exe -server=1.1.1.1:8284 -vkey=客户端的密钥
至于Mac系统启动参考上面就行。
使用场景
关于使用场景,Github文档写的很清楚了,这里大概的说下。
1、tcp隧道模式
适用:想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,或者做微信公众号开发、小程序开发等。
详细教程→点击查看。
2、udp隧道模式
适用:在非内网环境下使用内网dns,或者需要通过udp访问内网机器等。详细教程→点击查看。
3、http代理模式
适用:在外网使用HTTP代理访问内网站点。详细教程→点击查看。
4、socks5代理模式
适用:搭建一个内网穿透55,在外网如同使用内网v皮n一样访问内网资源或者设备。详细教程→点击查看。
相关功能
1、数据压缩支持
由于是内网穿透,内网客户端与服务端之间的隧道存在大量的数据交换,为节省流量,加快传输速度,由此本程序支持SNNAPY形式的压缩。
- 所有模式均支持数据压缩,可以与加密同时使用
- 开启此功能会增加
cpu和内存消耗- 在
server端加上参数-compress=snappy(或在web管理中设置)2、加密传输
如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了ssh协议等,通过设置配置文件,将服务端与客户端之间的通信内容加密传输,将会有效防止流量被拦截。
- 开启此功能会增加
cpu和内存消耗- 在
server端加上参数-crypt=true(或在web管理中设置)3、站点保护
域名代理模式所有客户端共用一个http服务端口,在知道域名后任何人都可访问,一些开发或者测试环境需要保密,所以可以设置用户名和密码,nps将通过Http Basic Auth来保护,访问时需要输入正确的用户名和密码。
web管理中可配置4、host修改
由于内网站点需要的host可能与公网域名不一致,域名代理支持host修改功能,即修改request的header中的host字段。
- 在
web管理中设置5、自定义header
支持对header进行新增或者修改,以配合服务的需要。6、404页面配置
支持域名解析模式的自定义404页面,修改/web/static/page/error.html中内容即可,暂不支持静态文件等内容。7、流量限制
支持客户端级流量限制,当该客户端入口流量与出口流量达到设定的总量后会拒绝服务,域名代理会返回404页面,其他会拒绝连接。8、带宽限制
支持客户端级带宽限制,带宽计算方式为入口和出口总和,权重均衡。9、负载均衡
本代理支持域名解析模式的负载均衡,在web域名添加或者编辑中内网目标分行填写多个目标即可实现轮训级别的负载均衡。10、守护进程
本代理支持守护进程,使用示例如下,服务端客户端所有模式通用,支持linux、darwin、windows。./(nps|npc) start|stop|restart|status 若有其他参数可加其他参数
(nps|npc).exe start|stop|restart|status 若有其他参数可加其他参数
11、KCP协议支持
KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,在弱网环境下对性能能有一定的提升。可在app.conf中修改bridgeType为kcp。
- 当服务端为
kcp时,客户端连接时也需要加上参数-type=kcp。该工具很强大,更多的使用可以自行研究,如果有人知道
Frp管理面板的话,可以给博主提供下。
相关教程
一款带Web面板的轻量级、高性能内网穿透工具:nps使用教程的更多相关文章
- Holer一款局域网服务器代理到公网的内网映射工具
Holer简介 Holer是一个将局域网服务器代理到公网的内网映射工具,支持转发基于TCP协议的报文. 相关链接 开源地址:https://github.com/Wisdom-Projects/hol ...
- windows(Linux)创建”内网穿透“工具(通过自定义域名访问部署于内网的 web 服务,可以用于调试微信支付,支付宝支付,微信公众号等开发项目)
此方法需要自有服务器和域名,如果没有这些的开发者, 可以参考钉钉提供的内网穿透方式:https://www.cnblogs.com/pxblog/p/13862376.html 一.准备工作 1.域名 ...
- 内网穿透+VS2015自带IIS express实现本地调试(微信等需要将开发环境暴漏到外网的情况使用)
今天一个兼职结束了,又要开始寻找新的兼职公司了 ,为了贴补家用啊,为了给儿子更好的生活加油! 抒情完毕进入正题,本篇文章要解决的问题是其实在开发微信支付,微信公众号等回调地址必须是外网可访问的80端口 ...
- 搭建手机web服务器-----内网穿透(无需Root)
搭建手机web服务器-----内网穿透(无需Root) 一.内网穿透部分 前言: 网上内网穿透的方法很多,像花生壳.Ngrok.Frp等等,但是大多都需要获取手机root权限 本文使用的软件是Term ...
- 旧手机改造成web服务器并实现内网穿透
前几天由于gitee的审核引擎一通乱杀,使得gitee pages停止提供服务,心生更换服务器或者其他pages托管的想法,看了看价格感人的云服务器以及空空的钱包,这时,脑子有个奇怪的想法飘过,自己搞 ...
- 使用内网映射工具Holer将本地的Web应用映射到公网上访问
Holer exposes local servers behind NATs and firewalls to the public internet over secure tunnels. Su ...
- frp 内网穿透访问内网Web服务
ps:最近想要通过域名(公网)访问或者测试在本地搭建的 web 服务(不想在公网IP服务器上再部署个服务,也不想通过teamview等工具远程卡到爆!), 由于本地机器没有公网 IP,无法将域名解析到 ...
- 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问
原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...
- p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
随机推荐
- 将java project打包成jar包,web project 打包成war包的几种演示
将java项目打包成jar 第一种:MyEclipse将java项目打包成jar. 1,右击项目,选择export . 2,点击Java,选择JAR file . 3,在JAR file文本中浏览打包 ...
- Bug,项目过程中的重要数据
作者|孙敏 为什么要做Bug分析? Bug是项目过程中的一个有价值的虫子,它不只是给开发的,而是开给整个项目组的. 通过Bug我们能获得什么? 积累测试方法,增强QA的测试能力,提升产品质量 发现项目 ...
- 原创:Python爬虫实战之爬取美女照片
这个素材是出自小甲鱼的python教程,但源码全部是我原创的,所以,猥琐的不是我 注:没有用header(总会报错),暂时不会正则表达式(马上要学了),以下代码可能些许混乱,不过效果还是可以的. 爬虫 ...
- 01.JS块级作用域与let
1.块级作用域 什么是: 在一个代码块(括在一对花括号中的一组语句)中定义的所需变量(与let配合使用)并在代码块的外部是不可见的. 为什么: 在ES6之前,函 ...
- TCP可靠传输的工作原理
TCP可靠传输的工作原理 一.停止等待协议 1.1.简介 在发送完一个分组后,必须暂时保留已发送的分组的副本. 分组和确认分组都必须进行编号. 超时计时器的重传时间应当比数据在分组传输的平均往返时间更 ...
- springDataJPA笔记
springDataJPA笔记 第一 orm思想 主要目的:操作实体类就相当于操作数据库表 建立两个映射关系: 实体类和表的映射关系 实体类中属性和表中字段的映射关系 不再重点关注:sql语句 实现了 ...
- Django报Warning错误 RuntimeWarning: DateTimeField Goods.create_at received a naive datetime (2019-07-31 23:05:58) while time zone support is active
报错和UTC(世界标准时间)有关,在settings.py 文件中设置 USE_TZ = False 警告错误不再报
- 【前端性能优化】高性能JavaScript整理总结
高性能JavaScript整理总结 关于前端性能优化:首先想到的是雅虎军规34条然后最近看了<高性能JavaScript>大概的把书中提到大部分知识梳理了下并加上部分个人理解这本书有参考雅 ...
- 【30分钟学完】canvas动画|游戏基础(6):坐标旋转探究
前言 本篇主要讲坐标旋转及其应用,这是编程动画必不可少的技术. 阅读本篇前请先打好前面的基础. 本人能力有限,欢迎牛人共同讨论,批评指正. 坐标旋转 模拟场景:已知一个中心点(centerX,cent ...
- 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境
基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...