dnsmasq 水平分割 DNS IPv6 和 CNAME

dnsmasq 水平分割 DNS IPv6 和 CNAME

example.com我维护一个包含子域名的域名a.example.com。公共 DNS 服务器a.example.com配置了一条CNAME foo.example.com记录,该记录又指向 AWS。在我的 LAN 之外,这一切都按预期运行。

对于双栈​​ LAN,我尝试设置 dnsmasq,以便在 LAN 内a.example.com解析为本地 IPv4 地址,而不是来自公共 DNS 的 CNAME 记录。我的 dnsmasq 配置为:

dhcp-range=10.10.10.1,10.10.10.254,24h
dhcp-option=option:router,10.10.0.1
dhcp-option=option:dns-server,10.10.0.1
dhcp-option=option:netmask,255.255.0.0

local=/lan/
domain=lan

no-resolv
server=8.8.8.8
server=4.4.4.4

dhcp-hostsfile=/opt/services/dnsmasq/lan/etc/dhcp-hosts.txt

我在运行 dnsmasq 的机器上的 /etc/hosts 中添加了以下几行:

10.10.100.100 a.example.com
2603:******** a.example.com

然而,局域网上的客户端在查询AAAA记录时a.example.com仍然会获得将它们带出局域网的 CNAME 记录。

> nslookup -debug a.example.com 10.10.0.1

Server:     10.10.0.1
Address:    10.10.0.1#53

------------
    QUESTIONS:
    a.example.com, type = A, class = IN
    ANSWERS:
    ->  a.example.com
    internet address = 10.10.100.100
    ttl = 0
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Name:   a.example.com
Address: 10.10.100.100
------------
    QUESTIONS:
    a.example.com, type = AAAA, class = IN
    ANSWERS:
    ->  foo.example.com
    canonical name = foo.example.com.
    ttl = 300
    ->  foo.example.com
    canonical name = ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com.
    ttl = 300
    AUTHORITY RECORDS:
    ->  us-west-2.compute.amazonaws.com
    origin = dns-external-master.amazon.com
    mail addr = root.amazon.com
    serial = 119290
    refresh = 600
    retry = 120
    expire = 604800
    minimum = 900
    ttl = 900
    ADDITIONAL RECORDS:
------------
a.example.com   canonical name = foo.example.com.
foo.example.com canonical name = ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com.

dnsmasq 似乎并不关心/etc/hosts文件中的 IPv6 记录,仍然将请求转发到上游,获取 CNAME 答案并将其返回给客户端。

有没有办法解决这个问题并完全抑制来自上游服务器的响应a.example.com

答案1

事实证明这是我犯的一个愚蠢的错误。

我认为在配置更改后重新启动 dnsmasq 的脚本实际上并没有重新启动它,所以我将 IPv6 条目添加到 /etc/hosts 没有任何效果。

dnsmasq 重新启动后,/etc/hosts 中的 AAAA 记录将按预期返回。

案件结案。

相关内容