## 实现计划 ### 1. 配置文件修改 * **修改`/root/dns/config/config.go`**: * 在`DNSConfig`结构体中添加`PrefixDomain []string`字段,用于支持search domain功能 * 在`LoadConfig`函数中添加`prefixDomain`的默认值处理 ### 2. DNS请求处理逻辑修改 * **修改`/root/dns/dns/server.go`中的`forwardDNSRequestWithCache`函数**: * 强化domainSpecificDNS逻辑,确保当域名匹配时,只使用指定的DNS服务器 * 移除向DNSSEC专用服务器发送请求的逻辑,当域名匹配domainSpecificDNS时 * 确保匹配域名的DNS查询结果不会被其他DNS服务器的响应覆盖 * **修改`/root/dns/dns/server.go`中的`handleDNSRequest`函数**: * 实现search domain功能,当直接查询失败时,尝试添加prefixDomain中指定的域名前缀 * 按照/etc/resolv.conf中的search domain逻辑处理查询请求 ### 3. 配置文件示例更新 * **更新配置文件示例**: * 添加`prefixDomain`配置项示例 * 说明search domain功能的使用方法 ### 4. 测试验证 * 测试domainSpecificDNS强制使用功能,确保匹配的域名只使用指定的DNS服务器 * 测试search domain功能,确保能够正确处理带前缀的域名查询 * 测试不同配置组合下的功能正确性 ## 预期效果 1. 当域名匹配domainSpecificDNS配置时,无论DNSSEC是否启用,只使用指定的DNS服务器 2. 支持search domain功能,能够自动尝试添加配置的域名前缀 3. 配置简单直观,与/etc/resolv.conf的search domain行兼容 ## 实现要点 * 确保domainSpecificDNS配置的优先级最高 * 实现高效的search domain查询逻辑,避免不必要的网络请求 * 保持代码的可读性和可维护性 * 确保与现有功能的兼容性