2018年12月09日

使用bind和dnsmasq的阿里云CDN 本地DNS CNAME配置

最近申请了阿里云CDN对应用使用的图片和大文件进行下载加速。在做阿里云CDN测试时,调整DNS的CNAME需要走的审批流程比较长,想先用自己虚机上的dns配置CNAME进行CDN测试。

源站
albertzhou.net
加速域名

选择图片和大文件时生成的加速域名看着不一样

Table 1: 加速类型和域名
类型 域名
选择图片加速时的域名 download.albertzhou.net.w.kunlungr.com
选择大文件加速时的域名 download.albertzhou.net.w.kunlunca.com

dnsmasq

在dnsmas的配置文件中只要新增配置一行CNAME配置就可以,比bind的配置简单多了,所以先用dnsmasq进行测试。测试了半天发现总是解析不到cname,原来dnsmasq的CNAME配置对target是有要求的。

具体如下:

There are significant limitations on the target; it must be a DNS name which is known to dnsmasq from /etc/hosts (or additional hosts files), from DHCP, from --interface-name or from another --cname.

target 域名必须要在 /etc/hosts 里面或者其他地方有指向。

在dnsmasq的配置文件中加一行 cname=xxx.xxx,target,然后在 /etc/hosts 中加一行target的ip,target的ip可以ping得到,如:

vim /etc/dnsmasq.d/k8s.conf
cname=download.albertzhou.net,download.albertzhou.net.w.kunlunca.com

vim /etc/hosts
124.165.219.100    download.albertzhou.net.w.kunlunca.com

bind

dnsmasq的CNAME中的target要在/etc/hosts中配,就算可以配置多个,也有点麻烦,而且不能完全模拟实际环境,只能上bind了。bind的配置比较麻烦,唉,再麻烦也要上。

前提

一级域名 albertzhou.net 已经在 /etc/named.rfc1912.zones 中配置了,可以直接在zone文件里面配置。

[root@node2 ~]# cat /etc/named.rfc1912.zones
# 省略其他的zone配置
...

zone "albert.com" IN {
       type master;
       file "albert.com.zone";
};

...
# 修改bind的zone,增加download.albertzhou.net的CNAME
vim /var/named/albertzhou.net.zone
$TTL 20 ; 20 seconds
download     IN    CNAME    download.albertzhou.net.w.kunlunca.com.  

# 重新加载zone配置
rndc reload

bind的配置ok了,就可以直接把cname的lookup递归到阿里云的dns,这点比dnsmasq省事。

测试

dig测试域名的解析。

[root@node2 ~]# dig download.albertzhou.net

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> download.albertzhou.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57938
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 7

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;download.albertzhou.net.   IN      A

;; ANSWER SECTION:
download.albertzhou.net. 60 IN      CNAME   download.albertzhou.net.w.kunlunca.com.
download.albertzhou.net.w.kunlunca.com. 180 IN A 123.129.244.229

;; AUTHORITY SECTION:
w.kunlunca.com.         10799   IN      NS      ns3.kunlunca.com.
w.kunlunca.com.         10799   IN      NS      ns4.kunlunca.com.

;; ADDITIONAL SECTION:
ns3.kunlunca.com.       10799   IN      A       121.43.18.42
ns3.kunlunca.com.       10799   IN      A       203.107.0.204
ns3.kunlunca.com.       10799   IN      A       203.107.0.205
ns4.kunlunca.com.       10799   IN      A       120.25.118.73
ns4.kunlunca.com.       10799   IN      A       203.107.0.204
ns4.kunlunca.com.       10799   IN      A       101.200.28.73

;; Query time: 404 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Dec 19 15:22:42 CST 2018
;; MSG SIZE  rcvd: 260

再用curl测试实际下载文件的速度。

curl -vvv -o /dev/null download.albertzhou.net/bigfile.txt