日常梳理-DNS缓存

文章目录

  • 请求路径:
  • [一、查看JVM DNS 缓存](#一、查看JVM DNS 缓存)
  • 二、查看操作系统DNS缓存
    • [1. systemd-resolved(主流默认)](#1. systemd-resolved(主流默认))
    • [2. nscd(传统服务)](#2. nscd(传统服务))
    • [3. dnsmasq 缓存的是权威 DNS 返回的原始 TTL(需通过日志查看)](#3. dnsmasq 缓存的是权威 DNS 返回的原始 TTL(需通过日志查看))
    • [4. 无独立缓存服务(仅 glibc 解析器)](#4. 无独立缓存服务(仅 glibc 解析器))
  • [三、查看本地DNS服务器的TTL(由权威 DNS 服务器决定)](#三、查看本地DNS服务器的TTL(由权威 DNS 服务器决定))

请求路径:

JVM DNS缓存->操作系统DNS缓存->本地DNS服务器(默认60s)->权威 DNS 服务器

一、查看JVM DNS 缓存

  1. 查看JVM 启动参数,是否有-Dnetworkaddress.cache.ttl=60

  2. 查看java.security文件,是否设置参数networkaddress.cache.ttl。JDK 1.8 在没有配置 Security Manager 时,networkaddress.cache.ttl 默认为 30 秒,而不是永久有效

  3. java.security 文件路径:

sh 复制代码
JDK8:$JAVA_HOME/jre/lib/security/java.security
JDK11+:$JAVA_HOME/conf/security/java.security(JRE 已合并到 JDK)。
  1. 查看security manager:
    启用方式:启动 JVM 时添加参数 -Djava.security.manager;
    禁用状态:默认无此参数,Security Manager 不生效;

二、查看操作系统DNS缓存

1. systemd-resolved(主流默认)

systemd-resolved 会缓存 DNS 解析结果,并保留原始的 TTL 值(从权威 DNS 服务器获取)。resolvectl query 命令,直接输出缓存的剩余 TTL 和原始 TTL(从权威 DNS 服务器获取)。

sh 复制代码
#查看单个域名的缓存TTL(推荐)
resolvectl query 你的下游域名

你的下游域名: 192.168.1.100 -- link: eth0
              192.168.1.101
              192.168.1.102

-- Information acquired via protocol DNS in 20ms.
-- Data is authenticated: no
-- TTL左:剩余TTL时间 | TTL右:原始TTL时间
-- 缓存状态:cache(来自缓存)/ network(来自网络查询)
   RR type: A
   TTL: 35s (valid for 60s) # 剩余35秒,原始TTL为60秒

2. nscd(传统服务)

nscd 的缓存 TTL 是配置固定值(不是动态的),查看配置文件即可:

sh 复制代码
# 查看 nscd 配置的缓存TTL(正向缓存)
grep "positive-time-to-live" /etc/nscd.conf

# 示例输出
positive-time-to-live   hosts            3600  # 缓存3600秒(1小时)

3. dnsmasq 缓存的是权威 DNS 返回的原始 TTL(需通过日志查看)

sh 复制代码
# 查看 dnsmasq 日志中的缓存TTL
journalctl -u dnsmasq | grep -E "你的域名|TTL" | tail -5

# 示例输出
dnsmasq[1234]: cached 你的域名 is 192.168.1.100 TTL 60  # 缓存60秒

4. 无独立缓存服务(仅 glibc 解析器)

若系统未运行任何 DNS 缓存服务,无持久化 DNS 缓存,仅单次查询临时缓存,无法查看 TTL。可直接查询权威 DNS 的原始 TTL:

sh 复制代码
#查看权威DNS返回的原始TTL
dig +ttlid 你的域名

三、查看本地DNS服务器的TTL(由权威 DNS 服务器决定)

本地 DNS 服务器(如运营商 DNS、路由器 DNS)本身不主动配置 TTL,而是在向权威 DNS 查询时,接收权威 DNS 返回的 "原始 TTL",并以此作为缓存时长。

相关推荐
我真会写代码22 分钟前
从入门到精通:Redis实战指南,解锁高性能缓存核心能力
数据库·redis·缓存
haixingtianxinghai3 小时前
Redis的定期删除和惰性删除
数据库·redis·缓存
努力也学不会java11 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
czlczl2002092518 小时前
Redis数据编码
数据库·redis·缓存
Wpa.wk18 小时前
pb协议接口测试
数据库·redis·缓存
czlczl2002092521 小时前
Redis延迟队列
数据库·redis·缓存
三金1213821 小时前
Redis常见命令
数据库·redis·缓存
尽兴-1 天前
超越缓存:Redis Stack 如何将 Redis 打造成全能实时数据平台
数据库·redis·缓存·redis stack
胡西风_foxww1 天前
nextjs部署更新,Turbopack 和 Webpack 缓存冲突问题解决
缓存·webpack·react·nextjs·turbopack