我想让 DNS 以循环方式工作。所以我必须将条目放入/etc/hosts
。但是,这不允许使用通配符域。
有什么方法可以在 dnsmasq 中做到这一点吗?
因此我会得到类似这样的结果:
*.test.example. 0 IN CNAME mytest.example.
mytest.example. 0 IN A 192.0.2.123
答案1
我检查了 v2.77,发现通配符 CNAME 在那里工作。你应该添加到配置中cname=*.example.com,default.example.com
,但你的 dnsmasq 应该是域的权威服务器(在本例中为 example.com)。它可以根据男人在我的例子中,我有这样的配置:
/etc/hosts
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
/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
结果:
[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