带有dnsmasq的通配符子域

dan*_*anb 36 subdomain dns dnsmasq wildcard

我有一个已经映射到的设备domain.tld.我现在想为所有子域创建一个通配符,*.domain.tld以便它们也映射到ip domain.tld.我该怎么做dnsmasq

Ekr*_*rkE 54

dnsmasq.conf文件中,添加该行

address=/.domain.tld/192.168.0.1
Run Code Online (Sandbox Code Playgroud)

但是使用你真正想要的IP作为结束位

  • 请参阅以下内容:前导点不是通配符 (5认同)
  • 谢谢.(只是为了更清楚)在dnsmasq.conf中添加它. (3认同)
  • 我通常会为每个主机创建一个单独的配置文件,并将其放在'/etc/dnsmasq.d/'目录中.这样做的好处是在维护时不必处理这样的单片文件. (3认同)
  • dnsmasq 中的通配符开箱即用...`address=/domain.tld/192.168.0.1`domain.tld 以及任何子域(例如 sub.domain.tld)将被转换为 192.168.0.1。所以在开头输入点会产生误导。当我们添加条目“address=/another.domain.tld/192.168.0.255”时,它将被转换为 192.168.0.255,但任何未定义的子域将被转换为 192.168.0.1 (2认同)

Seb*_*der 41

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

dnsmasq 忽略任何前导点,所以

address=/domain.tld/192.168.0.1
Run Code Online (Sandbox Code Playgroud)

相当于

address=/.domain.tld/192.168.0.1
Run Code Online (Sandbox Code Playgroud)

甚至

address=/......domain.tld/192.168.0.1
Run Code Online (Sandbox Code Playgroud)

截至目前(的dnsmasq v2.76),不幸的是没有办法来指定一些事情(server,address,ipset)为

  • 仅限单个域名,即没有子域名的域名
  • 仅适用于域名的子域名

您唯一能做的就是为域名及其所有子域指定一些内容,并为特定子域覆盖它,例如

address=/domain.tld/192.168.0.1
address=/sub.domain.tld/10.10.0.1
Run Code Online (Sandbox Code Playgroud)

这个单一域名的情况可以用不同的选项来处理,例如host-record,srv-record在某些情况下这可能就足够了,但肯定不是全部.例如,如果您确实只需要为单个域名使用serveripset选项,它将无法工作.