使用免费的DDNS和CDN加速(Cloudflare免费套餐)

什么是CDN

CDN(content delivery network)、是一种分布式的网页内容代理服务。CDN会将用户网站上的静态内容分发到世界各地的加速节点,同时把用户域名的DNS映射到对应的节点来达到加速访问的目的。
使用CDN不仅能提升网站的访问速度,节省服务器带宽和资源。而且CDN还有隐藏服务器真实IP,抵抗外界攻击的作用。
CDN服务商有很多,这里我只介绍自己正在使用的,也许也是业界最著名的Cloudflare

使用Cloudflare

Cloudflare有免费的个人plan可以选择,提供基础的CDN和缓存,保护功能。
创建账号并登录之后,按照指引添加自己的域名,选择free版本,之后按照指引完成初始设置。引导很简明,这里不再赘述。
对于个人用户而言,Cloudflare的免费版所提供的功能已经足够强大了。唯一的限制就是必须使用Cloudflare的DNS服务。

使用Cloudflare的DNS服务

要使用Cloudflare服务,首先将域名注册机构那里的DNS服务器设置更改为Cloudflare的DNS服务器域名:
set nameserver to cloudflare

添加A类记录

然后添加DNS记录。
必须需要添加的是A类记录,名称使用@,即域名主体的IPv4地址。
add A record to cloudflare
最后的proxy开关有proxied和DNS only两种状态

  • proxied:所有通过域名的访问都将指向cloudflare的代理服务器。这种方式可以享受cloudflare作为CDN的加速,安全防护等功能
  • DNS only:只利用cloudflare的DNS服务,通过域名的访问将直接指向真实的服务器IP地址

同时支持www.开头的域名和不带www.的域名

如果要启用次级域名,如www.开头的域名,则可以添加CNAME类型的记录,名称设置为www,内容设置为根域名
add www CNAME
关于www与非www域名的区别以及应该选择哪一种的讨论请参见

Related

细心的朋友可能会发现,现在互联网上网站的域名有些以www开头,有些则不是。两种域名究竟有哪些区别呢? 技术上的区别 网域名称(英语:Domain Name,简称:Domain),简称域名、网域,是由一串用点分隔的字符组成的互联网上某一台计[…]

world wide web

将Cloudflare作为DDNS

以上介绍的手动设置DNS记录的方法只使用于静态IP。如果是动态IP则无法通过手动填入IP地址的方式使用Cloudflare的DNS。
好在Cloudflare提供了设置DNS的API。使用这套API可以编写一个更新DNS的脚本,放在crontab里定时运行,达到动态DNS的效果。
如果想自己编写更新脚本可以参考官方文档:
https://api.cloudflare.com/

github上有很多设置cloudflare的DNS记录的shell脚本,但是大部分都有这样那样的问题,无法正常更新。
经过一番测试踩坑,推荐使用这个,代码清晰,设置简洁。最重要的是实测工作正常。
https://github.com/yulewang/cloudflare-api-v4-ddns/blob/master/cf-v4-ddns.sh

只需要在脚本中填写自己的Cloudflare APIKey,用户名,域名,DNS记录名。
执行一次测试工作正常之后即可加入crontab,自动更新。如果IP没有变化会自动中止更新操作。

sudo crontab -e

添加cron计划任务,每小时执行一次:

0 * * * * /home/[username]/cf-v4-ddns.sh

重启crontab

sudo service cron restart
Ads