Jump to content

Recommended Posts

Posted

Всем добра!

Может быть кто-либо сталкивался с такой ситуацией. Был мной установлен 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 и никаких проблем подобно описанной выше, не было.

Posted

ну есть предположение что где-то dnsdist закешировал пустую запись (NX) как раз из-за какого то корявого сервера-апстрима (яндекс там и тд), и отдал роутеру его - роутер у себя тоже NX закешировал - получается и роутер в кеше держит у себя NX пустую запись и DNSDIST, когда у DNSDIST прошел ttl, то он снова закешировал - уже запись с данными, но у роутера еще хранится пустая запись. Как решить это говно хз :) по идее вырубить корявый апстрим сервер

Posted

только недавно с этим гов тплинком бодался, тоже повалился DNS массово у клиентов, все на тплинках, оказалось два момента - первый, несмотря на прописывание двух ДНСов в настройках, тплинк по факту умеет работать только с одним, если он протух... пресловутый 8.8.8.8, всё, абонент сосёт

и второй момент, хз, откуда, но... независимо от того что прописано на интерфейсе в ДНСах, роутер ещё может отдавать другие ДНСы из настроек DHCP, и там оказался какой то левак из подсети 64.что.то.там

Posted
18 hours ago, jffulcrum said:

Только сейчас посмотрел, что Mercusys - это саббренд Tp-Link

Когда выбирал себе WiFi6 железку домой то меркурисис показался менее качественным в инженерном плане.

Насчёт подсанкционности - я бы не сказал, продают так же везде.

Posted

Я склоняюсь к тому мнению, что слишком длинный пакет ответа 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 я такого не нашел.

Posted
12 hours ago, S.Sokolov said:

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

Так вы как админ должны просто смигрировать на правильный софт :)

Я не вижу профита от DNSDist в сравнении с Unbound.

Posted

Профит, единственный, в том, что в DNSDist "умеет" отсылать копию DNS-запроса на серверы НСДИ - 195.208.4.1. делается это одной командой в конфигурационном файле. Теоретически получается, что и овцы целы и волки сыты. Переходить на серверы НСДИ, конечно же, сумасшествие, они работают ужасно. Но директивы Роскомнадзора никто не отменял и рано или поздно перейти придется.

Posted
11 минут назад, S.Sokolov сказал:

Переходить на серверы НСДИ, конечно же, сумасшествие, они работают ужасно

А в чём ужас? Нормально работают (по крайней мере 6.1 и 7.1), проблем за всё время -- единицы.

 

Мы клиентам выдаём два dnsdist (без кэширования), за ними unbound и bind

Posted
1 час назад, S.Sokolov сказал:

Переходить на серверы НСДИ, конечно же, сумасшествие, они работают ужасно.

Да не сказал бы.

Может быть поначалу были перебои в их работе, но сейчас работают не хуже других.

Вот графики smokeping за сутки:

dns_ping.thumb.jpg.863bc2e0a4d701460173e83829fa25dc.jpg

Posted
9 hours ago, S.Sokolov said:

Профит, единственный, в том, что в DNSDist "умеет" отсылать копию DNS-запроса на серверы НСДИ - 195.208.4.1. делается это одной командой в конфигурационном файле.

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

Posted
В 31.10.2023 в 22:50, Ivan_83 сказал:

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

Шото типа -j TEE?

Posted
Цитата

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

Posted
В 05.11.2023 в 13:41, myth сказал:

И такое убожество выдавать клиентам как основной DNS желания что-то не возникает

Настройте свой сервер по схеме с 6.1 и 7.1, всё стабильно и трюки никакие не нужны, трафик на РКН минимальный

  • 2 weeks later...
Posted

Вообще клиентов форвардить на публичные dns  плохая практика, там не исключены  ограничения запросов с одного айпишника.

Лучше поднимите свои рекурсивные сервера и балансите на них

  • 10 months later...
