NPS 轻量级内网穿透服务器

NPS 是一款【kuǎn】轻量级、高【gāo】性能、功【gōng】能【néng】强大【dà】的内【nèi】网穿透代理服务器。目前支持 tcp、udp 流量【liàng】转发,可支持【chí】任何 tcp、udp 上层协议(访【fǎng】问内【nèi】网网站、本地【dì】支【zhī】付接口调试、ssh 访问、远程桌面,内网【wǎng】dns解析等等……),此外还支持内【nèi】网 http 代理、内网 socks5 代理、p2p 等,并带有功能强大【dà】的 web 管理端。

  • 做微信公众号开发、小程序开发等—-> 域名代理模式
  • 想在【zài】外网通【tōng】过 ssh 连接【jiē】内【nèi】网的机器,做【zuò】云服务器到内网【wǎng】服务器端口的映射,—-> tcp 代理模式
  • 在非内网环【huán】境下使用内【nèi】网 dns,或者需【xū】要通过 udp 访【fǎng】问内网机器等—-> udp 代【dài】理模式
  • 在外【wài】网使用 HTTP 代理访问【wèn】内网【wǎng】站点—-> http 代【dài】理模式
  • 搭建一个【gè】内网穿【chuān】透 ss,在【zài】外网如同使用内【nèi】网 vpn 一样访问内网资源或【huò】者设备—-> socks5 代理模【mó】式

特点

  • 全【quán】面的协议支【zhī】持,与几乎所【suǒ】有常用协议兼【jiān】容,例如tcp,udp,http(s),socks5,p2p,http代【dài】理…
  • 全面【miàn】的平台兼容【róng】性(Linux,Windows,MacOS,群晖等),仅支【zhī】持作【zuò】为系统服【fú】务进行安装。
  • 全面控制,允许客户端和服务器控制。
  • Https集【jí】成,支持将后【hòu】端代理【lǐ】和Web服【fú】务转换为【wéi】https,并支持多个证书。
  • 只需在Web ui上进行简单配置即可完成大多数要求。
  • 完整的信息显示,例如流量,系统信息,实时带宽,客户端版本等。
  • 强大的【de】扩【kuò】展功能【néng】,一切可【kě】用(缓存,压缩,加密,流量限制【zhì】,带宽限制,端口重用等)
  • 域【yù】名【míng】解析具有诸如自【zì】定义【yì】标题,404页面配置【zhì】,主机修改,站点保护,URL路由和【hé】全景解析之类的功能。
  • 服务器上的多用户和用户注册支持。

安装

Github地址:https://github.com/cnlh/nps

详细命令:https://ehang-io.github.io/nps/#/?id=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

编译好了后,就会在当前目录生成npcnps二进制文件了,就可以直接拿来用了。

编译的时候可能出现的问题解决方法:

#只拿一种常见的错误做例子,有时候可能会出现很多种这样的提示
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)

#意思是【shì】缺【quē】少这种包,然后记住提示【shì】的地址,比如上面的【de】golang.org/x/crypto/pbkdf2,有时【shí】候也会提示的【de】github地址。

然后再使用命令go get golang.org/x/crypto/pbkdf2命令安装一下就行了。

2、直接安装
除了自己编译外,作【zuò】者也【yě】直接提供了【le】编译好的文【wén】件给你使用,文件【jiàn】下载地址:点击进去,然后再根据自【zì】己的系统架构下【xià】载【zǎi】对应的【de】最新版【bǎn】服【fú】务端和【hé】客【kè】户端。

如果对于Linux服务器还是不知道怎么选择的,这里拿Vultr、搬瓦工大多数VPS为例。先使用命令getconf LONG_BIT获取系统版本,32位就选38664就选amd64,具体还是以实际情况为准。

linux命令【lìng】下不需【xū】要.exe的哦【ò】:    ./npc -server=xxxx.net:12314 -vkey=p4wsqe2sfa6dgdj -type=tcp

服务端使用

这里博主使用的是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 install
./nps start

#重启/停止服务端
./nps stop|restart

然后打开地址http://ip:8080访问管理界面【miàn】,具体端口以自己修改的为【wéi】准,再使用密码登【dēng】录进去,默【mò】认【rèn】为123

#如【rú】果打不开Web界面,就需【xū】要【yào】开启防火墙,一般CentOS系【xì】统出现情况最多【duō】
#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

对于【yú】有些【xiē】服务器,比【bǐ】如阿里云,谷歌【gē】云等,还需要【yào】在服务【wù】器管理面板上开放Web端口才行。

客户端使用

1、Linux系统

#比如下载的客户端文件在根目录,先进入根目录
cd ~
#启动客户端,比如服务【wù】端公网IP为1.1.1.1,服【fú】务端【duān】配置【zhì】文【wén】件中tcpport为8284
./npc -server=1.1.1.1:8284 -vkey=客户端的密钥

