小九博客

  • 首页
  • 编程开发
  • 信息安全
  • 工具资源
  • 随笔
  • 在线工具
    • 在线图片水印
    • Json解析
    • JavaRuntimeExec
    • 加解密/编码工具集
  • 关于
小九博客
Hack The World!
  1. 首页
  2. 随笔
  3. 正文

免费CDN加速手把手教程

2021年03月06日

作为一个普通的IT Guy,我不禁时常怀疑,为何别人的飞机场要比自己搭建的小飞机速度快那么多呢?难道飞机场主都是究极土豪,人均CN2 GIA线路?直到我在90Sec看到一篇内务帖…

现有90论坛处于CloudFlare CDN默认加速防护下,众所周知的原因,CloudFlareCDN对于国内用户,很多时候不仅不会加速,还会增加延迟。

@c0bra大佬提出:在接入CDN后,可以接入CloudFlare Partner平台,再通过智能DNS解析,设置CloudFlare自选IP,以达到加速目的。

这是我第一次接入到CloudFlare自选IP这个概念,看完大佬说的步骤也甚是迷惑,在经过各种Google和Baidu,终于产生了该文章。

1.为何国内用户直接使用CloudFlare(CF)CDN加速效果不理想?

CDN优点非常多,包括加速网站访问,减轻源站压力,隐藏真实IP等。CloudFlare因其优质免费的服务,吸引了大量国内用户,几年前我第一次知道该平台时,兴冲冲的将博客域名托管到了CloudFlare下,然而仅仅过了半年,网站就时常无法访问,我使用真实IP直接访问也比走CDN速度快,我便对该服务的好坏产生了怀疑,我们来看看CloudFlareCDN是如何实现加速的。

cloudflare加速.png

CloudFlare官网默认不提供CNAME和A记录接入CDN的方式,而免费的套餐CDN节点很有限,有限的节点中很多对于国内用户也不是很友好,随机分配节点因此也成了网站间歇性故障的主要原因。

2.CloudFlare CDN自选IP是如何实现加速的?

既然随机分配的节点无法保证可用率,那么我们是否可以自己选择速度快的节点进行接入呢?

免费套餐下,在官网是无法实现该功能了,但是我们可以利用智能DNS+CloudFlare Partner平台来实现通过CNAME和A记录接入CloudFlare,以实现自选IP的目的。

自选IP加速.png

3.学会自选IP加速我们能做什么?

  • 小飞机加速
  • 网站提速
  • 真实IP被Q使用CDN访问
  • ..各种需要CDN的场景

3.1 小飞机加速手把手教程

3.1.1 寻找CDN高速IP节点

首先,我们需要知道如何找高速节点,这里我们推荐一款找高速IP的利器,CloudFlareScanner,我个人的做法是在家里和公司分别运行该扫描,找到不同网络运营商下载速度较快的IP,该方法比较笨,但是十分有效。

聪明些的方法是什么呢?我这里想到可以在家里NAS上设置定时任务,定期扫描高速IP节点,通过Dnspod的接口自动设置高速IP。

在https://github.com/Spedoske/CloudflareScanner/releases/根据系统版本,直接下载编译好的程序。我这里是Mac于是下载CloudflareScanner_v1.1.2_MacOS_x64.tar.gz

1
2
3
4
5
6
7
8
9
10
11
12
13
#增加执行权限
chmod +x CloudflareScanner
#执行扫描
./CloudflareScanner
#请输入扫描协程数(数字越大越快,默认400):
#400
#请输入tcping次数(默认10):
#10
#请输入要测试的下载节点个数(默认10):
#10
#请输入下载测试时间(默认10,单位为秒):
#10
#开始tcping

该软件每次下载的节点不一定存在访问速度快的IP,因此多运行几次效果更佳。最终会在程序目录下生成result.csv,我们按照下载速度进行排序,就得到当前网络下的高速节点的IP了。如下图所示,本次检索到的IP为:104.18.151.135

如果有多个IP下载速度差别不大,尽量选择PING延迟低的IP。

高速节点IP扫描结果.png

3.1.2 选择智能DNS服务商

选择智能DNS的原因是其可以针对不同运营商线路分别进行解析,实现不同运营商下自选IP。

这里我选择的是Dnspod平台进行接入,在域名注册商里设置域名NS为以下两条记录:

1
2
3
lilith.dnspod.net
degree.dnspod.net
#请注意,随着时间变化,这两条记录可能会发生变化,具体请参考Dnspod添加域名的指南,一般添加域名后会提示如何操作。

3.1.3 CloudFlarePartner平台接入

个人认为CloudFlarePartner目前认证体系设计的并不恰当,需要使用自己的CF账号密码去登录第三方平台,很容易产生密码泄漏风险。我首先填写了一份CloudFlarePartner申请,如果通过申请,就可以自己搭建平台了。申请的周期比较长,为了尝鲜我暂时修改CF密码为临时密码,使用第三方平台(如萌精灵)进行接入。使用第三方平台,务必小心自己账号密码安全

