本工具作为cfnat的开源替代品,能够实现完全serverless运行,只需要在客户端本地运行,即可自动根据,已载入的IP地址,自动切换到延迟较低的IP。响应速度远远高于dns切换,并且不需要手动修改hosts
- 自动检测并切换到延迟更低的 CDN 节点。
- 响应速度显著高于 DNS 切换,使用简单
- 配置简单,自动路由,无需用户手动修改
hosts,以及IP指向
用户只需把浏览器http proxy设置为127.0.0.1:8081(默认,也可修改),即可体验cdn自动加速,提高用户体验,其延迟响应与切换速度远远高于cdn官方的dns切换以及anycast。并且对于不是cdn的网站,会自动直连,不会被路由到cdnip上,用户浏览体验好。
-
智能免DNS 自动切换
- 1.dns自动切换,软件会对请求nslookup进行查找,如果domain属于cdn,会自动路由到延迟最低的cdn,而如果不是cdn,会正常连接IP,完全不干扰正常网络逻辑
-
延迟学习优化
- 2.延迟学习,每次在流量经过autocdn时,都会进行延迟的学习,自动排序延迟较低的IP,从而为下次访问提供更高的速度。
- 3.高延迟节点自动降低使用频率,后期优先使用低延迟节点,而如果延迟过高,或无法使用,会自动从待选列表中剔除,提高用户体验.
- 4.自动延迟优化排序,autocdn会对已经使用过的节点,记录延迟与排序,使下一次访问更大概率使用到低延迟节点。
-
节点健康检查与自动优化
- 高延迟节点与无法连接节点自动剔除,如果cdn节点无法连接,或者延迟高于800ms,会自动从待选列表中剔除.
- 软件会随着运行的的时长,其延迟自动排序会越来越准确,算法轮询到低延迟的节点的概率会逐渐增加。
Important
注意:
节点健康检查,指检测TCP 能否到达,autocdn运行在TCP层,无法知道应用层是否发生了如ssl握手错误,403错误。
如果ips.txt存储了错误的ip(非cdn IP),如果相关端口(如443)能够正常访问,即使发生应用层错误(如ssl握手错误),autocdn也无法知道是否发生了错误。
./autocdn 127.0.0.1:8081 ips.txt debug=on/off(Optional,default=off)./autocdn- 程序可执行文件名127.0.0.1:8081- HTTP Proxy 监听地址ips.txt- 存储 CDN 优选 IP 列表(以\n分隔)debug=on/off- 是否开启调试模式(默认off)
1. 准备一个包含候选 CDN IP 的 ips.txt 文件,这是IP待选列表
ips.txt为以下格式:
192.1.x.x
192.2.x.x:443
192.3.x.x:8443
cdn.mydomain1.com
cdn.mydomain2.com:6443
可以填入cdnIP,也可以填入指向cdn的域名
如果只有地址/域名而没有携带端口,那么会使用默认的443端口进行连接
Important
注意:
ips.txt文件,可先配合cfst 测试出实际低延迟的IP,然后再填入ips.txt。缩小ips.txt的ip范围
不要填入cdn的所有ip,其节点延迟检测是基于使用的记录检测。
1.1 (可选).force cdn
可以强制指定走cdn的域名,当前目录建立文本文件,forcecdn.txt,里面填入域名,即可强制走cdn路由
2. 启动程序:
./autocdn 127.0.0.1:8081 ips.txt3. 将浏览器或系统的 HTTP Proxy设置为 127.0.0.1:8081
如果你需要 raw TCP端口(类似cfnat),而不是HTTP Proxy端口。可以使用gost进行反代。
比如你需要127.0.0.1:443,该端口映射到cdn端口。
可以使用gost启动一个反代服务器。
./gost -L=sni://127.0.0.1:443 -F http://127.0.0.1:8081