2、Windows系统
首先按住Win+R,输入cmd进入命令窗口,然后使用命令:

#比如下载的客户端文件在D盘,先进入到D盘
cd /d d:
#启动客户端,比【bǐ】如服务端【duān】公【gōng】网IP为1.1.1.1,服务端配置【zhì】文件【jiàn】中tcpport为8284
npc.exe -server=1.1.1.1:8284 -vkey=客户端的密钥

至于Mac系统启动参考上面就行。

使用场景

关于使用场景,Github文档写的很清楚了,这里大概的说下。

1、tcp隧道模式

适用:想在外网通过ssh连接内网的机器,做云服务【wù】器到内网【wǎng】服务器端口的映射,或【huò】者做微信公【gōng】众【zhòng】号开【kāi】发、小程【chéng】序开发等。

详细教程→点击查看。

2、udp隧道模式

适用:在非内网环境下使用内网dns,或者需要通过udp访问内网机器等。

详细教程→点击查看。

3、http代理模式

适用:在外网使用HTTP代理访问内网站点。

详细教程→点击查看。

4、socks5代理模式

适用:搭建一个内网穿透55,在外网如同使用内网vn一样访问内网资源或者设备。

详细教程→点击查看。

相关功能

1、数据压缩支持
由于是内网穿透,内网客户端与服【fú】务端之间的隧道存在【zài】大量的数据【jù】交换【huàn】,为节省流量【liàng】,加【jiā】快传【chuán】输速度,由此本程【chéng】序【xù】支持SNNAPY形式的压缩。

  • 所有模式均支持数据压缩,可以与加密同时使用
  • 开启此功能会增加cpu和内存消耗
  • server端加上参数-compress=snappy(或在web管理中设置)

2、加密传输
如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了ssh协【xié】议等,通过设置配【pèi】置文【wén】件,将服务端与【yǔ】客户【hù】端之间【jiān】的通【tōng】信内容加密传输【shū】,将会有效防止流量被拦截。

  • 开启此功能会增加cpu和内存消耗
  • server端加上参数-crypt=true(或在web管理中设置)

3、站点保护
域名代理模式所有客户端共用一个http服务端【duān】口,在知【zhī】道域名后任何人都可访问,一些【xiē】开发或者测试【shì】环境需要保密,所以可以设【shè】置用【yòng】户【hù】名和密码,nps将通过Http Basic Auth来保护,访问时需要输入正确的用户名和密码。

  • web管理中可配置

4、host修改
由于内网站点需要的host可能与公网域名不一致,域名代理支持host修改功能,即修改requestheader中的host字段。

  • web管理中设置

5、自定义header
支持对header进行新增或者修改,以配合服务的需要。

6、404页面配置
支持域名解析模式的自定义404页面,修改/web/static/page/error.html中内容即可,暂不支持静态文件等内容。

7、流量限制
支【zhī】持客户端级流量限制【zhì】,当该客户端入口【kǒu】流【liú】量与出口流量达到【dào】设定的总【zǒng】量【liàng】后会拒绝服务,域名代理会返回【huí】404页面,其他会拒绝连接。

8、带宽限制
支持【chí】客户端级带宽限制,带【dài】宽计算方式为入口和【hé】出口总【zǒng】和【hé】,权重均【jun1】衡。

9、负载均衡
本代理支持域名解析模式的负载均衡,在web域名【míng】添加或者编辑中【zhōng】内网目【mù】标分行填写多个目【mù】标即【jí】可实现轮训级别的负载【zǎi】均衡。

10、守护进程
本代理【lǐ】支【zhī】持【chí】守护进程【chéng】,使【shǐ】用示例如下,服务端客户端所有模式通用,支持【chí】linuxdarwinwindows

./(nps|npc) start|stop|restart|status 若有其他参数可加其他参数
(nps|npc).exe start|stop|restart|status 若有其他参数可加其他参数

11、KCP协议支持
KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,在弱网环境下对性能能有一定的提升。可在app.conf中修改bridgeTypekcp

  • 当服务端为kcp时,客户端连接时也需要加上参数-type=kcp

该工具很强大,更多的使用可以自行研究,如果有人知道Frp管理面板的话,可以给博主提供下。

阿里企业邮箱、网易企业邮箱、新网企业邮箱
【标准版】400元/年/5用户/无限容量
【外贸版】500元/年/5用户/无限容量
其它服务:网站建设【shè】、企业邮箱【xiāng】、数字证书ssl、400电【diàn】话、
联系方式:电话:13714666846 微信同号

声明【míng】:本站所【suǒ】有作品(图文、音【yīn】视频)均由用户自【zì】行上传分享,或互联网相关【guān】知识【shí】整合,仅供网【wǎng】友学习【xí】交流,若您的权利【lì】被侵【qīn】害,请联系 管理员 删除【chú】。

本文链接【jiē】:https://www.city96.com/article_32857.html