使用CF账号密码登录=>添加域名=>DNS管理=>添加新记录

这里添加一个A记录,直接输入你的域名 例如dmz.mytool.cc,A 记录填写你服务器的真实IP。

3.1.4 智能DNS解析配置

回到Dnspod,添加一条CNAME解析记录,dmz.mytool.cc解析到dmz.mytool.cc.cdn.cloudflare.net。

再添加一条A记录,并且选择线路为境内或者你当前网络的运营商名称,dmz.mytool.cc解析到步骤1找到的高速IP104.18.151.135

最终配置如图:

DNS配置.png

至此完成了对源站HTTP请求的加速,如果只是为网站加速,到此就可以了。后面内容为小飞机加速。

3.1.5 小飞机反向代理及SSL配置

在之前,我使用的是v2一键环境,使用的是WebSocket动态端口协议,我们在配置完成CDN后,还需要部署反向代理,以便正常解析协议,后续采用WebSocket+TLS协议。

首先给我们的域名配置SSL。

1
2
3
4
5
6
7
#这里使用acme脚本来申请Let's Encrypt证书
curl https://get.acme.sh | sh -s [email protected]
#申请证书
~/.acme.sh/acme.sh --issue --nginx -d dmz.mytool.cc
#申请后的原始证书需要安装到其他目录,根据官方文档,请勿使用原始的证书。
~/.acme.sh/acme.sh --install-cert -d dmz.mytool.cc --key-file /var/ssl/dmz.mytool.cc/key.pem --fullchain-file /var/ssl/dmz.mytool.cc/cert.pem
#至此证书文件就保存至/var/ssl/dmz.mytool.cc目录了。

接下来是Nginx配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
server{
listen 443 ssl;
root /var/www/html;
ssl_certificate /var/ssl/dmz.mytool.cc/cert.pem;
ssl_certificate_key /var/ssl/dmz.mytool.cc/key.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
server_name _;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/html;
}
location = /.well-known/acme-challenge/ {
return 404;
}
location /lovestory {
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

set $is_v2ray 0;
if ($http_upgrade = "websocket") {
set $is_v2ray 1;
}

if ($is_v2ray = 1) {
# 仅当请求为 WebSocket 时才反代到 V2Ray
proxy_pass http://127.0.0.1:2021;
}

if ($is_v2ray = 0) {
# 否则显示正常网页
return 301 https://dmz.mytool.cc;
}
}
}

除了SSL配置外,解释几个关键的配置作用:

  • location ./well-known:Let’s Encrypt申请证书时,需要验证该路径。
  • location /lovestory: 后续要配置v2的路径伪装,我们将v2的流量伪装到lovestory路径下,其他流量走正常网站页面。

3.1.6 协议修改

这里我使用一键端配置较为方便,我们直接贴关键配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"inbounds": [
{
"listen": "127.0.0.1",
"port": 2021,
"protocol": "vmess",
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/lovestory"
}
}
}
],

}

至此就完成了所有配置,重启v2和nginx服务,使得配置生效即可。

4.讲在最后

在阅读各种教程文章的时候,我发现我们写博客常常会写某某技术教程,对于没有展现渠道和粉丝的博客(比如我,小丑竟是我自己),很多人在没接触到这个概念或技术名词到时候,很难去直接检索该名词,以获得该技能。

例如本文中讲到的CloudFlare自选IP,这个技术已经流行了几年之久了,网上教程也铺天盖地,然而我却不了解。因此不断学习,增加获得知识面的渠道真的很重要(这里还是要感谢90Team)。

PS:本文中的mytool.cc欲出售,2k给有缘人。^_^

标签 v2ray cdn cloudflare cloudflarepartner dnspod
最后更新:2021年03月06日

文章评论

小九

Just For Fun

文章大纲
  1. 1.为何国内用户直接使用CloudFlare(CF)CDN加速效果不理想?
  2. 2.CloudFlare CDN自选IP是如何实现加速的?
  3. 3.学会自选IP加速我们能做什么?
    1. 3.1 小飞机加速手把手教程
  4. 4.讲在最后
分类目录
  • 编程开发
  • Yii2
  • 随笔
  • 工具资源
  • Django
  • 信息安全
标签聚合
Yii2工具 PHP调试 yii2事件 codeception mysql+es dnspod
随机 最新 热点
随机 最新 热点
Codeception(二) 常见容器漏洞总结 Glary Utilities PRO注册码 Yii2 Audit插件的使用【日志记录插件】 MySQL数据同步到ElasticSearch(Logstash方案)爬坑纪实 Yii2-Editable插件【GridView编辑】
OpenSearch集群部署 DNSRebind攻击 MySQL数据同步到ElasticSearch(Logstash方案)爬坑纪实 自动化编排学习(一)部署篇 常见容器漏洞总结 免费CDN加速手把手教程

COPYRIGHT © 2021 小九博客 ALL RIGHTS RESERVED.