一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发,支持内网http代理、内网socks5代理,同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理,集成多用户模式。
vps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
做微信公众号开发、小程序开发等----> 域名代理模式
想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式
在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式
在外网使用HTTP代理访问内网站点----> http代理模式
搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备----> socks5代理模式
源码安装
安装源码
go get -u github.com/cnlh/vps...
编译
go build cmd/vps/vps.go
go build cmd/npc/npc.go
使用示例
统一准备工作(必做)
开启服务端,假设公网服务器ip为1.1.1.1,配置文件中bridge_port为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.com,b.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代理(例如使用proxifier进行全局代理),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端口
使用步骤
在刚才创建的客户端中添加一条私密代理,并设置唯一密钥secrettest和内网目标10.1.50.2:22
在需要连接ssh的机器上以执行命令
./npc -server=1.1.1.1:8284 -vkey=vkey -type=tcp -password=secrettest -local_type=secret
如需指定本地端口可加参数-local_port=xx,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设10.1.50.2用户名为root,现在执行ssh -p 2000 root@1.1.1.1即可访问ssh
p2p服务
适用范围: 大流量传输场景,流量不经过公网服务器,但是由于p2p穿透和nat类型关系较大,不保证100%成功,支持大部分nat类型。nat类型检测
假设场景: 内网1机器ip为10.1.50.2 内网2机器2 ip为10.2.50.2
想通过访问内网1机器1的2000端口---->访问到内网2机器3 10.2.50.3的22端口
使用步骤
在vps.conf中设置p2p_ip(vps服务器ip)和p2p_port(vps服务器udp端口)
在刚才刚才创建的客户端中添加一条p2p代理,并设置唯一密钥p2pssh
在机器1执行命令
./npc -server=1.1.1.1:8284 -vkey=123 -password=p2pssh -target=10.2.50.3:22
如需指定本地端口可加参数-local_port=xx,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设机器3用户名为root,现在在机器1上执行ssh -p 2000 root@127.0.0.1即可访问机器2的ssh
web管理
介绍
可在网页上配置和管理各个tcp、udp隧道、内网站点代理,http、https解析等,功能强大,操作方便。
提示:使用web模式时,服务端执行文件必须在项目根目录,否则无法正确加载配置文件
启动
服务端测试
./vps test
如有错误请及时修改配置文件,无错误可继续进行下去
服务端启动
./vps start
如果无需daemon运行或者打开后无法正常访问web管理,去掉start查看日志运行即可
web管理
进入web界面,公网ip:web界面端口(默认8080),密码默认为123
进入web管理界面,有详细的说明
服务端配置文件重载
如果是daemon启动
./vps reload
说明: 仅支持部分配置重载,例如allow_user_login auth_crypt_key auth_key web_username web_password 等,未来将支持更多
服务端停止或重启
如果是daemon启动
./vps stop|restart
更多详细说明访问开源项目
https://github.com/cnlh/vps