Skip to content

oldfriendme/autocdn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

autocdn

CDN IP优选与自动切换工具

本工具作为cfnat的开源替代品,能够实现完全serverless运行,只需要在客户端本地运行,即可自动根据,已载入的IP地址,自动切换到延迟较低的IP。响应速度远远高于dns切换,并且不需要手动修改hosts

功能

  • 自动检测并切换到延迟更低的 CDN 节点。
  • 响应速度显著高于 DNS 切换,使用简单
  • 配置简单,自动路由,无需用户手动修改 hosts,以及IP指向


简介

用户只需把浏览器http proxy设置为127.0.0.1:8081(默认,也可修改),即可体验cdn自动加速,提高用户体验,其延迟响应与切换速度远远高于cdn官方的dns切换以及anycast。并且对于不是cdn的网站,会自动直连,不会被路由到cdnip上,用户浏览体验好。

特性(Features)

  1. 智能免DNS 自动切换

    • 1.dns自动切换,软件会对请求nslookup进行查找,如果domain属于cdn,会自动路由到延迟最低的cdn,而如果不是cdn,会正常连接IP,完全不干扰正常网络逻辑
  2. 延迟学习优化

    • 2.延迟学习,每次在流量经过autocdn时,都会进行延迟的学习,自动排序延迟较低的IP,从而为下次访问提供更高的速度。
    • 3.高延迟节点自动降低使用频率,后期优先使用低延迟节点,而如果延迟过高,或无法使用,会自动从待选列表中剔除,提高用户体验.
    • 4.自动延迟优化排序,autocdn会对已经使用过的节点,记录延迟与排序,使下一次访问更大概率使用到低延迟节点。
  3. 节点健康检查与自动优化

    • 高延迟节点与无法连接节点自动剔除,如果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.txt

3. 将浏览器或系统的 HTTP Proxy设置为 127.0.0.1:8081


raw TCP端口

如果你需要 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

About

auto switch cdn ips

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages