ubuntu域名兼容性测试
导读:Ubuntu 域名兼容性测试清单 一 目标与适用范围 验证目标域名在 Ubuntu 上的正向解析 A/AAAA、反向解析 PTR、**常见记录类型(MX、CNAME、TXT、NS)**是否返回预期结果。 覆盖 IPv4/IPv6 双栈、内...
Ubuntu 域名兼容性测试清单
一 目标与适用范围
- 验证目标域名在 Ubuntu 上的正向解析 A/AAAA、反向解析 PTR、**常见记录类型(MX、CNAME、TXT、NS)**是否返回预期结果。
- 覆盖 IPv4/IPv6 双栈、内网私有域名、公网域名、以及 systemd-resolved 管理场景。
- 输出可复用的命令与判定标准,便于在 CI/CD 或交付验收中使用。
二 快速测试命令
- 安装工具
- Ubuntu/Debian:sudo apt update & & sudo apt install -y dnsutils(提供 dig、nslookup)
- 正向解析
- dig example.com A +short
- dig example.com AAAA +short
- 指定 DNS 服务器对比
- dig @1.1.1.1 example.com A
- dig @8.8.8.8 example.com A
- 记录类型
- dig example.com MX +noall +answer
- dig example.com TXT +noall +answer
- dig example.com NS +short
- dig www.example.com CNAME +noall +answer
- 反向解析
- dig -x 93.184.216.34 +short
- 解析路径与追踪
- dig example.com +trace
- 连通性验证(应用层)
- curl -v https://example.com
- ping -c 4 example.com(注意:ping 依赖应用层解析,若仅 DNS 异常会报 unknown host)
- 批量与简洁输出
- dig -f domains.txt +short
- dig example.com +noall +answer +stats
- 若系统仅有 nslookup
- nslookup example.com
- nslookup -type=MX example.com
- nslookup 93.184.216.34 以上命令覆盖日常域名解析验证所需的主流用法,适合快速回归与问题定位。
三 系统解析栈与配置核查
- 查看实际生效的 DNS 与域规则(适用于使用 systemd-resolved 的 Ubuntu)
- resolvectl status(重点看:Current DNS Server、DNS Servers、Link/Interface、Domains)
- 临时切换某接口 DNS:sudo resolvectl dns eth0 192.168.2.8
- 为某接口设置域匹配:sudo resolvectl domain eth0 ~. internal.example.com
- 持久化配置(/etc/systemd/resolved.conf)
- [Resolve]
- DNS=192.168.2.8
- Domains=~. internal.example.com
- FallbackDNS=114.114.114.114
- 应用:sudo systemctl restart systemd-resolved
- [Resolve]
- 传统 resolv.conf 与 nsswitch 核查
- cat /etc/resolv.conf(常见为 nameserver 127.0.0.53 表示本地转发器)
- grep ‘^hosts:’ /etc/nsswitch.conf(应包含 dns,如:hosts: files dns)
- 判定要点
- 能 dig 到记录但 ping 报 unknown host,优先检查 /etc/nsswitch.conf 是否启用 dns。
- 多网卡/多 DNS 时,确认接口上的 Current DNS Server 与期望一致,避免默认走公网 DNS 导致内网域解析失败。
四 常见故障与修复建议
- 能 ping IP 但域名不通
- 检查 /etc/nsswitch.conf:hosts 行应包含 dns;若缺失,添加后重试。
- 同一网络不同主机解析结果不一致
- 使用 resolvectl status 确认各接口的 Current DNS Server 与 Domains;必要时用 resolvectl dns/domain 纠正,或在 /etc/systemd/resolved.conf 中设置 DNS 与 Domains 并重启服务。
- 内网私有域名解析失败
- 将内网 DNS 置于 DNS= 首位,并在 Domains= 配置相应私有域后缀(如 ~. internal.example.com),确保私有域请求优先走内网 DNS。
- 仅有 resolv.conf 且显示 No nameservers found
- 临时写入 nameserver(如 114.114.114.114),并重启 systemd-resolved;更推荐改为 resolved 管理并配置 resolved.conf 持久化。
- 反向解析慢或不一致
- 仅为诊断用途使用 dig -x;业务连通性以应用层(如 curl)结果为准,反向解析失败不等同于访问失败。
五 一键测试脚本示例
- 用法:将目标域名写入文件 domains.txt(每行一个),执行脚本
- 示例脚本(Bash)
- #!/usr/bin/env bash set -Eeuo pipefail domains=(example.com internal.example.com) dns_list=(1.1.1.1 8.8.8.8) for d in “${ domains[@]} ”; do echo “=== $d ===” echo “A:” dig +short “$d” A echo “AAAA:” dig +short “$d” AAAA echo “MX:” dig +noall +answer “$d” MX echo “TXT:” dig +noall +answer “$d” TXT for ns in “${ dns_list[@]} ”; do echo “A via $ns:” dig @“$ns” +short “$d” A done echo “PTR of A (if any):” ip=$(dig +short “$d” A | head -n1) [[ -n “$ip” ]] & & dig -x “$ip” +short echo done
- 判定建议
- 关键业务域名的 A/AAAA 必须返回有效 IP;MX/TXT 按业务需要返回预期记录;在多个 DNS 上结果应一致(私有域除外)。
- 若脚本输出为空或报错,按第三节逐项核查解析栈与接口配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu域名兼容性测试
本文地址: https://pptw.com/jishu/777680.html
