不要自动在DNSMasq地址中包含所有子域


10

是否可以配置DNSMasq,使其仅针对该确切域的请求而不为其子域返回固定的IP地址?也就是说,我希望它解决时返回一个固定的IP example.com,但不a.example.comb.example.com等等

Answers:


9
host-record=example.com,1.2.3.4

的dnsmasq手册页说:

--host-record = <名称> [,<名称> ....] [<IPv4-地址>],[<IPv6-地址>]
将A,AAAA和PTR记录添加到DNS。这会将一个或多个名称与关联的IPv4(A)和IPv6(AAAA)记录添加到DNS中。一个名称可能出现在多个主机记录中,因此被分配了多个地址。只有第一个地址会创建一个PTR记录,将地址链接到名称。这与读取主机文件所使用的规则相同。主机记录选项被认为是在主机文件之前读取的,因此,如果其中出现的名称也出现在主机文件中,则会禁止创建PTR记录。与主机文件不同,即使扩展主机生效,名称也不会扩展。短名称和长名称可能出现在同一主机记录中,例如。 --host-record = laptop,laptop.thekelleys.org,192.168.0.1,1234 :: 100


该问题带有标记“内部dns”,其中“主机记录”适用于外部dns,也称为权威dns。
Pro Backup

请注意,如果您尝试接管Internet上的现有主机记录(例如,将其重写为lan),则如果您省略了v6地址,并且主机在Internet上具有真实的v6地址,则dnsmasq将返回被覆盖的v4地址为A,以及真实的互联网v6 AAAA记录。如果您不希望支持v6的主机不通过v6“掉线”到真实的Internet主机,请同时指定两者。我正在重写archive.ubuntu.com以指向我的本地镜像,并且只在LAN上指定了v4地址-原来它也具有v6地址,我需要确保我也在dnsmasq中进行了配置。
潜行

3

您的配置文件如何?如果您的条目以点开头,则dnsmasq将仅解析子域.

例: address=/.subdomain.pc01.domain.com/192.168.1.2

如果您有这种方式:

address=/subdomain.pc01.domain.com/192.168.1.2

它将解决asd.subdomain.pc01.domain.com

$ host asd.subdomain.pc01.domain.com
asd.subdomain.pc01.domain.com has address 192.168.1.2

有趣的是,但是如果您仔细阅读了问题,这不是OP所要求的。
jcharaoui

1

只需在运行DNSMasq的服务器上的hosts文件中为该特定域添加一个条目


那行不通;DNSMasq为输入域的所有子域返回相同的固定IP
Michael Mrozek

1

dnsmasq手册页中(对于--server,也适用于--address):

较具体的域优先于较不具体的域,因此:--server = / google.com / 1.2.3.4 --server = / www.google.com / 2.3.4.5会将针对* .google.com的查询发送到1.2。 3.4,但* www.google.com除外,它将转到2.3.4.5

因此,我唯一能看到的解决方案是为每个必要的子域添加单独的记录。显然这并不理想,但是dnsmasq目前可以提供的最好的(我可以找到)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.