Почему BIND автоматически не пробует все серверы имен, особенно когда сервер имен IPv6 недоступен?

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

И пример сценария, который может запускать служба, будет примерно таким.

#!/bin/bash
while [ true ]
do
   HOUR="$(date +%H)"
   if [ "$HOUR" -gt 23 ] || [ "$HOUR" -lt 07 ]
   then
      shutdown -h now
   fi
   sleep 60                                                                                
done 

Затем просто установите эту службу для запуска при запуске, что не позволит вам отключить ее, просто перезагрузив ее. Если вы хотите отключить его раньше времени, вы можете просто service self_discipline stop

2
12.05.2017, 16:57
1 ответ

Если у вас явно нет маршрутизации IPv6, это мудрое решение деактивировать его в любом демоне, который его попросит; поскольку с этим нередко возникают проблемы, отчасти также потому, что IPv6 имеет приоритет над IPv4, когда речь идет о DNS-именах, которые одновременно имеют представление как IPv4, так и IPv6.

Даже не имея общедоступных IP-адресов, нередко можно увидеть демонов, пытающихся установить соединения IPv6, используя в качестве источника IPv6 Link-local адрес, и, поверьте мне, на протяжении многих лет я был свидетелем проблем с этим, по крайней мере, с электронной почтой и DNS. Сервисы.

Что еще больше беспокоит в связи с ошибками, которые вы видите в IPv6, так это то, что часто тайм-ауты срабатывают, и транзакция IPv4 может даже не состояться.

Кроме того, ничто не мешает вам снова включить поддержку IPv6 в ближайшем будущем; также я бы не стал путать вещи; наличие DNS только для IPv4 не мешает ему разрешать адреса IPv6, если в ближайшем будущем у вас не будет машины с несколькими стеками IPv4/IPv6 где-то в вашей сети.

Так что дерзайте и делайте BIND только IPv4; Я бы побежал с именем с -4; в Debian вы можете отредактировать /etc/default/bind9 и изменить его на:

OPTIONS="-u bind -4"

Я бы также удалил все адреса AAAA из db.root, например:

grep -v "AAAA" /etc/bind/db.root > /tmp/a
mv /tmp/a /etc/bind/db.root

Я бы также отредактировал /и т.д./гаи.conf и добавьте следующую строку, чтобы дать IPv4 приоритет над IPv6:

precedence ::ffff:0:0/96  100 

Я бы посоветовал также прочитать мой ответ здесь:

Первое письмо не возвращается; второе и последующие электронные письма проходят через

Что касается тайм-аутов, когда время ожидания TCP-запроса DNS истекает после x попыток, DNS RFC определяет, что тот же запрос будет повторен с использованием UDP n попыток снова.

Время ожидания ваших запросов IPv6 явно истекает, потому что он все еще пытается их выполнить, но ваша маршрутизация ни к чему не приводит.

Помимо примерно 6 попыток и тайм-аутов на запрос IPv6, вы все еще можете попасть в следующий корень IPv6; в списке корневых серверов имен есть так много корневых серверов имен, которые можно попробовать, что это может быть не так, учитывая, что в случае сбоя адреса IPv6 он автоматически повторит попытку адреса IPv4, поэтому я бы рискнул сказать, что у вас огромные временные вариации при получении полного запроса. в значительной степени ожидаемое поведение в этом сценарии.

Отказ от ответственности: это грубое поведение, я хорошо знаю поведение распознавателя, а не столько грязные детали кода BIND.

Только с помощью tcdump и dnstracer можно лучше понять, что происходит. Также может быть полезно взглянуть на named.stats.

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

Однако, ИМО, вы просто слишком много думаете и делаете много предположений.

Рекомендуемый способ — не пытаться использовать службу, о которой вы знаете, что она не реализована на вашей стороне.

Я советую запускать BIND только в режиме IPv4.

2
27.01.2020, 22:10

Теги

Похожие вопросы