1.7 KiB
1.7 KiB
实现计划
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功能,确保能够正确处理带前缀的域名查询
- 测试不同配置组合下的功能正确性
预期效果
- 当域名匹配domainSpecificDNS配置时,无论DNSSEC是否启用,只使用指定的DNS服务器
- 支持search domain功能,能够自动尝试添加配置的域名前缀
- 配置简单直观,与/etc/resolv.conf的search domain行兼容
实现要点
- 确保domainSpecificDNS配置的优先级最高
- 实现高效的search domain查询逻辑,避免不必要的网络请求
- 保持代码的可读性和可维护性
- 确保与现有功能的兼容性