日常梳理-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",并以此作为缓存时长。

相关推荐
H_BB2 小时前
LRU缓存
数据结构·c++·算法·缓存
此生只爱蛋13 小时前
【Redis】Set 集合
数据库·redis·缓存
于归pro17 小时前
Redis 基础命令、核心概念与安装验证完整指南
数据库·redis·缓存
西贝爱学习18 小时前
【Redis安装】Redis压缩包Redis-x64-5.0.14.1.zip
数据库·redis·缓存
ELI_He99919 小时前
FunASR AutoModel 设置本地缓存路径
缓存
星辰_mya20 小时前
Redis持久化
数据库·redis·缓存
橘子真甜~20 小时前
Reids命令原理与应用1 - Redis命令与原理
数据库·c++·redis·缓存
与遨游于天地20 小时前
了解Redis
数据库·redis·缓存
Bruce_Liuxiaowei21 小时前
一键清理Chrome浏览器缓存:批处理与PowerShell双脚本实现
前端·chrome·缓存