CNAME 接入 Cloudflare 使用免费 Railgun

CNAME 接入 Cloudflare

为何选择 CNAME 接入 Cloudflare

Cloudflare 是国外 CDN 厂商,提供免备案无限流量 CDN,免费的 HTTPS 证书和无限量的 DDOS 防御,深受中小站长的喜爱,海外线路非常不错,国内的话移动线路也很棒。可惜的是默认免费版只能进行 NS 记录,这意味着还需要更改域名的 NS,实在是麻烦。CNAME 接入方式只支持 200 美元/月以上的 Business 或 Enterprise plan,这对于很多人来说都太贵了。同时 CNAME 接入可以完成一些骚操作,比如利用 GEO DNS 实现分区解析,国内 CDN + 海外 CDN 实现全球加速。

作为 Cloudflare 的 Partner 也就是所谓“合作伙伴”,我可以提供免费的 CNAME 接入方案,只需在我的面板登录 Cloudflare 账户即可,完全利用 Cloudflare 官方的 API,不涉及任何安全问题。

接入步骤

login

  • 添加域名(注意域名不能在 Cloudflare 上接入)

add

list

  • 查看域名,并修改解析

ssl

source

最后要修改的是源站地址,在修改界面,填写源站的 CNAME 地址,注意是 CNAME 地址不是 IP 地址,如果源站服务器不提供的话怎么办呢,那就自行添加一条记录就 OK 啦。

然后我们需要在 DNS 管理商那边按需添加自己的 DNS,将 example.comwww.example.com 分别解析到 example.com.cdn.cloudflare.netwww.example.com.cdn.cloudflare.net 即可实现 CNAME 接入 Cloudflare.

当然如果你想要薅羊毛的话,可以直接解析到 cloudflare.com 享受 Cloudflare 5000 刀节点。

免费使用 Cloudflare Railgun

Railgun:一切皆可缓存

Cloudflare 的 Railgun 使用高级网络优化,确保尽快交付客户内容。过去,大多数 Web 内容无法缓存是因为它们是动
态的。然而,即便动态内容的变化速度十分缓慢也无法缓存。Railgun 会跟踪页面变化,一直向下跟踪至字节,并仅发
送整个网络上实际变化的字节。
Railgun 实现了 99.6% 的压缩率,这意味着,过去需要 200 个数据包才能发送的内容现在只需单个数据包即可发送。
这样一来,便为网站访问者带来 140% 的性能提升。
Railgun 可以与 Cloudflare 的其他性能优化技术结合使用,其中包括自动网络路由优化、SPDY 支持、Polish™ 和
Mirage™ 图像优化以及 Rocket Loader™。通过这套工具,Cloudflare 可确保您的主机托管服务在世界各地都尽可能快
地运行。

简单来说,Railgun 能让源站的动态内容几乎全部静态化,进而大大加快加载的速度,也能一定程度上缓解对于动态页面的 CC 攻击,当然正常的用户需要付出 200 刀才可以享受这一特性,那么作为 Partner 用户,也可以免费享受这一特性。

在源站安装 Railgun

  • CentOS 7
sudo rpm -ivh http://pkg.cloudflare.com/cloudflare-release-latest.el7.rpm
sudo yum update && yum install railgun-stable -y
  • Ubuntu 16 / Debian 9
# Ubuntu 16
echo 'deb http://pkg.cloudflare.com/ xenial main' | sudo tee /etc/apt/sources.list.d/cloudflare-main.list
# Debian 9
echo 'deb http://pkg.cloudflare.com/ stretch main' | sudo tee /etc/apt/sources.list.d/cloudflare-main.list
# 安装过程一致
curl -C - https://pkg.cloudflare.com/pubkey.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install railgun-stable -y

会自动安装 Railgun Server 和 memcached,其中 memcached 的版本一般非常老,如果需要的话可以自行编译安装新版。

修改配置并启动

vi /etc/railgun/railgun.conf

找到如下两行进行修改:

activation.token = <这里填写 Railgun 的 Token>
activation.railgun_host = <这里填写服务器的公网 ip>

然后启动 Railgun

service railgun start

成功的话可以看到面板上已经显示开通。

关于 Cloudflare 的一些设置

Cloudflare 有很多可选择的配置这边简单的列出一些,包括源站和 CF 面板上的配置。

Real-IP

加了 CDN 以后如何获取访客真实 IP 是一个问题,特别是加了 Railgun 以后,日志里所有的访问 IP 都是本机这就很尴尬了
我们建立一个 cloudflare.conf 放在 conf.d 中,在 http 块或者 server 块中引入即可。

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
real_ip_header CF-Connecting-IP;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
real_ip_recursive on;
# V6 部分可以自行决定是否选择

防止非授权 ip 访问

  • cloudflare.conf 中添加:
# 禁止非 CF IP 访问
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 104.16.0.0/12;
allow 108.162.192.0/18;
allow 131.0.72.0/22;
allow 141.101.64.0/18;
allow 162.158.0.0/15;
allow 172.64.0.0/13;
allow 173.245.48.0/20;
allow 188.114.96.0/20;
allow 190.93.240.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
deny all;

如果你开启了 Railgun 的话,甚至可以只允许 Railgun 的 IP 访问,完全不会泄露源站 IP。因为 Railgun 是私有协议,所以只放开 Railgun 端口也是 OK 的。

Last modification:March 15th, 2018 at 10:34 am

Leave a Comment

2 comments

  1. Aliyun

    Memcached 最好还是编译下避免旧版的安全问题

    1. DCC
      @Aliyun

      不过 Debian 和 Ubuntu 默认安装的 deb 没有监听 0.0.0.0 应该没有问题