У меня есть рекурсивный DNS-сервер, который перенаправляет запросы на мои основные DNS-серверы для получения разрешения.
Возьмем пример
У меня есть следующий CNAME:
server1.example1.com. 300 IN CNAME server1.example2.com
И соответствующий А:
server1.example2.com IN A X.X.X.X
Проблема, с которой я столкнулся, заключается в том, что рекурсивный сервер возвращает только запись CNAME, когда я делаю a, dig
и не отвечает на запись A. Я проверил с помощью дампа TCP, что основные серверы определенно возвращают записи CNAME и A рекурсивному серверу, но он, в свою очередь, не возвращает их команде dig
или любому клиенту, указывающему на этот сервер. У меня есть другие рекурсивные серверы имен, и они работают нормально. Но, заметьте, это происходит только для кросс-доменных CNAMES
bash-4.1# dig @recurisveserver server1.example1.com.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.5 <<>> @recurisveserver server1.example1.com.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49412
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;server1.example1.com. IN A
;; ANSWER SECTION:
server1.example1.com. 300 IN CNAME server1.example2.com.
;; Query time: 0 msec
;; SERVER: 10.73.241.88#53(10.73.241.88)
;; WHEN: Mon Mar 5 15:52:31 2018
;; MSG SIZE rcvd: 76
Nslookup дает пустой ответ
> server1.example1.com
Server: recursiveserver
Address: x.x.x.x
Name: server1.example1.com
решение1
Мне все это кажется правильным. CNAME указывает на другое доменное имя, но клиенту нужно выполнить второй поиск, чтобы преобразовать возвращенный CNAME в запись A, поэтому вы не ожидаете, что dig или nslookup вернут IP-адрес.