关于CNAME记录的说明https://support.google.com/a/answer/112037?hl=zh-Hans有介绍,这里主要讨论服务器如何允许和禁止CNAME访问。
1、服务器如何允许CNAME访问
默认情况下,服务器是允许CNAME访问的,可以用任意域名CNAME到www.cloudxns.net,本人打包票可以访问
2、服务器如何禁止CNAME访问
解决这个问题之前,先要弄清楚http的访问原理:在浏览器打开网站后,浏览器会根据本地的dns配置,到对应的dns服务器查找域名的ip,dns服务器根据缓存策略找到ip后返回给浏览器,然后浏览器根据ip和默认80端口建立tcp连接(赶紧telnet 61.174.9.79 80和访问61.174.9.79的有木有),连接成功后,发送http报文,服务器接收到http报文请求后,返回对应的信息(一般是网页),然后浏览器显示该信息。从流程上看,服务器无法从tcp层禁止CNAME访问,因为tcp层只能禁止ip访问,所以服务器需要在http层禁止CNAME访问,一个简单的http报文如下:
GET /testHTTP/1.1
Host:192.168.100.210:8888
Connection:keep-alive
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/37.0.2062.103 Safari/537.36
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4
关于http协议,http://user.qzone.qq.com/279483210/blog/1425346206有介绍。如果是cloudxns.wuzx.xyz配置CNAME到www.cloudxns.net,以上数据中的Host值会是cloudxns.wuzx.xyz,所以服务器可以根据http请求中的Host字段配置CNAME访问策略,例如www.baidu.com就做了CNAME访问策略:baidu.xx.xx可以CNAME到www.baidu.com正常访问,sex.xx.xx不能CNAME到www.baidu.com正常访问