具有dnsmasq的通配符子域

具有dnsmasq的通配符子域,dns,subdomain,wildcard,dnsmasq,Dns,Subdomain,Wildcard,Dnsmasq,我有一个设备已映射到域.tld。现在我想为所有子域*.domain.tld创建一个通配符,以便它们也映射到domain.tld的ip。 如何使用dnsmasq执行此操作?在dnsmasq.conf文件中,添加行 address=/.domain.tld/192.168.0.1 但是,使用您实际想要的IP作为结束位虽然公认的答案可能已经解决了作者的问题,但它具有误导性,因为它表明前导点仅与子域匹配,这是不正确的 dnsmasq任何前导点,以便 address=/domain.tld/192.16

我有一个设备已映射到
域.tld
。现在我想为所有子域
*.domain.tld
创建一个通配符,以便它们也映射到
domain.tld
的ip。
如何使用
dnsmasq
执行此操作?

dnsmasq.conf
文件中,添加行

address=/.domain.tld/192.168.0.1

但是,使用您实际想要的IP作为结束位

虽然公认的答案可能已经解决了作者的问题,但它具有误导性,因为它表明前导点仅与子域匹配,这是不正确的

dnsmasq任何前导点,以便

address=/domain.tld/192.168.0.1
相当于

address=/.domain.tld/192.168.0.1
甚至

address=/......domain.tld/192.168.0.1
不幸的是,到目前为止(dnsmasq v2.76),还没有办法为以下内容指定某些内容(
服务器
地址
ipset

  • 只有一个域名,即没有子域的域名
  • 仅适用于域名的子域
你唯一能做的就是为一个域名及其所有子域指定一些内容,并为特定子域重写它,例如

address=/domain.tld/192.168.0.1
address=/sub.domain.tld/10.10.0.1

这种仅使用域名的情况可以通过不同的选项来解决,例如
主机记录
srv记录
,这在某些情况下可能足够了,但在所有情况下肯定不够。例如,如果您确实需要对单个域名使用
server
ipset
选项,那么它将不起作用。

我通常会为每个主机创建一个单独的配置文件,并将其放在“/etc/dnsmasq.d/”目录中。这样做的好处是,在进行维护时,不必处理这样一个单一文件。@LukeA.Leber这听起来更乏味,因为找到正确的主机文件将与文件中的一行相同或更少“可维护”。然后在定位文件的基础上,您必须进行相同的编辑。更多工作。请参见下文:前导点不是通配符,但这只能为一个wilcard域添加一条记录,如何才能有多条记录?哪个版本的dnsmasq支持上述覆盖?我从华硕梅林那里得到了dnsmasq 2.76-g0007ee9,但它没有work@Hengjie我刚刚用dnsmasq官方2.76版本的构建测试了上述示例配置中的覆盖。我将这两行放在一个临时配置文件中,执行
dnsmasq-p5353-k-C/tmp/dnsmasq.conf
,并使用
dig@127.0.0.1-p5353 sub.domain.tld
进行测试。无论如何,我不记得在dnsmasq的任何特定版本中都添加了这种覆盖设置。它基本上可以与任何dnsmasq版本一起使用。是否可以执行
address=.example/*/foo
?看起来对我不起作用。@chovy你可能应该问另外一个问题。不清楚你打算做什么,什么不起作用。我可以肯定地说,address选项中的通配符是
#
而不是
*
。是否可以执行类似
address=localhost.*/127.0.0.1
?这是指任何具有localhost子域的主机都指向127.0.0.1?