自建CDN并配置CC防护
一、前言
本文记录一下使用 [Cdnfly - 自建cdn|防CC攻击|cdn软件|cdn系统] 搭建CDN系统,保姆级教程 适合小白食用
个人感觉自建CDN
和反代网站
效果都差不多,都可以实现加速 缓存 防攻击等功能,但我暂时还不是很懂nginx相关配置,相较而言 自建CDN更容易批量维护和管理各节点
官方安装文档:安装说明 · Cdnfly使用文档
二、准备
- 一台最小4GB内存的服务器(vps)做主控(cdn面板控制台)
- 若干服务器做CDN节点
- 系统:cdnfly面板暂时仅支持Centos-7和Ubuntu 1604系统
本文以一台centos7系统的hetzner 4GB内存vps
167.235.134.18
做主控一台centos7系统的DO纽约 512MB内存vps
192.241.156.51
做节点2 接管中国大陆移动以及海外等其他流量一台centos7系统的DO新加坡 512MB内存vps
157.245.154.23
做节点2 接管中国大陆的电信和联通流量为什么用DO 主要是我就知道这一家有0.5GB小内存,虽然这款比一些4GB内存的都贵 但为了测试512MB内存可用 还是选择了DO
为什么CDN节点机器用0.5GB内存小鸡 大部分廉价的国内优化机器只有0.5GB内存
三、cdnfly自建云端
有cdnfly官方授权的可跳过这一步,需要购买正版授权请前往 官网购买
因为我就是临时个人测试使用,官方那个有些贵,就采用 ccclt 大佬分享的的 绕过授权方法
盗版可耻 开发不易 有条件请用正版
cdnfly自建云端搭建方法:
用 这个源码 搭建一个站点,绑定域名auth.cdnfly.cn、monitor.cdnfly.cn ,并根据文件中的nginx伪静态配置设置伪静态。
我下文用其他大佬已经设置好的网站 网站的绑定IP为 63.251.217.137
四、主控服务器设置
1、首先更新centos7源
yum update -y && yum upgrade -y
2、修改主控vps的hosts文件
修改主控vps的hosts文件,将 auth.cdnfly.cn、monitor.cdnfly.cn 这2个域名指向刚才的自建云端服务器IP 63.251.217.137
修改hosts意义是 主控vps请求 auth.cdnfly.cn
monitor.cdnfly.cn
这两个网站的内容会直接去 63.251.217.137
这个服务器请求,这样就绕过了官方服务器的验证
vi /etc/hosts
#添加以下内容,记得替换为你自己搭建的IP 你就用这个IP也行
63.251.217.137 auth.cdnfly.cn monitor.cdnfly.cn
3、检查hosts是否生效
ping auth.cdnfly.cn
ping monitor.cdnfly.cn
#如果都返回 63.251.217.137
4、安装cdnfly控制面板
这里参考 LoveesYe 整理的:https://github.com/LoveesYe/cdnflydadao
#直接在主控vps执行这条命令即可,控制面板占用3GB内存,内存不足会安装失败
curl -fsSL https://github.com/LoveesYe/cdnflydadao/raw/main/cdnfly/v5.1.13/master/master.sh -o master.sh && chmod +x master.sh && ./master.sh --es-dir /home/es
出现下图页面即安装成功,通过 IP http://167.235.134.18
直接访问即可
管理员账号和密码: admin/cdnfly
普通用户账号和密码: jason/cdnfly
五、CDN节点服务器配置
我用了两台做CDN节点
一台centos7系统的DO纽约 512MB内存vps 192.241.156.51
做节点2 接管中国大陆移动以及海外等其他流量
一台centos7系统的DO新加坡 512MB内存vps 157.245.154.23
做节点2 接管中国大陆的电信和联通流量
以节点1 192.241.156.51
为例,节点2 157.245.154.23
同理
1、更新centos7的源
yum update -y && yum upgrade -y
2、添加SWAP虚拟内存
我的512MB小鸡必须添加SWAP否则内存不够,1GB内存vps可自行决定是否添加SWAP
centos7添加SWAP我参考的 这篇文章
#先用 free -m 查看一下swap的大小
#1、使用dd命令创建/home/swap这么一个分区文件。文件的大小是1024000个block,一般情况下1个block为1K,所以这里空间是1000MB
dd if=/dev/zero of=/home/swap bs=1024 count=1024000
#2、接着再把这个分区变成swap分区
/sbin/mkswap /home/swap
#3、再接着使用这个swap分区。使其成为有效状态
/sbin/swapon /home/swap
#现在再用 free -m 命令查看一下内存和swap分区大小,就发现增加了512M的空间了
#4、修改/etc/fstab文件,在文件末尾增加如下一行,实现开机自动挂载
#vi /etc/fstab
/home/swap swap swap defaults 0 0
3、安装被控服务
进入cdnfly管理员控制台>>系统管理>>系统升级,复制节点安装命令并在节点1和节点2等CDN节点服务器执行
我出现 chmod: 无法访问"agent.sh": 没有那个文件或目录
报错,可能是 LoveesYe 总结的 主控脚本 有点小问题
解决办法就是用 LoveesYe 总结的 被控脚本
curl -fsSL -m 5 https://github.com/LoveesYe/cdnflydadao/raw/main/cdnfly/v5.1.13/agent/agent.sh -o agent.sh || curl -m 5 https://github.com/LoveesYe/cdnflydadao/raw/main/cdnfly/v5.1.13/agent/agent.sh -o agent.sh && chmod +x agent.sh && ./agent.sh --master-ver v5.1.11 --master-ip ip --es-ip ip --es-pwd passwd
###替换--master-ip --es-ip --es-pwd 为你自己的,在cdnfly面板查看
###例如我执行的脚本为
curl -fsSL -m 5 https://github.com/LoveesYe/cdnflydadao/raw/main/cdnfly/v5.1.13/agent/agent.sh -o agent.sh || curl -m 5 https://github.com/LoveesYe/cdnflydadao/raw/main/cdnfly/v5.1.13/agent/agent.sh -o agent.sh && chmod +x agent.sh && ./agent.sh --master-ver v5.1.11 --master-ip 167.235.134.18 --es-ip 167.235.134.18 --es-pwd OPpESBo9mF
下图即为安装成功,cdnfly被控服务会自己安装nginx等
六、cdnfly控制台必要配置
官方安装文档:安装说明 · Cdnfly使用文档
1、添加CDN节点
即主控与被控服务建立连接,添加方法如下图
会提示先修改密码,修改密码在:系统管理>>用户管理
2、DNS设置
DNS设置可配置通过API来与第三方DNS提供商无缝对接,来生成网站的CNAME
目前支持aliyun,国内版dnspod,dns.com、dns.la 和cloudflare.com
获取密钥具体参考官方 DNS设置
3、线路分组 设置分线路解析
只有 DNS服务商 支持分线路解析才可以设置分线路解析
例如cloudflare这类国外DNS服务就不支持分线路解析
4、添加套餐
- 名称 - 套餐名称,用户端也会显示这个
- 描述 - 套餐的说明,也会显示到用户端的套餐购买列表
- 分配给用户 - 输入用户的id,表示指定该套餐为该用户的专属套餐,只有这个用户能购买此套餐
- 线路分组 - 上一步添加的线路组,或其它分组,决定网站绑定此套餐后网站配置分发到的节点,以及cname解析的IP
- 套餐分组 - 为套餐分组,分组也会显示到用户端的套餐购买页面,方便归类购买
- CNAME域名 - 生成网站cname使用的域名,默认为之前dns设置中的主域名,可以输入其它的域名,但此域名必须跟主域名在同一个dns账号下。
- 月流量 - G为单位,限制该套餐一个自然月内使用流量的上限
- 域名数 - 该套餐允许的域名数量,域名数量包括裸域名及各级域名,如www.cdnfly.cn cdnfly.cn算两域名
- HTTP非80,443端口数 - http可以输入非80,443的端口,此项可以限制非标端口的数量,不允许的话设置为0
- 四层转发端口数 - 四层转发允许的端口数
- 自定义CC规则 - 如果此项为允许,用户则可以创建自己的cc规则,并绑定到网站使用。如果为禁止,则用户只允许选择系统内置的规则
- 排序 - 默认100,小值排在前面
- 带宽为负值表示无限制
- 连接数为负值表示不限制连接数
5、添加网站
用管理员权限在 系统管理>>用户管理 创建一个用户 test
以 test 用户登录 然后购买免费的高级套餐,在网站管理>>分组管理>>新增分组后就可以添加网站了
七、cdnfly控制台推荐配置
1、设置CC防护
这个根据自己需要设置就好了,还可以自定义CC规则
比如设置单IP 10s内最大访问 329.tanglu.cf 资源数为100,单个资源最大次数为20
这个防一般的单IP CC攻击很有效,推荐设置
需要自己CC测压 可以参考 这篇记录
一些发卡站避免被机器人检查可以设置访问该域名需要点击验证
2、设置CDN缓存文件类型
这个也是根据自己网站的资源类型,以下是我博客的设置
3、设置CDN节点服务器缓存大小和最大带宽
八、cdnfly控制台其他配置
1、短信/邮箱提示
短信/邮箱提示功能请参考 SMTP设置
2、对接支付
需要支付功能请参考 充值设置
3、转发
转发容易封禁端口,不建议用CDN服务器做转发
4、面板通过域名访问
直接套cloudflare,或者套其它CDN,也可以用其他机器反代 但感觉没必要
九、杂谈
你也可以像我博客一样将境外流量接入到cloudflare加速,具体教程可以参考 cloudflare配置详解
CC测压 注意不要用源站机器去攻击,可能cdnfly为了回源请求成功 给源站IP加了白名单,我之前遇到这个问题纠结好久还以为是cdnfly规则有问题,最后才知道小丑是我自己…
主控迁移可以参考官方 FAQ
最后选择CDN机器加速国内访问,应该优先选择晚高峰tcp丢包少的,而不是只看ping值或者线路
本文转载自:https://blog.tanglu.me/cdnfly/