是否可以将通配符 CNAME 添加到 dnsmasq 中?

Wan*_*ang 4 hosts dnsmasq

我想让 DNS 以循环方式工作。所以我必须将一个条目放入/etc/hosts. 但是,这不允许通配符域。

有什么办法可以在 dnsmasq 中做到这一点吗?

所以我会得到类似的东西:

*.test.example.              0       IN      CNAME   mytest.example.
mytest.example.              0       IN      A       192.0.2.123
Run Code Online (Sandbox Code Playgroud)

Ale*_*hev 5

我检查了 v2.77 并发现通配符 CNAME 在那里工作。您应该添加到 config cname=*.example.com,default.example.com,但您的 dnsmasq 应该是域的权威服务器(在本例中为 example.com)。可以根据man进行配置。就我而言,我有这样的配置:

/etc/主机

127.0.0.1       default.example.com
127.0.0.2       default.example.com
127.0.0.3       default.example.com
127.0.0.4       default.example.com
127.0.0.5       default.example.com
Run Code Online (Sandbox Code Playgroud)

/etc/dnsmasq.conf

cname=*.example.com,default.example.com
auth-server=example.com,eth0
interface-name=example.com,eth0
auth-zone=example.com,127.0.0.0/24,eth0
Run Code Online (Sandbox Code Playgroud)

结果:

[root@centos-linux ~]# dig @127.0.0.1 *.example.com

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> @127.0.0.1 *.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6531
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;*.example.com.         IN  A

;; ANSWER SECTION:
*.example.com.      600 IN  CNAME   default.example.com.
default.example.com.    600 IN  A   127.0.0.3
default.example.com.    600 IN  A   127.0.0.4
default.example.com.    600 IN  A   127.0.0.5
default.example.com.    600 IN  A   127.0.0.2
default.example.com.    600 IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jun 05 16:28:13 MSK 2017
;; MSG SIZE  rcvd: 155

[root@centos-linux ~]# nslookup 2.example.com 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
2.example.com   canonical name = default.example.com.
Name:   default.example.com
Address: 127.0.0.5
Name:   default.example.com
Address: 127.0.0.2
Name:   default.example.com
Address: 127.0.0.3
Name:   default.example.com
Address: 127.0.0.4
Name:   default.example.com
Address: 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

  • 这是完全错误的答案。解析文字查询“*.domain.com”的 DNS 记录不是通配符记录。对于名为“*.domain.com”的单个域来说,这是一个错误的 DNS 记录 DNSmasq 文档中对此似乎存在一些混淆,正如作者在他的文档中指出的那样。语法“address=/domain.com/1.1.1.1”*确实*创建一个通配符域,但仅适用于单个 IP。FWIW 上述问题的通配符形式应该将 example.com 的*任何*子域解析为相同的地址,但事实并非如此。 (8认同)
  • 只是为了澄清上述注释因将星号格式化为斜体而丢失,此答案不会创建通配符,它​​会为文字 asterisk.example.com `*.example.com` CNAME 到 `example.com` 创建一条记录,即一点用也没有 (2认同)