本文目录导读:

基础DNS解析检测脚本(Shell)
#!/bin/bash
# DNS解析检测脚本
# 使用方法: ./dns_check.sh [域名]
DOMAIN=${1:-"example.com"}
DNS_SERVERS=("8.8.8.8" "1.1.1.1" "114.114.114.114")
echo "========================================"
echo "域名解析检测报告 - $DOMAIN"
echo "检测时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "========================================"
# 检测系统默认DNS
echo -e "\n[1] 系统默认DNS解析结果:"
if command -v nslookup &> /dev/null; then
nslookup $DOMAIN 2>&1 | grep -E "Address|Name"
elif command -v host &> /dev/null; then
host $DOMAIN
else
dig $DOMAIN +short
fi
# 检测指定DNS服务器
echo -e "\n[2] 指定DNS服务器解析结果:"
for dns in "${DNS_SERVERS[@]}"; do
echo -n "DNS服务器 $dns: "
result=$(dig @$dns $DOMAIN +short 2>/dev/null)
if [ -n "$result" ]; then
echo "$result"
else
echo "解析失败"
fi
done
# 检测IPv4和IPv6
echo -e "\n[3] IPv4/IPv6检测:"
echo -n "IPv4: "
dig $DOMAIN A +short 2>/dev/null | head -3
echo -n "IPv6: "
dig $DOMAIN AAAA +short 2>/dev/null | head -3
# 检测CNAME记录
echo -e "\n[4] CNAME记录:"
dig $DOMAIN CNAME +short 2>/dev/null
# 检测MX记录
echo -e "\n[5] 邮件服务器(MX):"
dig $DOMAIN MX +short 2>/dev/null
# 检测NS记录
echo -e "\n[6] 域名服务器(NS):"
dig $DOMAIN NS +short 2>/dev/null
# 响应时间检测
echo -e "\n[7] 响应时间检测:"
for dns in "${DNS_SERVERS[@]}"; do
start_time=$(date +%s%N)
dig @$dns $DOMAIN +short > /dev/null 2>&1
end_time=$(date +%s%N)
duration=$(( ($end_time - $start_time) / 1000000 ))
echo "DNS $dns 响应时间: ${duration}ms"
done
echo -e "\n========================================"
echo "检测完成"
echo "========================================"
Python DNS检测脚本(功能更全面)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import dns.resolver
import dns.reversename
import socket
import argparse
from datetime import datetime
import concurrent.futures
class DNSAnalyzer:
def __init__(self, domain):
self.domain = domain
self.resolver = dns.resolver.Resolver()
self.resolver.timeout = 5
self.resolver.lifetime = 5
self.custom_dns = ['8.8.8.8', '1.1.1.1', '114.114.114.114']
def check_record(self, record_type):
"""检查特定类型的DNS记录"""
try:
answers = self.resolver.resolve(self.domain, record_type)
return [str(rdata) for rdata in answers]
except dns.resolver.NoAnswer:
return None
except dns.resolver.NXDOMAIN:
return "域名不存在"
except Exception as e:
return f"错误: {str(e)}"
def check_all_records(self):
"""检查所有类型的DNS记录"""
record_types = ['A', 'AAAA', 'CNAME', 'MX', 'NS', 'TXT', 'SOA']
results = {}
for record_type in record_types:
results[record_type] = self.check_record(record_type)
return results
def check_custom_dns(self):
"""使用自定义DNS服务器检测"""
results = {}
for dns_server in self.custom_dns:
resolver = dns.resolver.Resolver()
resolver.nameservers = [dns_server]
resolver.timeout = 3
resolver.lifetime = 3
try:
answers = resolver.resolve(self.domain, 'A')
results[dns_server] = [str(rdata) for rdata in answers]
except Exception as e:
results[dns_server] = f"失败: {str(e)}"
return results
def check_propagation(self):
"""检测DNS传播状态"""
print(f"\n[3] DNS传播检测:")
global_dns = [
('Google', '8.8.8.8'),
('Cloudflare', '1.1.1.1'),
('OpenDNS', '208.67.222.222'),
('阿里云', '223.5.5.5'),
('114DNS', '114.114.114.114'),
('腾讯云', '119.29.29.29'),
]
results = {}
for name, dns_server in global_dns:
resolver = dns.resolver.Resolver()
resolver.nameservers = [dns_server]
try:
answers = resolver.resolve(self.domain, 'A')
ips = [str(rdata) for rdata in answers]
results[f"{name}({dns_server})"] = ips
except:
results[f"{name}({dns_server})"] = "失败"
return results
def reverse_dns(self, ip):
"""反向DNS查询"""
try:
hostname = socket.gethostbyaddr(ip)
return hostname[0]
except:
return None
def generate_report(self):
"""生成检测报告"""
print("=" * 60)
print(f"DNS解析检测报告")
print(f"域名: {self.domain}")
print(f"检测时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 60)
# 基本记录检测
print("\n[1] DNS记录检测:")
records = self.check_all_records()
for record_type, value in records.items():
if value:
print(f" {record_type}记录: {value[:3]}") # 只显示前3条
else:
print(f" {record_type}记录: 无")
# 自定义DNS检测
print("\n[2] 自定义DNS服务器检测:")
custom_results = self.check_custom_dns()
for dns, result in custom_results.items():
print(f" DNS {dns}: {result}")
# DNS传播检测
propagation_results = self.check_propagation()
for location, result in propagation_results.items():
print(f" {location}: {result}")
# 反向DNS检测
print("\n[4] 反向DNS检测:")
a_records = self.check_record('A')
if a_records and isinstance(a_records, list):
for ip in a_records[:3]:
hostname = self.reverse_dns(ip)
if hostname:
print(f" {ip} -> {hostname}")
else:
print(f" {ip} -> 未找到PTR记录")
print("\n" + "=" * 60)
print("检测完成")
print("=" * 60)
def main():
parser = argparse.ArgumentParser(description='DNS解析检测工具')
parser.add_argument('domain', help='要检测的域名')
parser.add_argument('-r', '--record', help='指定记录类型检测')
parser.add_argument('-d', '--dns-server', help='指定DNS服务器')
args = parser.parse_args()
analyzer = DNSAnalyzer(args.domain)
if args.record:
# 检测指定记录类型
result = analyzer.check_record(args.record.upper())
print(f"{args.domain} 的 {args.record.upper()} 记录: {result}")
else:
# 生成完整报告
analyzer.generate_report()
if __name__ == "__main__":
main()
Windows批处理脚本
@echo off chcp 65001 >nul set DOMAIN=%~1 if "%DOMAIN%"=="" set DOMAIN=example.com echo ======================================== echo DNS解析检测报告 echo 域名: %DOMAIN% echo 检测时间: %date% %time% echo ======================================== echo. echo [1] 系统DNS解析: nslookup %DOMAIN% 2>nul echo. echo [2] 使用公共DNS检测: echo Google DNS (8.8.8.8): nslookup %DOMAIN% 8.8.8.8 2>nul echo. echo Cloudflare DNS (1.1.1.1): nslookup %DOMAIN% 1.1.1.1 2>nul echo. echo 114DNS (114.114.114.114): nslookup %DOMAIN% 114.114.114.114 2>nul echo. echo [3] 网络连通性检测: ping -n 2 %DOMAIN% | findstr "来自" echo. echo [4] 路由追踪: tracert -d -h 10 %DOMAIN% echo. echo ======================================== echo 检测完成 echo ======================================== pause
使用说明
安装依赖(Python版本)
pip install dnspython
使用方法
Shell脚本:
chmod +x dns_check.sh ./dns_check.sh example.com
Python脚本:
python dns_analyzer.py example.com python dns_analyzer.py example.com -r MX # 只检测MX记录 python dns_analyzer.py example.com -d 8.8.8.8 # 使用指定DNS
功能特点
- 多种记录类型检测: A, AAAA, CNAME, MX, NS, TXT, SOA
- 多DNS服务器对比: 同时使用多个公共DNS检测
- DNS传播检测: 检查全球DNS服务器的解析一致性
- 响应时间检测: 测量各个DNS服务器的响应速度
- 反向DNS查询: IP地址到域名的反向解析
- 网络连通性检测: Ping和路由追踪
这些脚本可以帮助你全面了解域名解析的状态和问题。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播