Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Проблемы с DNS в сети из множества филиалов  (Прочитано 823 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Проблема, собственно, такая: есть сеть из множества филиалов. Все они связаны между собой OpenVPN туннелями и находятся в разных местах.

Каждый филиал имеет свой DNS сервер и свой внутренний домен, а так же PowerDNS recursor в качетсве основного DNS сервера. Все рекурсоры настроены так, что запросы к локальным доменам они переадресуют соответствующим DNS серверам (своему или удалённому). Всё, в общем-то, работает, за исключением одного но: с завидной регулярностью при обращении к хосту в другом филиале по имени вылезает вот такая ошибка:

getaddrinfo : Name or service not known

Её выдаёт ssh, bzr, puppet и много кто ещё в совершенно рандомных случаях. При этом ping и dig всегда резолвят имена нормально. И если сделать ping, то после этого начинает работать и то, что выдавало ошибку.

Подозреваю, что рекурсер испытывает некоторые проблемы со связью с нужным DNS сервером, а потому по какому-то тайм-ауту проиходит отбойка. Вопрос, собственно, в том, как устранить сей эффект. Т.е. как заставить рекурсор (или систему, которая вызывает getaddrinfo) ждать ответа и не вываливаться с ошибкой, если он моментально не получен.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28402
    • Просмотр профиля
Re: Проблемы с DNS в сети из множества филиалов
« Ответ #1 : 04 Февраля 2014, 22:40:49 »
Вместо переадресации настройте репликацию DNS зон.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Проблемы с DNS в сети из множества филиалов
« Ответ #2 : 04 Февраля 2014, 22:46:25 »
Хм, действительно. Правда настройка в разы сложней - у меня ж основные DNS все разные (где бинд, где Windows, где вообще ничего, а только powerdns). Но стоит попробовать.

А что, что-то сделать с таймаутами нельзя? Немного нелепо: вообще говоря DNS сервер может быть где угодно и ответ он может присылать с ощутимой задержкой - это не должно приводить к ошибкам. Стало быть и в этой ситуации если где-то что-то подкрутить, то ошибку можно будет убрать. Вот только где и что...
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28402
    • Просмотр профиля
Re: Проблемы с DNS в сети из множества филиалов
« Ответ #3 : 04 Февраля 2014, 22:59:33 »
Есть несколько уровней таймаута. У вас происходит следующее:
C(lient)>L(ocal resolver): dig <name>
L>S(server): dig <name>
...2 sec local resolver timeout...
L>C: timed out, no hosts can be reached
S>L: ip XXXX
C>L: (повторно)dig <name>
L>C: (из кеша)ip XXXX

Начните с того, что настройте репликацию там, где это возможно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Проблемы с DNS в сети из множества филиалов
« Ответ #4 : 04 Февраля 2014, 23:04:51 »
man resolv.conf упоминает об опции timeout:n

Цитировать
              timeout:n
                     sets  the  amount  of  time  the resolver will wait for a
                     response from a remote name server  before  retrying  the
                     query  via a different name server.  Measured in seconds,
                     the default is RES_TIMEOUT (currently 5, see <resolv.h>).
                     The value for this option is silently capped to 30.


Кстати, есть еще и опция

Цитировать
              attempts:n
                     sets  the  number of times the resolver will send a query
                     to its name servers before giving  up  and  returning  an
                     error   to  the  calling  application.   The  default  is
                     RES_DFLRETRY (currently 2, see  <resolv.h>).   The  value
                     for this option is silently capped to 5.

Ну и добавлю для теперешней ситуации с resolv.conf
Цитировать
There is a package called resolvconf when this package is installed among other things it adds a directiory

/etc/resolvconf/resolv.conf.d

within this directory are a number of files one of which is a file called tail.

Anything that goes into tail is appended to the resolv.conf file after it is automatically generated. So anything that goes into that tail file will persist across reboots and network restarts.
« Последнее редактирование: 04 Февраля 2014, 23:14:20 от Karl500 »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28402
    • Просмотр профиля
Re: Проблемы с DNS в сети из множества филиалов
« Ответ #5 : 05 Февраля 2014, 05:39:34 »
Karl500, ситуация несколько сложнее, чем парочка таймаутов на одной машине.
По всем филиалам не набегаешься, и таймауты всем не поменяешь. Это если их вообще поменять возможно для каждого конкретного устройства.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.046 секунд. Запросов: 25.