Releases: e1732a364fed/v2ray_simple
v1.2.1
http 和 socks5
令http支持用户名密码(basic auth)
令socks5支持用户名密码
添加 socks5http 协议,与clash的mixed等价.
使用方式详见 vlesss.client.toml 和 socks5.toml, 就是把 user 和 pass 填写在 uuid字段内。
tls 客户端证书
tls 支持客户端证书和CA. 使用方式详见 vlesss.client.toml 和 vlesss.server.toml
就是 服务端的listen 加一个 ca = "ca.crt"
, 客户端的dial 也添加 cert 和 key。
客户端证书以及CA证书的 生成命令 请阅读 README.md 的相关部分。
真实nginx响应
一,RejectClient中新增nginx类型,返回 nginx真实响应。
你还可以阅读 该 wiki页面
https://github.com/e1732a364fed/v2ray_simple/wiki/%E5%85%B3%E4%BA%8E-reject-%E4%B8%8E-blackhole
二,在所有情况下,在没有回落时返回真实nginx 400 http相应 然后再关闭,而不是直接关闭。这样可以模拟一个网页服务器,更加逼真。
换句话说,最新版本中,就算你不设置任何回落,你的vs服务器对非法请求的响应 仍然像一个 nginx 服务器一样。( 上面是一个居中的 “400 Bad Request”,中间是分割线,下面是nginx版本号)
配置格式修订
将分流的inTag改名为fromTag, dialTag改名为 toTag, 这样含义更加清晰。
将fallback的from从string改为[]string,这样可以支持从多个listen fallback到相同的目标,又不至于使用默认回落, 更灵活.
支持使用@vlessws 这种tag来设置fallback的dest
其它
支持 grpc 遇到 h1请求以及未知请求时,回落到 h1
令trojan支持回落;添加共用端口的回落示例 , multi_samePort.server.toml, 实测可用
优化代码。
bug 修复
修复 #61,令 websocket在path访问正确但是不是ws连接时,也进行回落,而不是返回一个错误
修复 #67: route 的 domain 多个 规则 写在 列表里时不会完全匹配到.
修复listen在遇到EOF时无限循环的bug
修复socks5的dial连不上的bug
v1.2.1-beta.1
令trojan支持回落;添加共用端口的回落示例 , multi_samePort.server.toml, 实测可用.
将分流的inTag改名为fromTag, dialTag改名为 toTag, 这样含义更加清晰。
将fallback的from从string改为[]string,这样可以支持从多个listen fallback到相同的目标,又不至于使用默认回落, 更灵活.
支持使用@vlessws 这种tag来设置fallback的dest
修复socks5的dial连不上的愚蠢bug,现在socks5的dial已经可用。且添加了一个 socks5.toml 示例文件。
发布为何如此神速
因为我改动了 配置文件的一些 名称,所以我连忙发布一个新的版本,否则小白读最新代码的示例文件, 然后使用 v1.2.0版本的话,会发现 配置文件格式不匹配。
v1.2.0 正式版
Full Changelog: v1.1.9...v1.2.0
第一次发布v1.2.0后又发现几个bug,我马上修复了,然后又重新发布了一遍,所以建议重新下载。
总之v1.2.0 目标就是尽量无bug。
自 v1.2.0-beta.4 以来的变化
apiServer
在allstate查询中输出tproxy信息;
添加-sap命令行参数,通过命令行配置apiServer密码, 有了-sap参数之后,开启apiServer就不需要 配置文件了。
Makefile
令Makefile支持同时给出多个 build tag
使Makefile 支持 免参数编译 当前系统的 可执行文件。编译同时会生成一个 BUILD_VERSION 文件,用于记录上一次编译出的版本和tags信息。
Makefile的 BUILD_VERSION 除了commit以外,还 添加了 build_on 和 all_go_files_md5 的信息。
移除根目录的 Makefile,因为用不到
其它
添加 socks5 的客户端 dial。(有bug,已在最新代码修复,可等1.2.1)
添加给quic的hy的手动挡添加初始倍率的配置,hy_manual_initial_rate
添加极简模式配置文件的热加载功能;
全面修订代码和文档。
bug 修复
修复极简配置模式无法正确加载的bug
修复监听tcp后,未被添加到allServers列表的bug
修复一个热删除配置的bug
修复 -c没给出而-L-D命令给出时运行错误的bug
修复h2回落时使用 PROXY protocol 时的一个bug
修复 panic捕获后没有按行打印出 的问题
修复当 toml中没有dial给出时自动退出的问题;应该自动添加一个direct并继续运行。
修复fallback中填写from时会闪退的bug, 这是一个傻bug
修复alpn无法回落的bug, 这是由于服务端没有给出完整的alpn列表导致的
从 v1.1.9 到 v1.2.0 的所有变化
grpc回落!
令grpcSimple 可以回落到http2! 实测真的可以回落的,你只要回落的服务器监听 h2c 即可。
不懂grpcSimple的再听我讲一遍,grpcSimple是我自研的新 grpc 包,不引用 谷歌的grpc包,极大减小可执行文件的大小,且 可以通过 path 回落。
该包的客户端部分借鉴了 clash的gun.go, 但是clash只实现了客户端,而服务端才是重中之重。我实现了服务端,并且实现了grpc的回落!
由于grpcSimple非常优秀,本作默认就是使用grpcSimple包,除非 你用 go build -tags grpc_full 编译。grpcSimple目前唯一不足是不支持 multiMode。不过无所谓的。
Nice。
PROXY protocol
支持回落使用PROXY protocol, 详细配置见 vlesss.server.toml 。 主要就是配置 xver = 1 或者 xver = 2
支持PROXY protocol 的监听
可参考 #51
自动iptables
为tproxy添加auto_iptables配置,支持运行时自动配置iptables, 见 vless_tproxy.client.toml
extra = { auto_iptables = true }
如果给出了 auto_iptables, 且只有一个 tproxy的listen, 则程序会自动在开始监听前配置好iptables,并在程序退出前 清除iptables中被程序改动的部分。
添加交互模式中,为tproxy配置和清除iptables的功能.
自定义 grpc的header
添加grpcSimple自定义header功能, 见 grpcheader.client.toml 和 grpcheader.server.toml
apiServer
在allstate查询中输出tproxy信息;
添加-sap命令行参数,通过命令行配置apiServer密码, 有了-sap参数之后,开启apiServer就不需要 配置文件了。
Makefile
令Makefile支持同时给出多个 build tag
使Makefile 支持 免参数编译 当前系统的 可执行文件。编译同时会生成一个 BUILD_VERSION 文件,用于记录上一次编译出的版本和tags信息。
Makefile的 BUILD_VERSION 除了commit以外,还 添加了 build_on 和 all_go_files_md5 的信息。
移除根目录的 Makefile,因为用不到
其他
添加socks5 的dial (有bug,已在最新代码修复,可等1.2.1)
令tproxy支持分流
在标准 toml 配置中 配置 logfile 配置文件路径。 如 logfile = "/var/log/verysimple/vs_log"
将 -sp 的行为 改为 打印完毕后立即退出。
回落添加一个 "from" 配置,可指示该fallback配置 适用于哪个 listen 配置。如果from 没给出,则所有server都可回落到 该配置。请参考 multi.server.toml
添加给quic的hy的手动挡添加初始倍率的配置,hy_manual_initial_rate
添加极简模式配置文件的热加载功能;
更新依赖包.
全面修订代码和文档。
bug 修复
修复一个导致 使用quic时,回落时马上闪退的bug
修复1.1.9的tproxy不可用的bug;
修复多个fallback存在时 回落不正确的bug
修复交互模式打不开的bug
修复grpc回落h2在回落服务器连不上时,没有及时关闭客户连接的bug
修复ws的headers配置有些情况下匹配错误的bug
修复极简配置模式无法正确加载的bug
修复监听tcp后,未被添加到allServers列表的bug
修复一个热删除配置的bug
修复 -c没给出而-L-D命令给出时运行错误的bug
修复h2回落时使用 PROXY protocol 时的一个bug
修复 panic捕获后没有按行打印出 的问题
修复当 toml中没有dial给出时自动退出的问题;应该自动添加一个direct并继续运行。
修复fallback中填写from时会闪退的bug, 这是一个傻bug
修复alpn无法回落的bug, 这是由于服务端没有给出完整的alpn列表导致的
v1.2.0-beta.4
自动iptables
为tproxy添加auto_iptables配置,支持运行时自动配置iptables, 见 vless_tproxy.client.toml
extra = { auto_iptables = true }
如果给出了 auto_iptables, 且只有一个 tproxy的listen, 则程序会自动在开始监听前配置好iptables,并在程序退出前 清除iptables中被程序改动的部分。
添加交互模式中,为tproxy配置和清除iptables的功能.
proxy protocol 监听
支持PROXY protocol 的监听。经过测试可成功监听. 可参考 #51
自定义 grpc的header
添加grpcSimple自定义header功能, 见 grpcheader.client.toml
和 grpcheader.server.toml
其他
修复grpc回落h2在回落服务器连不上时,没有及时关闭客户连接的bug
修复ws的headers配置有些情况下匹配错误的bug
v1.2.0-beta.3
让h2的回落 也支持 PROXY protocol
修复交互模式打不开的bug
v1.2.0-beta.2
支持回落使用PROXY protocol, 详细配置见 vlesss.server.toml 。 主要就是配置 xver = 1
或者 xver = 2
回落添加一个 "from" 配置,可指示该fallback配置 适用于哪个 listen 配置。如果from 没给出,则所有server都可回落到 该配置。请参考 multi.server.toml
修复多个fallback存在时 回落不正确的bug
关于 PROXY protocol
PROXY protocol主要用于 nginx或者 docker 等 反向代理的情况,有些应用需要获取用户的真实ip。
所以回落使用 PROXY protocol 是一项很有实际意义的 功能。
比如获取访问者的ip,如果访问者 多次尝试错误密码,就封杀该ip;如果你不用PROXY protocol,那就把 verysimple的ip给封杀了,那就会很尴尬
你也可以参考我的一个相关的研究页面:#51
其他情况
监听 PROXY protocol
PROXY protocol的监听功能 还没实现,会在v1.2.0 正式版支持。
http2 的 PROXY protocol
暂时没 为 h2 设置 回落 PROXY protocol。这是可以做到的,可以放在下一发布版。
v1.2.0-beta.1
grpc回落!
令grpcSimple 可以回落到http2! 实测真的可以回落的,你只要回落的服务器监听 h2c 即可。
不懂grpcSimple的再听我讲一遍,grpcSimple是我自研的新 grpc 包,不引用 谷歌的grpc包,极大减小可执行文件的大小,且 可以通过 path 回落。
该包的客户端部分借鉴了 clash的gun.go, 但是clash只实现了客户端,而服务端才是重中之重。我实现了服务端,并且实现了grpc的回落!
由于grpcSimple非常优秀,本作默认就是使用grpcSimple包,除非 你用 go build -tags grpc_full
编译。grpcSimple目前唯一不足是不支持 multiMode。不过无所谓的。
Nice。
其他
令tproxy支持分流
在标准 toml 配置中 配置 logfile 配置文件路径。 如 logfile = "/var/log/verysimple/vs_log"
将 -sp 的行为 改为 打印完毕后立即退出。
更新依赖包
修复一个导致 使用quic时,回落时马上闪退的bug
修复1.1.9的tproxy不可用的bug;
v1.1.9: 全面修订代码,文档;修复一系列bug;修改quic配置格式,见下:
自 v1.1.9-beta.1 以来的改动
grpcSimple 的 回落功能
支持了 grpcSimple 的通过path回落的功能。 如果 请求不是 grpc所配置的 serviceName,则会进行回落。
该功能未经过测试。注意,回落的话应该是回落到 h2c这种,不过我也没测试过,不知道能否成功。
(实测确实没成功,不过最新版本已经能成功回落了,直接下载最新版即可。而且本版本的tproxy有bug,所以我把发布包删了,不管1.1.9即可)
配置格式改动
quic 的配置中,maxStreamCountInOneSession 改名为 maxStreamsInOneConn
bug修复
修复一处quic的代码缺陷导致速度不高问题。
修复 quic 的 too many open streams 问题。
修复 quic的 early实际未生效的问题。
修复 grpcSimple 的一些导致闪退的bug
v1.1.9 的新功能
见 beta.1 的说明。主要是 grpcSimple,选择性编译 等。
v1.1.9-beta.1: 全面修订代码;完成 grpcSimple包;使用 tag选择编译quic 和 grpc
grpcSimple
完成 grpcSimple包;
grpcSimple包的服务端和客户端现在都已完成,且兼容v2ray等内核。
grpcSimple包 简洁、高效,更加科学。暂不支持multiMode。该包 未来将提供 grpc 的回落支持,请期待!
新增 build tags
使用 tag选择编译quic 和 grpc
若 grpc_full 给出,则使用grpc包,否则默认使用 grpcSimple包。grpcSimple包 的go build的编译大小比 grpc包 小 4MB。
若 noquic给出,则不使用 quic,否则 默认使用 quic。若不使用quic,go build的编译大小 可减少 2MB。
比如 go build -tags noquic
, 可以编译出 不带有 quic功能的 verysimple
默认 logLevel 修改
默认loglevel 改为 Log_info.
对一般用户而言,还是需要使用Info等级 来了解一下 一般的 日志情况,等到使用熟
练之后,且确认运行没有错误后, 可以自行调为 warning 来提升性能
early的配置格式修改
由于 现在 ws 和 quic 都支持了 0-rtt,我们不再使用 extra,而是直接使用更简单的配置方式:
early = true
, 你可以查看相关示例文件进行对照。
其它
本次重构了所有的 advLayer 代码,是比较重大的更新。你可以比对本版本与其他版本的 测速,并反馈测速情况 以及可能存在的bug。
v1.1.8
实现 quic 0-rtt, 配置: extra = { quic_early = true }
, 注意,似乎没有其他内核支持quic的 0-rtt功能? 所以你两端都要用 verysimple。
grpc的 mult的配置改为"grpc_multi".
其他从 1.1.7升至 1.1.8 的变化 详见 1.1.8-beta.1 和 1.1.8-beta.2 的发布说明。
包含 bindToDevice, vless的v1 的 mux支持,reject协议, grpc multiMode 等。