The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Ошибка в BIND 9.16, приводящая к нарушению обработки TCP-соединений

06.03.2020 10:13

В опубликованной две недели назад ветке BIND 9.16.0 выявлена серьёзная ошибка, приводящая к исчерпанию лимита на число TCP-соединений. В BIND 9.16 была предложена новая сетевая подсистема, переведённая на механизм асинхронной обработки запросов на основе библиотеки libuv. Из-за ошибки в данной подсистеме счётчик активных TCP-соединений при некоторых условиях не уменьшается, что приводит к нарастающему расхождению его значения с фактическим числом соединений. Через какое-то время значение счётчика может достигнуть установленного лимита на число клиентских соединений и новые запросы по TCP перестанут приниматься (запросы по UDP продолжат обрабатываться).

В основном проблема проявляется на серверах, принимающих TCP-соединения от клиентов сразу на нескольких сетевых интерфейсах. Обновление BIND 9.16 пока не выпущено, но для устранения ошибки опубликован патч. В качестве временного решения можно установить лимит на число соединений (опция tcp-clients) в очень большое значение. Кроме BIND 9.16 проблема затрагивает экспериментальную ветку 9.15, начиная с выпуска 9.15.6, но эта ветка изначальна используется только для разработки и не ориентирована на внедрение на рабочих серверах.

  1. Главная ссылка к новости (https://www.mail-archive.com/b...)
  2. OpenNews: Выпуск DNS-сервера BIND 9.16.0
  3. OpenNews: Крупнейшие DNS-сервисы и серверы прекратят поддержку проблемных реализаций DNS
  4. OpenNews: Выпуск BIND 9.14.0, разрывающий совместимость с серверами, не отвечающими на запросы с EDNS
  5. OpenNews: ICANN призывает к повсеместному внедрению DNSSEC. Обновление BIND с устранением уязвимостей
  6. OpenNews: Инициатива DNS flag day 2020
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52490-bind
Ключевые слова: bind, dns
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (12) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:35, 06/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Зачем соединяться с BINDом по TCP, если можно по UDP?
     
     
  • 2.2, null (??), 10:41, 06/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    по UDP не всё можно просунуть
     
     
  • 3.8, Аноним (8), 16:28, 06/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вроде бы современный DNS-сервер с легкостью посылает фрагментированные пакеты любой длины. Хотя стандарт требует вписываться в 512 байт при использовании UDP.
     
     
  • 4.13, vantoo (ok), 17:11, 08/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Хотя стандарт требует вписываться в 512 байт при использовании UDP.

    508

     
  • 2.3, Аноним (3), 10:50, 06/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://www.opennet.ru/opennews/art.shtml?num=51102#dnsflag
     

  • 1.4, Аноним (4), 11:17, 06/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А ещё в нём память течёт. Пришлось вернуть 9.11.
     
     
  • 2.10, Michael Shigorin (ok), 01:00, 07/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    См. тж. версии bind на http://distrowatch.com/alt -- и патчи, вдруг да пригодятся: http://packages.altlinux.org/bind
     

  • 1.5, Gogi (??), 13:33, 06/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > ...переведённая на механизм асинхронной обработки

    ВОТ где зло!

    Настоящий инженер не будет по натуре синхронную вещь коверкать в асинхронную. Ну а если таки испортили - получите весь ворох проблем.

    Нет никакой проблемы в синхронных вещах. Ты соединился - всё, это твой канал, ты в нём работаешь. Любой прочитанный байт - твой. Все остальные сетевые прибулы - форкайтесь рядышком и сидите на своих каналах. Это же простейшая, идеальная схема!

     
     
  • 2.6, Аноним (6), 14:31, 06/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > простейшая

    Да.
    > идеальная

    Нет.

     
  • 2.9, йо ж (?), 16:55, 06/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Осталось избавиться от ненужных многопоточности и многозадачности, а на уровне железа - от мультиядерности процессоров.
     
  • 2.11, крок (?), 14:31, 07/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Унылый троль, бинд занялся проблемой 10к, которой другие занимались 20 лет назад. Форкатся на каждый чих - сами таким уг пользуйтесь!
     
  • 2.12, Ordu (ok), 10:53, 08/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Настоящий инженер не будет по натуре синхронную вещь коверкать в асинхронную.

    Сетевой ввод/вывод -- это по природе асинхронная вещь. Есть костыли, которые позволяют работать с ней как с синхронной -- fork, pthreads, юзерспейс потоки, но юзерспейс потоки почему-то непопулярны в сишечке, а fork с pthreads кладут систему, когда соединений много.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру