Unbound转发DNS查询至外部TLS解析器的配置验证方法咨询
Unbound转发DNS查询至外部TLS解析器的配置验证方法咨询
我已经把Unbound配置成了以下状态:
- 监听局域网内所有接口的域名查询请求
- 通过TLS将这些域名查询转发给外部DNS解析器
- 接收外部DNS解析器返回的域名IP地址,并返回给对应的客户端
现在我想确认这个配置是否正常工作,尤其是要搞清楚两个关键点:
- Unbound确实是通过TLS把查询请求转发给了我指定的外部DNS解析器吗?
- 返回的IP地址确实来自外部DNS解析器,而不是Unbound自己本地解析出来的?
我执行了两次dig google.com的查询操作,下面是其中一次的查询结果:
root@DNS:/etc/unbound# dig google.com A @192.168.1.50 -p 3000
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> google.com A @192.168.1.50 -p 3000
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22452
;; ...(此处省略未完整显示的内容)
验证方法分享
一、确认Unbound通过TLS转发查询
你可以用这两种实用方法来验证:
- 查看Unbound日志:先把Unbound的日志级别调得稍高一些(比如在配置文件里设置
verbosity: 2),然后查看Unbound的日志文件(通常在/var/log/unbound/目录下,或者系统的syslog里)。如果日志里出现了tls handshake、connected to <你的外部解析器IP> port 853这类内容,就说明TLS连接已经成功建立,查询请求确实是通过TLS转发的。 - 抓包验证:在Unbound服务器上用
tcpdump抓包,过滤目标端口为853(DNS over TLS的标准端口)的流量,比如执行命令:tcpdump -i any port 853 host <你的外部解析器IP>。如果能看到服务器和你指定的外部解析器之间有TLS handshake数据包,以及后续的加密DNS流量,就可以实锤是通过TLS转发的了。
二、确认IP来自外部解析器而非Unbound本地解析
这两个方法能帮你确认:
- 对比直接查询外部解析器的结果:直接用dig查询你指定的外部DNS解析器,命令类似
dig google.com A @<你的外部解析器IP> -p 853 +tls,把这个结果和你查询Unbound得到的IP地址做对比。考虑到DNS负载均衡,可能会有个别IP差异,但整体列表匹配的话,就说明Unbound是转发查询后返回的外部结果。 - 检查dig结果的标记和字段:看你当前dig结果里的
flags字段,如果没有aa(Authoritative Answer,权威回答)标记,说明Unbound返回的是非权威结果,也就是转发来的。另外,你可以加上+additional参数再执行一次查询:dig google.com A @192.168.1.50 -p 3000 +additional,看看额外部分是否包含外部解析器的NS记录,这也能辅助判断结果来源。
结合你提供的dig结果分析
从你给出的部分结果来看,status: NOERROR说明Unbound成功返回了结果,但要获取更准确的判断,你可以补全完整的dig结果:
- 对比
ANSWER SECTION里的IP和直接查询外部解析器的IP是否一致; - 查看
AUTHORITY SECTION,如果显示的是目标域名(比如google.com)的官方NS服务器,而非Unbound本地的记录,也能侧面证明结果是转发查询得到的。
备注:内容来源于stack exchange,提问作者Sun Bear
相关产品推荐
相关产品推荐

