最近,在S3协议项目中调研通过DNS域名解析处理流量负载均衡问题。原来对dns也有一些粗浅的了解,知道通过DNS可以将域名转换为IP地址,也可以做负载均衡。但是DNS的解析流程以及缓存等机制,只是一知半解。正好,趁着这个机会系统的学习一下。

在windows 2000以前,没有DNS客户端服务,在浏览器和hosts没有命中的情况下,直接去本地DNS服务器解析域名了。从windows 2000开始,有DNS客户端服务,缓存了域名和地址映射关系,进一步加速了DNS解析。
1.打开注册表(Regedit.exe);
2.依次展开以下目录:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
3.修改 “MaxCacheTtl ”字段的值(笔者电脑windows 7,该字段默认值为:10800)。
DNS 列表查询命令:
# 显示本机dns, 生存时间, 80-8000都有
ipconfig /displaydns
清除DNS缓存命令:
# 刷新windows dns缓存
ipconfig /flushdns
windows DNS服务名称是Dnscache,在任务管理器中可以查看到该服务。如果想关闭DNS客户端缓存,则打开任务管理器,停止该服务即可。DNS服务停止后,只是取消DNS缓存机制,依然可以正常访问网站(通过本地域名服务器解析域名)。
Linux系统需要安装Systemd-Resolved,DNSMasq 或 Nscd 等缓存服务,否则没有操作系统级 DNS 缓存。不同的Linux发型版本,使用的缓存服务不同。不同的DNS服务,清除DNS缓存的方法也不一样。清除DNS缓存命令如下:
Systemd-Resolved( Ubuntu发行版自带该应用):
sudo systemd-resolve --flush-caches
Dnsmasq:
sudo service dnsmasq restart
或者
sudo systemctl restart dnsmasq.service
NSCD(Rethat发行版首先应用):
$ sudo systemctl restart nscd.service
或者
$ sudo service nscd restart
日拱一卒无有尽,功不唐捐终入海,与君共勉之!