插件窝 干货文章 如何在 Linux 上查看和刷新 DNS 缓存

如何在 Linux 上查看和刷新 DNS 缓存

sudo 缓存 systemd bash 664    来源:    2025-04-17

在 Linux 上查看和刷新 DNS 缓存的方法取决于系统使用的 DNS 解析服务。以下是常见情况的解决方案:

一、查看 DNS 缓存

1. 使用 systemd-resolved(Ubuntu/Debian 等主流发行版)

sudo journalctl -u systemd-resolved --no-pager | grep cache
# 或查看详细解析记录
sudo systemd-resolve --statistics

2. 使用 nscd(Name Service Cache Daemon)

sudo strings /var/cache/nscd/hosts

3. 使用 dnsmasq(常见于路由器或最小化安装)

sudo kill -SIGUSR1 $(pgrep dnsmasq)  # 触发日志输出
sudo tail -f /var/log/daemon.log      # 查看日志

二、刷新 DNS 缓存

1. systemd-resolved 方式

sudo systemd-resolve --flush-caches
# 验证是否清空
sudo systemd-resolve --statistics | grep 'Current Cache Size'

2. nscd 方式

sudo systemctl restart nscd
# 或直接清除缓存文件
sudo rm -f /var/cache/nscd/hosts
sudo nscd -i hosts

3. dnsmasq 方式

sudo systemctl restart dnsmasq
# 或发送刷新信号
sudo kill -SIGUSR1 $(pgrep dnsmasq)

4. 通用方法(当不确定服务时)

# 重启所有可能涉及的服务
sudo systemctl restart systemd-resolved nscd dnsmasq

三、浏览器级缓存(如需)

# Chrome/Edge 地址栏访问:
chrome://net-internals/#dns
# Firefox 地址栏访问:
about:networking#dns

注意事项:

  1. 某些 Linux 发行版默认不启用 DNS 缓存(如 CentOS)
  2. 操作需要 root 权限
  3. 企业环境中可能有其他缓存服务(如 Unbound)
  4. 刷新后首次解析可能会稍慢

验证命令:

dig example.com | grep "Query time"  # 观察查询时间变化

建议根据您的具体发行版选择对应方法,大多数现代发行版(如 Ubuntu 18.04+)优先使用 systemd-resolved。