S.Sokolov Posted October 19, 2023 Posted October 19, 2023 Всем добра! Может быть кто-либо сталкивался с такой ситуацией. Был мной установлен DNSDist для работы с несколькими внешними ДНС-серверами (4.2.2.1(2), 8.8.4.4, 77.88.8.1, SkyDNS и собственный на Bind9). Соответственно адрес самого DNSDist отдается клиентам, как обычный ДНС. До недавнего времени все было хорошо. Но сегодня с 2 ночи начались проблемы у некоторых клиентов - они половину сайтов открыть не могут. Начал разбираться на примере одного из клиентов. Обычный роутер Меркусис (а также в таком замечены Xiaomi) получает при установке сессии PPPoE все настройки, ДНС в том числе. Своим хостам он отдает по DHCP адреса и свой же адрес внутренний в качестве ДНС. Через каких то 10-15 минут после начала работы перестают открываться сайты типа mail.ru, Ютуб и многие другие. Если на ноутбуке, подключенном к этому роутеру, прописать те же самые ДНС, что роутер получил от БРАСа, на ноуте все начинает прекрасно работать. Если ДНСы убрать и снова поставить на получение ноутом всех настроек по DHCP, mail.ru тут же исчезает. Если при этом перезагрузить DNSDist, то на 10 минут работоспособность ноута восстанавливается. Какая то непонятная мне чертовня. Если кто сталкивался с таким, может подкинете идею, куда копать, почему при насильно прописанных ДНС на ноуте все работает, а если получать настройки с клиентского роутера, то начинаются "забЕги мозга" у оконечного хоста? Для наглядности приведу конфиг dnsdist.conf, там немного. setLocal("7x.xx.3x.47", {reusePort=true}) setACL({"7x.xx.3x.0/24", "172.16.128.0/24"}) newServer({address="4.2.2.1", name="Level3.DNS1", qps=10000}) newServer({address="4.2.2.2", name="Level3.DNS2", qps=10000}) newServer({address="8.8.4.4", name="Google.DNS2", qps=10000}) newServer({address="193.58.251.251", name="SkyDNS.DNS1", qps=10000}) newServer({address="77.88.8.1", name="YandexDNS.DNS1", qps=10000}) pc = newPacketCache(300000, {maxTTL=86400, minTTL=0, temporaryFailureTTL=60, staleTTL=60, dontAge=false}) getPool(""):setCache(pc) Ну пояснять, что сие чудо было мной установлено мной только из-за Роскомнадзора, думаю, не надо. Ранее все клиенты сидели на не особливо замудренной в плане конфига парочке собственных DNS-серверов Bind9 и никаких проблем подобно описанной выше, не было. Вставить ник Quote
init_ Posted October 20, 2023 Posted October 20, 2023 ну есть предположение что где-то dnsdist закешировал пустую запись (NX) как раз из-за какого то корявого сервера-апстрима (яндекс там и тд), и отдал роутеру его - роутер у себя тоже NX закешировал - получается и роутер в кеше держит у себя NX пустую запись и DNSDIST, когда у DNSDIST прошел ttl, то он снова закешировал - уже запись с данными, но у роутера еще хранится пустая запись. Как решить это говно хз :) по идее вырубить корявый апстрим сервер Вставить ник Quote
jffulcrum Posted October 20, 2023 Posted October 20, 2023 Только сейчас посмотрел, что Mercusys - это саббренд Tp-Link для всяких подсанкционных. А значит железо одно, и софт тот же жопорук пишет, стало быть: Вставить ник Quote
sheft Posted October 20, 2023 Posted October 20, 2023 только недавно с этим гов тплинком бодался, тоже повалился DNS массово у клиентов, все на тплинках, оказалось два момента - первый, несмотря на прописывание двух ДНСов в настройках, тплинк по факту умеет работать только с одним, если он протух... пресловутый 8.8.8.8, всё, абонент сосёт и второй момент, хз, откуда, но... независимо от того что прописано на интерфейсе в ДНСах, роутер ещё может отдавать другие ДНСы из настроек DHCP, и там оказался какой то левак из подсети 64.что.то.там Вставить ник Quote
Ivan_83 Posted October 21, 2023 Posted October 21, 2023 18 hours ago, jffulcrum said: Только сейчас посмотрел, что Mercusys - это саббренд Tp-Link Когда выбирал себе WiFi6 железку домой то меркурисис показался менее качественным в инженерном плане. Насчёт подсанкционности - я бы не сказал, продают так же везде. Вставить ник Quote
S.Sokolov Posted October 23, 2023 Author Posted October 23, 2023 Я склоняюсь к тому мнению, что слишком длинный пакет ответа udp от ДНС приходит фрагментированным, состоящим из 2 частей. И вот ТП-Линк и Меркусис их не умеют "склеивать", чтобы получить весь список хостов (если там много адресов в round-robin). В итоге начинается полный швах. На примере mail.ru у нормально не работающих Меркусисов смотрел ответ от ДНС и видел там только "обрезыш" такого вида: ╤хЁтхЁ: winsrv.d-telekom.home Address: 172.16.128.50 Не заслуживающий доверия ответ: ╚ь : mail.ru Addresses: 2a00:1148:db00:0:b0b0::1 То есть только IPv6-адрес. Остаток в виде: 217.69.139.200 94.100.180.200 217.69.139.202 94.100.180.201 просто отсутствовал. Проблему решили в данный момент "в лоб". Прописали всем абонентам через биллинг 2 адреса - 77.88.8.1 и 4.2.2.2 Все заработало как надо. Однако понимаю, что если я прав по поводу фрагментированного полного пакета udp, то мы просто оттянули момент наступления следующего коллапса. В программировании не силен, чтобы дотюнить тот же DNSDist, чтобы тот присылал как можно более урезанную версию DNS-ответов. В пакетах Bind9 и Unbound такие опции есть, насколько я читал. А вот в DNSDist я такого не нашел. Вставить ник Quote
Ivan_83 Posted October 23, 2023 Posted October 23, 2023 12 hours ago, S.Sokolov said: В программировании не силен, чтобы дотюнить тот же DNSDist, чтобы тот присылал как можно более урезанную версию DNS-ответов. Так вы как админ должны просто смигрировать на правильный софт :) Я не вижу профита от DNSDist в сравнении с Unbound. Вставить ник Quote
S.Sokolov Posted October 31, 2023 Author Posted October 31, 2023 Профит, единственный, в том, что в DNSDist "умеет" отсылать копию DNS-запроса на серверы НСДИ - 195.208.4.1. делается это одной командой в конфигурационном файле. Теоретически получается, что и овцы целы и волки сыты. Переходить на серверы НСДИ, конечно же, сумасшествие, они работают ужасно. Но директивы Роскомнадзора никто не отменял и рано или поздно перейти придется. Вставить ник Quote
ixi Posted October 31, 2023 Posted October 31, 2023 11 минут назад, S.Sokolov сказал: Переходить на серверы НСДИ, конечно же, сумасшествие, они работают ужасно А в чём ужас? Нормально работают (по крайней мере 6.1 и 7.1), проблем за всё время -- единицы. Мы клиентам выдаём два dnsdist (без кэширования), за ними unbound и bind Вставить ник Quote
alibek Posted October 31, 2023 Posted October 31, 2023 1 час назад, S.Sokolov сказал: Переходить на серверы НСДИ, конечно же, сумасшествие, они работают ужасно. Да не сказал бы. Может быть поначалу были перебои в их работе, но сейчас работают не хуже других. Вот графики smokeping за сутки: Вставить ник Quote
Ivan_83 Posted October 31, 2023 Posted October 31, 2023 9 hours ago, S.Sokolov said: Профит, единственный, в том, что в DNSDist "умеет" отсылать копию DNS-запроса на серверы НСДИ - 195.208.4.1. делается это одной командой в конфигурационном файле. Вам бы почитать документацию к фаерволам, там тоже копия пакета легко засылается на любые адреса. Вставить ник Quote
pppoetest Posted November 2, 2023 Posted November 2, 2023 В 31.10.2023 в 22:50, Ivan_83 сказал: Вам бы почитать документацию к фаерволам, там тоже копия пакета легко засылается на любые адреса. Шото типа -j TEE? Вставить ник Quote
Ivan_83 Posted November 2, 2023 Posted November 2, 2023 13 hours ago, pppoetest said: Шото типа -j TEE? Наверное, в PF это dup-to. Может и в свичах можно найти такой функционал в ACL. Вставить ник Quote
myth Posted November 5, 2023 Posted November 5, 2023 Цитата DNSDist "умеет" отсылать копию DNS-запроса на серверы НСДИ dnsmasq тоже умеет Цитата но сейчас работают не хуже других может где-то, когда-то и работают. Но процентов 10-15 запросов оканчиваются ничем, согласно статиcтике dnsmasq. И такое убожество выдавать клиентам как основной DNS желания что-то не возникает dig +short chaos txt servers.bind "1.1.1.1#53 590550448 0" "8.8.4.4#53 590550448 0" "8.8.8.8#53 590550448 0" "xxx.xxx.5.1#53 590550448 0" "xxx.xxx.4.1#53 590550448 22320091" No comment, imho Вставить ник Quote
ixi Posted November 7, 2023 Posted November 7, 2023 В 05.11.2023 в 13:41, myth сказал: И такое убожество выдавать клиентам как основной DNS желания что-то не возникает Настройте свой сервер по схеме с 6.1 и 7.1, всё стабильно и трюки никакие не нужны, трафик на РКН минимальный Вставить ник Quote
swsn Posted November 15, 2023 Posted November 15, 2023 Вообще клиентов форвардить на публичные dns плохая практика, там не исключены ограничения запросов с одного айпишника. Лучше поднимите свои рекурсивные сервера и балансите на них Вставить ник Quote
Andrei Posted October 5, 2024 Posted October 5, 2024 В 21.10.2023 в 09:39, Ivan_83 сказал: Когда выбирал себе WiFi6 железку домой то меркурисис показался менее качественным в инженерном плане. Насчёт подсанкционности - я бы не сказал, продают так же везде. Клиент принес роутер Mercusys MR50G с симптомами - пропал wifi, просто не видно настроенные на роутере сетки ни 2.4, ни 5 ГГц. Зашел в настройки - всё на месте, через ЛАН по проводу всё работает нормально. Сбросил к заводским настройкам, при входе на 192.168.1.1 попадаю на страницу, на которой сказано, что эта страница появляется в случае проблем с firmware. Тут же предлагается обновить ПО, указав файл с прошивкой. Беру последнюю прошивку с официального сайта меркурисиса, распаковываю, скармливаю ее роутеру через вышеописанную форму, роутер уходит в перезагрузку и... на этом всё. Даже по dhcp с lan-порта адреса на ноут я не получаю. Если выключить питание роутера, зажать reset и включить питание, то по dhcp я адрес на ноут с lan-а получаю, но все повторяется по кругу - при входе на 192.168.1.1 попадаю на страницу, на которой сказано, что эта страница появляется в случае проблем с firmware. Как разорвать этот порочный круг? Вставить ник Quote
rm_ Posted October 5, 2024 Posted October 5, 2024 Quote Клиент принес роутер Mercusys MR50G с симптомами - пропал wifi, просто не видно настроенные на роутере сетки ни 2.4, ни 5 ГГц. Зашел в настройки - всё на месте, через ЛАН по проводу всё работает нормально. Сбросил к заводским настройкам, при входе на 192.168.1.1 попадаю на страницу, на которой сказано, что эта страница появляется в случае проблем с firmware. Тут же предлагается обновить ПО, указав файл с прошивкой. Беру последнюю прошивку с официального сайта меркурисиса, распаковываю, скармливаю ее роутеру через вышеописанную форму, роутер уходит в перезагрузку и... на этом всё. Даже по dhcp с lan-порта адреса на ноут я не получаю. Если выключить питание роутера, зажать reset и включить питание, то по dhcp я адрес на ноут с lan-а получаю, но все повторяется по кругу - при входе на 192.168.1.1 попадаю на страницу, на которой сказано, что эта страница появляется в случае проблем с firmware. Как разорвать этот порочный круг? Может какие-то проблемы с флешем у роутера. Причём тут именно эта ветка? Вставить ник Quote
Ivan_83 Posted October 6, 2024 Posted October 6, 2024 13 hours ago, Andrei said: Клиент принес роутер Mercusys MR50G с симптомами - пропал wifi, просто не видно настроенные на роутере сетки ни 2.4, ни 5 ГГц. Поищите/поспрашивайте тут: https://4pda.to/forum/index.php?showtopic=1012494&st=100 а отправить клиента с роутером в гарантийку не вариант? Вставить ник Quote
Andrei Posted October 6, 2024 Posted October 6, 2024 6 часов назад, Ivan_83 сказал: Поищите/поспрашивайте тут Там я написал, молчат. 6 часов назад, Ivan_83 сказал: отправить клиента с роутером в гарантийку не вариант? Он уже купил у нас другой роутер 🙂. Просто хочу реанимировать старый. Вставить ник Quote
tux-tm Posted February 20, 2025 Posted February 20, 2025 "Я не вижу профита от DNSDist в сравнении с Unbound." Ну не знаю почему, профит там очень хороший если использовать по назначению. Потому что Unbound - комбайн, в данном случае рассматривается это как рекурсор (вероятно кеширующий), так? А DNSDist - это балансировшик рекурсоров, и причем лучше его использовать тоже с кешем, хоть и не большим. DNSDist - это буфер-пушка по производительности и обеспечение непрерывной работы DNS-резолвинга в сети. Ставим парами DNSDist с резервированием по VRRP, т.е. у них общий мигрирующий IP и это дает свой профит, например с теми же роутерами "с памятью на один DNS адрес" Каждый из рекурсоров (опечатался имелся ввиду балансировщик DNSDist) обращается минимум к 2-м рекурсорам (у нас их больше), неважно к каким - PowerDNS Recursor (мой вариант), Unbound(тоже пробовал, но после очередного обновления периодически начал подвисать), другие на вкус. Можете публичные DNS указывать но при этом на балансировщике кэш обязателен (в дефолтном конфиге его нет). Все рекурсоры и балансировщики территориально разнесенные, а не на одной площадк - это прибавляет выживаемости в целом. В итоге можно не бояться повисаний отдельных рекурсоров, вы можете выводить из работы любой из рекурсоров и любой из балансировщиков - никто этого не заметит вообще. NS-сервис становится непрерывным даже при обновлении ПО, перезагрузках и т.п. так как они не одновременно делаются. А т.к. балансировщик сам ничего не резолвит рекурсивно, а лишь передает эту работу рекурсорам и после кеширует полученный от них результат - его заDDoS-сить очень сложно, он из памяти выплевывает почти полностью сформированный закешированный пакет в большинстве случаев. Ещё там можно очень гибко настраивать пулы рекурсоров, пулы клиентов и т.п. и по разному отправлять запросы по составленным условиям в ACL. С 2018 примерно года DNSDist используем - никогда не подвисал и не подводил. Под 100к один активный рекурсор обслуживает не напрягаясь. от 100к сессий абонентов обрабатывается примерно 20-30к запросов в секунду, загрузка CPU (4 ядра далеко не топового Интела в виртуалке) - около 40%. Подобного как у автора топика - ни разу не видели. Поскольку IP-адрес выданного абонам DNS никогда не умирает за счет VRRP - нет проблем с роутерами, использующими только один из выданных DNS. В целом с DNS бывают вопросы редко и в основном точечные, и как выясняется каждый раз - по причинам не имеющим отношения к балансировщику. Обычно из-за рукожопов-владельцев зон DNS, кривой работы ТСПУ, РКН и прочего. Вставить ник Quote
yandrey Posted February 20, 2025 Posted February 20, 2025 15 минут назад, tux-tm сказал: В итоге можно не бояться повисаний отдельных рекурсоров, вы можете выводить из работы любой из рекурсоров и любой из балансировщиков - никто этого не заметит вообще. Заметно когда внимательно наблюдаешь. Если пара и более, внезапно, не успев выйти по проверке, повиснут, но не все из одного пула, он же ответит ошибкой? т.к. не умеет, например как dnsmasq, пересылать всем. Вставить ник Quote
tux-tm Posted February 21, 2025 Posted February 21, 2025 Цитата Заметно когда внимательно наблюдаешь. Если пара и более, внезапно, не успев выйти по проверке, повиснут, но не все из одного пула, он же ответит ошибкой? т.к. не умеет, например как dnsmasq, пересылать всем. Не совсем понимаю что именно имеется ввиду под "пересылать всем"? И что именно внимательно наблюдать? В переходных процессах с недоступностью/переключением сервисов, как например если IP резервируется по VRRP (в моменты "переезда" виртуального IP, если предположим мастер-сервер ушел в перезагрузку) какие-то запросы от абонентов естественно могут быть и не обработаны. Допустим ответа не поступило, но ведь хосты умеют перезапросить, это не смертельно и бывает раз в несколько месяцев. Задача ведь в том чтобы максимально зарезервировать сервис на случай локальных форс-мажоров (иногда и подсети могут отвалиться и железо не вечное и не безгрешное на нем ПО) и для возможности безболезненного вывода частей сервиса на обслуживание. В большой сети какой-то подобный переходной процесс с 0,1% необработанных запросов в течение пары секунд, который происходит раз в пару месяцев (допустим перезапускали виртуалку с рекурсором) - это настолько несущественный фактор, что реально его никто не заметит, тем более что одновременно на обеих выданных адресах DNS такое не происходит (ситуации полного фолрс-мажора не рассматриваем) А вообще кто какое решение использует в качестве DNS-балансировщика? Прям интересно стало. С 2017 года примерно искал софт для DNS, который можно из коробки использовать под IPv6 и плюсом чтобы автоматизировать рутинные операции с изменениями записей в зонах DNS. (а не лезть каждый раз и ручками править файлики и потом указывать процессу демона "перечитай конфиг") И на тот момент решения от PowerDNS устроило более чем на 100%. Там есть и рекурсор и авторитетный DNS и балансировщик. Есть еще и WEB-интерфейс PowerAdmin (отдельное решение) для работы с записями зон. Ну и в принципе можно хоть пачкой записи менять скриптами - это же просто записи в БД, всё на лету делается. Все эти решения на базе PowerDNS из коробки прекрасно работают с дуалстэком (IPv4 + IPv6). Для нас это важно т.к. по факту 25-30% абонентов реально используют дуалстэк в нашей сети. В этом плане из ШПД-провайдеров в РФ - мы по факту лидируем, больше процент только у сотовиков и хостингов по понятным причинам. p.s. А dnsmasq - это разве балансировщик с пулом рекурсоров? Я просто сам не использовал, но по той же википедии - это какой-то комбайн "всё в одном" для небольших сетей. "Dnsmasq — легковесный и быстроконфигурируемый DNS-, DHCP- и TFTP-сервер, предназначенный для обеспечения доменными именами и связанными с ними сервисами небольших сетей" Вставить ник Quote
yandrey Posted February 21, 2025 Posted February 21, 2025 46 минут назад, tux-tm сказал: что именно имеется ввиду под "пересылать всем"? чтобы проходил по всему пулу с каждым запросом, отвечал негативно только если все рекурсоры не ответили 1 час назад, tux-tm сказал: А dnsmasq - это разве балансировщик с пулом рекурсоров? пулов нет, можно только разделить по доменам на какие рекурсоры будет отправляться его задача не балансировать, а отдавать максимально быстрый ответ для большой сети, возможно, dnsdist неплохой вариант, есть очень интересные возможности и скрытые загвоздки, которые замучаешься решать ), но в малых с ним больше проблем, среднее время ответа получается больше чем у dnsmasq и жрёт память и cpu минимум в разы больше Вставить ник Quote
tux-tm Posted February 21, 2025 Posted February 21, 2025 Цитата "чтобы проходил по всему пулу с каждым запросом, отвечал негативно только если все рекурсоры не ответили" Зачем умножать нагрузку и задержки в разы??? Балансировщику достаточно получить ответ от любого - первый не ответил, зато второй ответил и дальше нет смысла спрашивать "все 6 шт например". Цитата среднее время ответа получается больше чем у dnsmasq и жрёт память и cpu минимум в разы больше А вы на нем кеширование точно включали? Без кеширования (в дефолте не включено) - будет и тормознее и загрузка больше. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.