嵌入式 清空Linux下的DNS缓存

1. DNS存放位置:/etc/resolv.conf ,格式:nameserver 9.181.2.101

2. 如果要disableDNS, 就将该配置文件置为invalid nameserver: echo "nameserver 9.123.253.45" > /etc/resolv.conf

3. 要totally disableDNS, 还需要将系统中的DNS缓存清空:
    (1) 用DNS缓存程序NSCD(name service cache daemon)负责管理DNS缓存 
              service nscd restart
              Note: NSCD Name Service Cache Daemon,  DNS缓存程序,负责管理DNS缓存。
    (2)另一种实现DNS缓存则是用Bind来架设Caching Name Server
              rndc flush
    (3) 如果你的DNS服务器是用dnsmasq实现的
              sudo dnsmasq restart
              Note:  DNSmasq是一个轻巧的容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务

4. 如果在程序中调用getaddrinfo和getnameinfo来获取域名对应的IP,在同一进程中,上一次成功获取的结果会被保留下来,即使在下一次调用之前disable了DNS并清空了系统的DNS缓存,下一次仍然能够解析出正确的IP。此时需要在调用这两个函数之前用res_init()函数来清空他们自己保留的缓存。

二、其它操作系统下清空DNS缓存的方法
1、微软windows下如何清空dns:
你可以用以下命令来清空dns 缓存内容。
ipconfig /flushdns

你也可以用以下命令来查看dns缓存内容。
ipconfig/displaydns
windows下的DNS Cache 是由DNS Client后台进程控制的,你可以在控制面板 ->服务中将其关闭,
这样windows就不会进行DNS缓存,每次都将直接查询DNS Server。

2、Mac OSX下如何清空DNS缓存:
在Mac OSX中,你可以用以下命令来清空DNS缓存内容:
bash-2.05a$lookupd-flushcache

三、其它一些DNS Cache小技巧
Q: 如何查看BIND DNS Server的Cache :
A: 在 bind 9中,可以使用rndc -dumpdb命令来查看DNS Cache,当然你的rndc要先配置好。这个命令会在/var/named(这个目录是在 named.conf 文件中指定的)目录中生成named_dump.db文件。
在bind8下,可以试试用kill -INT named_pid。

Q: DNS Cache的时间如何设置:
A: 在bind9 中,使用TTL参数来设置DNS默认的缓存时间,但要记住这个是你解析的域名在别人的DNS中的缓存时间。

Q: 在客户端如何清空DNS Cache:
A: 在Unix下,DNS客户端只是几个例程,负责转发和接受查询的功能,并不缓存。

Q: 在DNS服务器端如何清空DNS Cache:
A: 最简单的方法就是重新启动 named 进程;当然也有不用重启的方法: rndc flush


你可能感兴趣的:(嵌入式 清空Linux下的DNS缓存)