Назад | Перейти на главную страницу

Разрешение записи CNAME

Я хотел бы понять, как работает процесс разрешения записи CNAME. Допустим, у меня есть запись на DNS-сервере NS1

proxy.example.com IN CNAME proxy.example1.com

NS1 не является авторитетным для example1.com. На сервере NS2 есть запись

proxy.example1.com IN A 1.2.3.4

proxy.example1.com разрешается только из клиентской сети, а не из сети, в которой расположен NS1.

Если клиент просит proxy.example.com, будет ли сервер NS1 пытаться разрешить всю цепочку от имени клиента или он вернет имя proxy.example1.com? И если он попытается разрешить всю цепочку, что произойдет, если он потерпит неудачу, потому что NS2 недоступен из NS1? Какой ответ он отправит клиенту?

Спасибо.

Нет, авторитетный сервер будет отвечать только теми данными, которые у него есть.
Вместо этого ожидается, что сервер распознавания скроет конечный результат в случае такого межзонального псевдонима.

В вопросе не подробно описываются какие-либо странности в настройке DNS (кроме странного отсутствия связи, но это, вероятно, не имеет отношения к делу), поэтому я просто опишу, как обычно предполагается, что все будет работать:

                                                    ____________________
                                                   |                    |
                                            +----->| a.root-servers.net |
                                            |      | zone: .            |
                                            |      |____________________|
                                            |      
                                            |       ____________________
                                            |      |                    |
                                            +----->| a.gtld-servers.net |
 ______________________       __________    |      | zone: com          |
|                      |     |          |   |      |____________________|
| Client/stub resolver |<--->| Resolver |<--+      
|______________________|     |__________|   |       ____________________
                                            |      |                    |
                                            +----->| "NS1"              |
                                            |      | zone: example.com  |
                                            |      |____________________|
                                            |      
                                            |       ____________________
                                            |      |                    |
                                            +----->| "NS2"              |
                                                   | zone: example1.com |
                                                   |____________________|

Ваш сценарий (без кеширования, для простоты):

  1. Клиент запрашивает у распознавателя proxy.example.com. IN A
  2. Резолвер спрашивает a.root-servers.net для proxy.example.com. IN A
    • он получает реферальный ответ для com (ссылаясь на a.gtld-servers.net)
  3. Резолвер спрашивает a.gtld-servers.net для proxy.example.com. IN A
    • он получает реферальный ответ для example.com (ссылаясь на "NS1")
  4. Резолвер спрашивает "NS1" для proxy.example.com IN A
    • он получает ответ proxy.example.com. IN CNAME proxy.example1.com.
  5. Резолвер спрашивает a.root-servers.net для proxy.example1.com. IN A
    • он получает реферальный ответ для com (ссылаясь на a.gtld-servers.net)
  6. Резолвер спрашивает a.gtld-servers.net для proxy.example1.com. IN A
    • он получает реферальный ответ для example1.com (ссылаясь на "NS2")
  7. Резолвер спрашивает "NS2" для proxy.example1.com. IN A
    • он получает ответ proxy.example1.com. IN A 1.2.3.4
  8. Решатель наконец отвечает клиенту
    • он отправляет ответ, который объединяет необходимые данные из разных источников:
      • proxy.example.com. IN CNAME proxy.example1.com.
      • proxy.example1.com. IN A 1.2.3.4
  9. Клиент может видеть определение псевдонима, а также запрошенную запись по каноническому имени (которое фактически используется).