合 内网穿透工具之nps和npc
简介
https://github.com/ehang-io/nps
https://ehang-io.github.io/nps/#/
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。
特点
几乎支持所有协议
支持内网http代理、内网socks5代理、p2p等多种协议的代理
简洁但功能强大的WEB管理界面
支持服务端、客户端同时控制
扩展功能强大
全平台兼容,一键注册为服务
Go语言编写
- 做微信公众号开发、小程序开发等----> 域名代理模式
- 想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式
- 在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式
- 在外网使用HTTP代理访问内网站点----> http代理模式
- 搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备----> socks5代理模式
架构
- 一台有公网IP的服务器(VPS)运行服务端(NPS)
- 一个或多个运行在内网的服务器或者PC运行客户端(NPC)
安装配置
nps
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | mkdir /usr/local/nps cd /soft/ wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz tar -zxvf linux_amd64_server.tar.gz -C /usr/local/nps/ cd /usr/local/nps/ vim /usr/local/nps/conf/nps.conf # 需要改一下#web下面的几个参数, web_host= 服务器IP或者域名,写127.0.0.1 web_username= admin(登录用户名) web_password= 你的密码 web_port=8080(web管理端口) # 修改#bridge 可以更改 NPC的连接端口,默认为8024。 # 比如我们拿到一台权限受限的服务器,有防火墙,可能只有部分端口(80,443)可以出网,就需要修改成出网端口。 ##bridge bridge_type=tcp bridge_port=443 # 修改连接端口 bridge_ip=0.0.0.0 -- 启动 nohup /usr/local/nps/nps & [root@ecs-cc5f ~]# netstat -tunlp | grep nps tcp6 0 0 :::80 :::* LISTEN 7937/./nps tcp6 0 0 :::8080 :::* LISTEN 7937/./nps tcp6 0 0 :::8024 :::* LISTEN 7937/./nps tcp6 0 0 :::443 :::* LISTEN 7937/./nps 2022/06/07 15:17:20.475 [I] [connection.go:36] server start, the bridge type is tcp, the bridge port is 8024 2022/06/07 15:17:20.477 [I] [server.go:200] tunnel task start mode:httpHostServer port 0 2022/06/07 15:17:20.477 [I] [connection.go:71] web management start, access port is 8080 2022/06/07 15:17:20.478 [I] [connection.go:53] start http listener, port is 80 2022/06/07 15:17:20.478 [I] [connection.go:62] start https listener, port is 443 -- web访问 http://120.46.169.144:8080 -- 安装服务,所有配置文件会放在/etc/nps目录下 /usr/local/nps/nps install nps start |
在nps目录下面会有一个nps可执行文件、conf配置目录和web网页目录,我们只需要修改conf/nps.conf
即可。
npc
1 2 3 4 5 | wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz tar -zxvf linux_amd64_client.tar.gz -C /usr/local/nps/ D:\Program_files\npc\npc -server=120.46.169.144:8024 -vkey=zctuid6v3vhg06ua -type=tcp D:\Program_files\npc\npc install -server=120.46.169.144:8024 -vkey=zctuid6v3vhg06ua -type=tcp |
新建好客户端后,也可以在+
中看到,详细的客户端连接命令:
web管理端
在客户端界面可以通过新增
的方式添加客户端连接,每一个连接的vkey都是唯一区分的。
每一个客户端,在建立连接后,都可以建立多个不同协议的隧道,这一个个隧道就是不同的代理了。
通过不同的协议和端口就可以连接代理的内网机器。
注意
After installation, the windows configuration file is located at C:\Program Files\nps, linux or darwin is located at /etc/nps
socks
适用范围: 在外网环境下如同使用vpn一样访问内网设备或者资源
假设场景: 想将公网服务器1.1.1.1的8003端口作为socks5代理,达到访问内网任意设备或者资源的效果
使用步骤
- 在刚才创建的客户端隧道管理中添加一条socks5代理,填写监听的端口(8003),保存。
- 在外网环境的本机配置socks5代理(例如使用proxifier进行全局代理),ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(8003),即可畅享内网了
注意 经过socks5代理,当收到socks5数据包时socket已经是accept状态。表现是扫描端口全open,建立连接后短时间关闭。若想同内网表现一致,建议远程连接一台设备。
1 | /usr/local/npc/npc install -config=/etc/nps/conf/npc.conf -server=116.62.205.34:8024 -vkey=zctuid6v3vhg06ua -type=tcp -debug=false |
ssh.exe;SecureCRT.exe;cmd.exe;mstsc.exe
192.168.1.*;192.168.88.*;
私密连接
适用范围: 无需占用多余的端口、安全性要求较高可以防止其他人连接的tcp服务,例如ssh。