内网穿透的nps

发布于 2020-02-24  12.8k 次阅读


nps是一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发,支持内网http代理、内网socks5代理,同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理,集成多用户模式。

正所谓的穿透,就至少得要两个端:服务端、客户端,如果还需要用到p2p穿透,那就得要多一个访问端

官网

github

https://github.com/ehang-io/nps/releases

官方文档

https://ehang-io.github.io/

服务端

安装

wget https://github.com/ehang-io/nps/releases/download/v0.26.3/linux_amd64_server.tar.gz && tar zxvf linux_amd64_server.tar.gz
//安装前要先把链接转换为最新链接

修改配置文件nps.conf,可以使用sftp,也可以使用ssh直接修改

cd nps
vi ./conf/nps.conf

注册到系统服务(开机启动、守护进程)

服务端安装

cd nps
sudo nps install

安装之后配置文件不在原来的/nps 的路径,转为/etc/nps/conf的新路径

服务端启动、停止、重启

 sudo nps start 
 sudo nps stop
 sudo nps restart

每次修改配置文件之后,都需要重启才能生效

服务端更新

首先,停止服务端

sudo nps stop

升级

 sudo nps-update update 

使用

web管理页面 http://ip:8080

默认管理员账号:admin 密码:123

创建客户端,在客户端页面中点击add,进入配置页面

配置完成后,会显示offline,当npc(客户端)上线之后才会有显示online

配置文件

客户端

下载并解压

//Linux
wget https://github.com/ehang-io/nps/releases/download/v0.26.3/linux_amd64_client.tar.gz && tar zxvf linux_amd64_client.tar.gz


//win
//都图形化界面了,还需要写吗?2345?360?bandzip?
//解压之后进入cmd,进入npc所在文件夹
C:npc

键入服务端web所显示的命令即可启动

安装到系统服务(开机启动、守护进程)

对于linux

//注册
sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
//启动
sudo npc start
//停止
sudo npc stop
如果需要更换命令内容需要先卸载
./npc uninstall,再重新注册


对于windows,使用管理员身份运行cmd

//注册
npc.exe install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
//启动
npc.exe start
//停止
npc.exe stop
如果需要更换命令内容需要先卸载npc.exe uninstall,再重新注册

有配置文件启动

 ./npc -config=npc配置文件路径

*以上所有内容,在win版本中,只需要把./npc更换为npc.exe即可

配置文件

链接


tcp

udp

socks5

p2p

tcp链接

dian'ji

点击➕号,复制命令,在访问段输入命令即可以打通tcp隧道,当然,输入公网ip:端口,也可以直接访问

nps功能

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修改功能,即修改requestheader中的host字段。

  • web管理中设置

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

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

7、流量限制
支持客户端级流量限制,当该客户端入口流量与出口流量达到设定的总量后会拒绝服务,域名代理会返回404页面,其他会拒绝连接。

8、带宽限制
支持客户端级带宽限制,带宽计算方式为入口和出口总和,权重均衡。

9、负载均衡
本代理支持域名解析模式的负载均衡,在web域名添加或者编辑中内网目标分行填写多个目标即可实现轮训级别的负载均衡。

10、守护进程
本代理支持守护进程,使用示例如下,服务端客户端所有模式通用,支持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

要累死了,以后再写吧


画板子的美术学院落榜生