8000 GitHub - fsfish/nps: 一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发,支持内网http代理、内网socks5代理,同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理,集成多用户模式。
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ nps Public
forked from ehang-io/nps

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

License

Notifications You must be signed in to change notification settings

fsfish/nps

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nps

Gitter

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理p2p等,并带有功能强大的web管理端。

背景

image

  1. 做微信公众号开发、小程序开发等----> 域名代理模式

  2. 想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式

  3. 在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式

  4. 在外网使用HTTP代理访问内网站点----> http代理模式

  5. 搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备----> socks5代理模式

目录

安装

releases安装

releases

下载对应的系统版本即可,服务端和客户端是单独的,go语言开发,无需任何第三方依赖

源码安装

  • 安装源码

go get -u github.com/cnlh/nps...

  • 编译

go build cmd/nps/nps.go

go build cmd/npc/npc.go

使用示例

统一准备工作(必做)

  • 开启服务端,假设公网服务器ip为1.1.1.1,配置文件中bridgePort为8284,配置文件中web_port为8080
  • 访问1.1.1.1:8080
  • 在客户端管理中创建一个客户端,记录下验证密钥
  • 内网客户端运行(windows使用cmd运行加.exe)
./npc -server=1.1.1.1:8284 -vkey=客户端的密钥

域名解析

适用范围: 小程序开发、微信公众号开发、产品演示

假设场景:

  • 有一个域名proxy.com,有一台公网机器ip为1.1.1.1
  • 两个内网开发站点127.0.0.1:81,127.0.0.1:82
  • 想通过(http|https://)a.proxy.com访问127.0.0.1:81,通过(http|https://)b.proxy.com访问127.0.0.1:82

使用步骤

  • 将*.proxy.com解析到公网服务器1.1.1.1
  • 点击刚才创建的客户端的域名管理,添加两条规则规则:1、域名:a.proxy.com,内网目标:127.0.0.1:81,2、域名:b.proxy.com,内网目标:127.0.0.1:82

现在访问(http|https://)a.proxy.comb.proxy.com即可成功

https: 如需使用https请进行相关配置,详见 使用https

tcp隧道

适用范围: ssh、远程桌面等tcp连接场景

假设场景: 想通过访问公网服务器1.1.1.1的8001端口,连接内网机器10.1.50.101的22端口,实现ssh连接

使用步骤

  • 在刚才创建的客户端隧道管理中添加一条tcp隧道,填写监听的端口(8001)、内网目标ip和目标端口(10.1.50.101:22),保存。
  • 访问公网服务器ip(1.1.1.1),填写的监听端口(8001),相当于访问内网ip(10.1.50.101):目标端口(22),例如:ssh -p 8001 root@1.1.1.1

udp隧道

适用范围: 内网dns解析等udp连接场景

假设场景: 内网有一台dns(10.1.50.102:53),在非内网环境下想使用该dns,公网服务器为1.1.1.1

使用步骤

  • 在刚才创建的客户端的隧道管理中添加一条udp隧道,填写监听的端口(53)、内网目标ip和目标端口(10.1.50.102:53),保存。
  • 修改需要使用的内网dns为127.0.0.1,则相当于使用10.1.50.202作为dns服务器

socks5代理

适用范围: 在外网环境下如同使用vpn一样访问内网设备或者资源

假设场景: 想将公网服务器1.1.1.1的8003端口作为socks5代理,达到访问内网任意设备或者资源的效果

使用步骤

  • 在刚才创建的客户端隧道管理中添加一条socks5代理,填写监听的端口(8003),保存。
  • 在外网环境的本机配置socks5代理,ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(8003),即可畅享内网了

http正向代理

适用范围: 在外网环境下使用http正向代理访问内网站点

假设场景: 想将公网服务器1.1.1.1的8004端口作为http代理,访问内网网站 使用步骤

  • 在刚才创建的客户端隧道管理中添加一条http代理,填写监听的端口(8004),保存。
  • 在外网环境的本机配置http代理,ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(8004),即可访问了

私密代理

适用范围: 无需占用多余的端口、安全性要求较高可以防止其他人连接的tcp服务,例如ssh。

假设场景: 无需新增多的端口实现访问内网服务器10.1.50.2的22端口

使用步骤

  • 在刚才创建的客户端中添加一条私密代理,并设置唯一密钥和内网目标10.1.50.2:22
  • 在需要连接ssh的机器上以配置文件模式启动客户端,内容如下
[common]
server=1.1.1.1:8284
tp=tcp
vkey=123
[secret_ssh]
password=1111
port=1000

注意: secret前缀必须存在,password为web管理上添加的唯一密钥

假设用户名为root,现在执行ssh -p 1000 root@127.0.0.1即可访问ssh

p2p服务

适用范围: 大流量传输场景,流量不经过公网服务器,但是由于p2p穿透和nat类型关系较大,成功率一般,可穿透所有非对称型nat。

假设场景: 内网1机器ip为10.1.50.2 内网2机器ip为10.2.50.2

想通过访问机器1的2001端口---->访问到内网2机器的22端口

使用步骤

  • nps.conf中设置p2p_ipp2p_port
  • 在刚才刚才创建的客户端中添加一条p2p代理,并设置唯一密钥p2pssh
  • 在需要连接的机器上(即机器1)以配置文件模式启动客户端,内容如下
[common]
server=1.1.1.1:8284
tp=tcp
vkey=123
[p2p_ssh]
password=p2pssh
port=2001

注意: p2p前缀必须存在,password为web管理上添加的唯一密钥

假设机器2用户名为root,现在在机器1上执行ssh -p 2001 root@127.0.0.1即可访问机器2的ssh

web管理

image

介绍

可在网页上配置和管理各个tcp、udp隧道、内网站点代理,http、https解析等,功能强大,操作方便。

提示:使用web模式时,服务端执行文件必须在项目根目录,否则无法正确加载配置文件

启动

服务端测试

 ./nps test

如有错误请及时修改配置文件,无错误可继续进行下去

服务端启动

 ./nps start

如果无需daemon运行,去掉start即可

web管理

进入web界面,公网ip:web界面端口(默认8080),密码默认为123

进入web管理界面,有详细的说明

服务端配置文件重载

如果是daemon启动

 ./nps reload

说明: 仅支持部分配置重载,例如allow_user_login auth_crypt_key auth_key web_username web_password 等,未来将支持更多

服务端停止或重启

如果是daemon启动

 ./nps stop|restart

服务端配置文件