У меня есть запущенный экземпляр dnsmasq, использующий опцию synth-domain. Он отлично работает с запросами A, однако возвращает NXDOMIN для запроса AAAA. Вот пример того, как воспроизвести.
Запуск dnsmasq:
dnsmasq --keep-in-foreground --synth-domain=example.com,192.168.1.0/24,ip-
Запрос:
dig ip-192-168-1-100.example.com @127.0.0.1 a
; <<>> DiG 9.11.1-P3 <<>> ip-192-168-1-100.example.com @127.0.0.1 a
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45136
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ip-192-168-1-100.example.com. IN A
;; ANSWER SECTION:
ip-192-168-1-100.example.com. 0 IN A 192.168.1.100
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 19 14:24:52 PDT 2017
;; MSG SIZE rcvd: 73
Запрос AAAA:
$ dig ip-192-168-1-100.example.com @127.0.0.1 aaaa
; <<>> DiG 9.11.1-P3 <<>> ip-192-168-1-100.example.com @127.0.0.1 aaaa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 5180
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ip-192-168-1-100.example.com. IN AAAA
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 19 14:33:45 PDT 2017
;; MSG SIZE rcvd: 57
Я хотел бы, чтобы dnsmasq возвращал пустой ответ NOERROR вместо NXDOMAIN в этой ситуации. Это возможно?
Не обошлось и без изменения самого кода dnsmasq. Вы видите правильное поведение: если преобразователь не знает ответа и является авторитетным для данного домена, как в случае с таким определенным synth-domain
построить, он обязан ответить NXDOMAIN
. Более того, это был бы неправильно сформированный ответ (без ошибок и без AN
, NS
, или AR
записи).