Posted
В 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.
Как разорвать этот порочный круг?

Posted
Quote

Клиент принес роутер Mercusys MR50G с симптомами - пропал wifi, просто не видно настроенные на роутере сетки ни 2.4, ни 5 ГГц.

Зашел в настройки - всё на месте, через ЛАН по проводу всё работает нормально.

Сбросил к заводским настройкам, при входе на 192.168.1.1 попадаю на страницу, на которой сказано, что эта страница появляется в случае проблем с firmware. Тут же предлагается обновить ПО, указав файл с прошивкой. Беру последнюю прошивку с официального сайта меркурисиса, распаковываю, скармливаю ее роутеру через вышеописанную форму, роутер уходит в перезагрузку и... на этом всё. Даже по dhcp с lan-порта адреса на ноут я не получаю.
Если выключить питание роутера, зажать reset и включить питание, то по dhcp я адрес на ноут с lan-а получаю, но все повторяется по кругу - при входе на 192.168.1.1 попадаю на страницу, на которой сказано, что эта страница появляется в случае проблем с firmware.
Как разорвать этот порочный круг?

Может какие-то проблемы с флешем у роутера. Причём тут именно эта ветка?

Posted
13 hours ago, Andrei said:

Клиент принес роутер Mercusys MR50G с симптомами - пропал wifi, просто не видно настроенные на роутере сетки ни 2.4, ни 5 ГГц.

Поищите/поспрашивайте тут: https://4pda.to/forum/index.php?showtopic=1012494&st=100

а отправить клиента с роутером в гарантийку не вариант?

Posted
6 часов назад, Ivan_83 сказал:

Поищите/поспрашивайте тут

Там я написал, молчат.

6 часов назад, Ivan_83 сказал:

отправить клиента с роутером в гарантийку не вариант?

Он уже купил у нас другой роутер 🙂. Просто хочу реанимировать старый.

  • 4 months later...
Posted

"Я не вижу профита от 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, кривой работы ТСПУ, РКН и прочего.

Posted
15 минут назад, tux-tm сказал:

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

Заметно когда внимательно наблюдаешь. Если пара и более, внезапно, не успев выйти по проверке, повиснут, но не все из одного пула, он же ответит ошибкой? т.к. не умеет, например как dnsmasq, пересылать всем.

Posted

 

Цитата

Заметно когда внимательно наблюдаешь. Если пара и более, внезапно, не успев выйти по проверке, повиснут, но не все из одного пула, он же ответит ошибкой? т.к. не умеет, например как 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-сервер, предназначенный для обеспечения доменными именами и связанными с ними сервисами небольших сетей"

Posted
46 минут назад, tux-tm сказал:

что именно имеется ввиду под "пересылать всем"?

чтобы проходил по всему пулу с каждым запросом, отвечал негативно только если все рекурсоры не ответили

 

1 час назад, tux-tm сказал:

А dnsmasq - это разве балансировщик с пулом рекурсоров?

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

его задача не балансировать, а отдавать максимально быстрый ответ

 

для большой сети, возможно, dnsdist неплохой вариант, есть очень интересные возможности и скрытые загвоздки, которые замучаешься решать ), но в малых с ним больше проблем, среднее время ответа получается больше чем у dnsmasq и жрёт память и cpu минимум в разы больше

Posted
Цитата

"чтобы проходил по всему пулу с каждым запросом, отвечал негативно только если все рекурсоры не ответили"

Зачем умножать нагрузку и задержки в разы??? 
Балансировщику достаточно получить ответ от любого - первый не ответил, зато второй ответил и дальше нет смысла спрашивать "все 6 шт например".

 

Цитата

среднее время ответа получается больше чем у dnsmasq и жрёт память и cpu минимум в разы больше

А вы на нем кеширование точно включали?
Без кеширования (в дефолте не включено) - будет и тормознее и загрузка больше.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.