Wi-CAT LLC

Wireless Comprehensive Advanced Technology. Build your network now.

Wi-CAT LLC
Навигация Форума
Вы должны войти, чтобы создавать сообщения и темы.

При включенном DNS AdBlock падает Dnsmasq

При включенном DNS AdBlock падает Dnsmasq. При выключенном DNS AdBlock не падает. Прошивка MT 9.0.1. Роутер ME1. Началось сегодня ночью.

Лог:

Спойлер
Извините, только авторизованные пользователи могут видеть спойлеры.

Я в этом не особо разбираюсь, но похоже дело в строчке 44715 из файла ads.conf:

Спойлер
Извините, только авторизованные пользователи могут видеть спойлеры.

 

Если сейчас включить DNS AdBlock, то локальный DNS прокси не работает.

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..

Просмотрел списки блокировки, строка с недопустимыми символами действительно присутствует в списке https://schakal.ru/hosts/alive_hosts_mail_fb.txt .

Сообщите автору списка.

По этому списку репортим вот сюда schakal@schakal.ru.

Sadler. Зарепорти плз. Надо будет проверку чтоль какую родить дополнительную что бы dnsmasq крышу не срывало. Или придётся свой сервис разворачивать для компановки списков. Но явно не сейчас.

Цитата: Sadler от 07/03/2020, 14:47

Просмотрел списки блокировки, строка с недопустимыми символами действительно присутствует в списке https://schakal.ru/hosts/alive_hosts_mail_fb.txt .

Спасибо, я проверю и уберу. Ночной список будет без неё.

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

Кстати можем в подарок заслать роутер какой для проверки на живую. =)

Смысл в том что полноценные sanity checks на роутере жирных списков ну очень не быстрое занятие. Потому списки должны быть корректны по определению.

Ну и пользователь сидящий без инета пол дня это (а потом ещё лист обновляется раз в сутки) это бяда.

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

Баг подтверждаю, скрипт исправлен, в течение пары часов файл будет обновлён (там довольно долго вычленяются "мёртвые" хосты). Спасибо всем за оперативный анализ.

Ок. Роутер-то куда подарочный заслать? Или ну его?

Sadler

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

Решил, что мёртвые хосты подождут, тем более что на упомянутый список они не влияют. Файл исправлен, можно перекачать. Больше не повторится. Сбой был в как раз в строке удаления из результирующего общего списка тех хостов, которые пользователи сообщили как лишние.

Народ, проверьте плз и отпишитесь.

Ну и немного подробностей по этому хосту задним числом. Если файл открыть в unicode-редакторе, то видно, что этот хост на самом деле представляет собой вот что:

secret.ɢoogle.com

то есть ɢ является unicode-символом откуда-то из дебрей таблицы. В список он попал из списка https://someonewhocares.org/hosts/zero/hosts, так что если кто планирует использовать этот исходный список у себя, имейте в виду такую его особенность.

Уникод в подавляющем большинстве версий libc для встройки в части gethostbyname и иже с ними не поддерживаемся вообще. Так что тут стоит при формировании списко избегать подобного. Благо ещё адшники по всяким рф и прочим региональным доменам не разбежались. Ибо гарантированно будет Ж.

Цитата: sfstudio от 07/03/2020, 16:27

Народ, проверьте плз и отпишитесь.

Работает. Не падает.

Ок. Ну и строго говоря падение это несколько иное. Тут при парсинге вполне корректно завершался. А падение это сегфолт, чаще на ровном месте. Ну чисто так что бы терминологической путаницы не было.

Здравствуйте. Снова локальный DNS Proxy не работает. Причина в строке 22029 списка https://schakal.ru/hosts/alive_hosts_mail_fb.txt Автору списка я сообщил.

Всем привет. Исправить смогу только поздно вечером. Видимо, url-ов с юникодом будет становиться всё больше. Добавить в скрипт ограничение на юникод? Или вы уйдёте с этого списка?

Для обратной совместимости предусмотрено представление уникодных url через ASCI, т.е. аля e-ger%C3%A4teundhaus.com. В таком виде dnsmasq должен жрать это дело.

И проблема не в урлах с уникодом, а в т том что происходит это у вас непредсказуемо. Сегодня уникод, завтра как бы какой другой компот не нарисовался. Буду думать. Но скорее всего придётся пилить свой локализованный список где вообще мусора типа e-geräteundhaus.com не будет. Рост длины списков при обработке роутерами это == доп задержки + пожирание рамы, и включение всего подряд ну я фиг знает чем навредил e-geräteundhaus.com Банальный магазин бытовой техники. За что он вообще в лист попал?

 

В общем ИМХО на вашей стороне проще конвертировать доменные имена в сжираемый всеми формат. Проблемы с dnsmasq с уникодом в виде отсутсвия поддержки в конфигах лишь вершина айсберга. И логичнее юзать универсальный формат URI.

А ещё лучше наверное юзать punycode. Например e-geräteundhaus.com будет xn--e-gerteundhaus-9hb.com и проблем вообще ни к кого не возникнет. Опять же на стороне роутера это делать мегадолго.

Ок , если по итогам обсуждения от меня что-то потребуется кроме удаления этого хоста, черканите плз на schakal@schakal.ru. Постараюсь реализовать. Сегодня подумаю над тем, как хосты с юникодом не транслировать из исходных списков в итоговый вообще. Ну и punycode тоже попробую. Не очень морально удобно на вас тестировать, но к сожалению больше не на ком / не не чем.

Ну я предлагал роутер заслать что бы можно было локально тестить. Предложение в силе. Адрес на info@wi-cat.ru по которому отправить черканите с линком на эту тему, коллеги подберут какой-нить сэмпл.

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

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

А хост там этот не один. Увы.

Про роутер пропустил, прошу прощения. Напишу 👍

Ок, сегодня вечером отпишусь по результатам. В идеале будет punycode, как минимум - будет удаление таких строк.

Вечер несколько затянулся ) Однако, результат есть. Впилил punycode, больше эта проблема нас не побеспокоит. Правда, появилась новая, но затрагивает, насколько я понял, мало кого. "Прилёг" сервис Cloudflare, с которого я раздаю список. Прилёг он для небольшого количества провайдеров (или регионов, не знаю точно), в основном доступен. Они уже занимаются проблемой, думаю скоро починят.

Up: починили.

Ну и отлично. Сэмпл (роутер) вроде как подобрали для экспериментов и проверок на заслать ;).

Как бы если прилёг страшного ничего не случается. Просто временно лист не будет использоваться. А вот если в листе косяки в часим URI то запросто dnsmasq не сможет распарсить  и тупо не стартанёт выдав ошибку.

Цитата: sfstudio от 14/03/2020, 03:24

Сэмпл (роутер) вроде как подобрали для экспериментов и проверок на заслать ;)

Отлично, спасибо! Завтра ещё на свежую голову почитаю, может и в мой аппарат можно как-то эти списки загнать в dnsmasq (древний, но пока живучий Asus RT-N56U на прошивке Padavan). Раньше не приходила в голову идея поковыряться в этом направлении. По результатам тогда отпишусь.

Да запросто. Причём не одним способом. Можно тупо в hosts писать, но тогда при каждом gethostbyname будет парситься что изврат, и копию будет dnsmasq всё равно держать в памяти. Т.е. затрат будет больше, толку столько же.

Можно как у нас отдельным конфигом, в новом dnsmasq специально автор плюшку добавил которую и юзаем:

Implement --address=/example.com/# as (more efficient) syntactic
        sugar for --address=/example.com/0.0.0.0 and
        --address=/example.com/::
        Returning null addresses is a useful technique for ad-blocking.

 

Цитата: sfstudio от 14/03/2020, 04:15

Да запросто.

Действительно, оказалось несложно. Пока не разобрался с запуском по расписанию, но это уже не горит. В целом - работает! Тогда сэмпл не понадобится, в случае чего - всегда смогу проверить на своём, обновив руками. Кстати, если нужно, могу до кучи генерить список в формате address=/example.com/, чтобы совсем разгрузить роутеры от этой не особо интеллектуальной задачи.

Да прям уж не понадобиться. Пусть будет. Один фиг иначе будет без дела лежать. Как бы железка то не серийная.

Не не надо генерить уникальные вещи. У нас там несколько листов на случай если один гаркнулся то 2 всё равно будут хоть как-то работать.

Дойдут руки просто на сях перепишем это дело да и всё.

Цитата: sfstudio от 07/03/2020, 16:27

Народ, проверьте плз и отпишитесь.

Прошу прощения, как  удалить старые списки? Перезагружад, в папке /etc/dnsmasq.d/ ничего. Сервис падает пока не отключишь adblock.

neodimas Они нигде и не хранятся и если в /etc/dnsmasq.d из нет то их и нет. Проверил вот прям сейчас и не вижу проблем.

Schakal Ау, чего адрес-то на мыло коллегам не скинули? Девайс лежит ждёт.

Приветствую! Написал 14 числа, Екатерина собрала с меня данные и написала, что отправит.

Привет.

А, ок тады.

Да что ж ты будешь делать.

# cat * | grep 'address=/vk.com/#'
address=/vk.com/#

Не ну я всё понимаю. Но эксклуд то для всяких соцсеток принудительный-то можно сделать? Чёт нервы начинают потихоньку сдавать.

Schakal Что дальше? Блокировка сервисов банков? Я всё могу понять. Свободный список, в свободное время. Ну чего за безолаберность полнейшая вдруг наступила не понимаю совсем.

Загрызут же.

Этот хост оказался в одном из источников. Конкретно - вот в этом. Почему - я не знаю. Не могу же я списки из сотен тысяч хостов вычитывать ежедневно глазами. Сейчас добавил vk.com в свой белый список, идёт перегенерация.

Не проще один раз запилить белые списки сразу по всяким ключевым чатикам, соцсеточкам, банкоклиентам, магазинам? Там оно на самом деле не так много.

Можно попробовать всякие белые списки РКН приюзать https://habr.com/ru/post/330458/ хоть какая-то польза с РКН будет. В смысле исключать из списка блоировок полностью совпадающие записи с белым списком.

Иначе да, глазами можно упороться всё это проверять. Но ценность вашего списка и состоит в том что бы оно хоть как-то самоорганизовывалось и фильтровалось. Тупо натыкать источников проблемы то нет никакой.

Нормальный вариант, попробую.

Меж тем список перегенерился.

А у юзверей терь кто загремел обновиться только через сутки.

Похоже список закэшировался. Как был vk.com в https://schakal.ru/hosts/alive_hosts_mail_fb.txt так и есть (2 минуты назад руками проверил).

*alive* ещё не обновились, по ним дольше работает (удаляются "трупы"). Сейчас руками на FTP обновлю, чтобы не ждать.

Подскажите, сервис dns фильтрации так и не работает. Есть намеки на решения, или без вариантов?

Точно не работает? Sadler проверь плз. Мне вырубать железо тут низя.

Спойлер
Извините, только авторизованные пользователи могут видеть спойлеры.

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

cannot fork into background: Cannot allocate memory

Ну всё приплыли. Рамы на 64Мб девайсах больше не хватат. Как бы с ходу даже ХЗ что с этим делать. Видимо надо листы дробить в зависимости от того где используются.

Цитата: Sadler от 29/03/2020, 20:02

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

Где крашиться-то? Не вижу в логе крахов. Вижу нехватку рамы.

 

Я имею в виду как раз то, что не стартует из-за нехватки рамы. Похоже, в этом и разница: где памяти хватает, там и работает.

Schakal

Может как-то того. Списки более точечные таки делать. А то такими темпами оно и в 256Мб лезть перестанет. Я вот на вскидку не представляю как, но уверен 99% всяких не ru и не com доменов можно смело повыкашивать без изменения эффективности.

Цитата: Sadler от 29/03/2020, 20:06

Я имею в виду как раз то, что не стартует из-за нехватки рамы. Похоже, в этом и разница: где памяти хватает, там и работает.

Ну дык крашиться и рамы нехватат суть вообще разные вещи.

Всем привет.

Давайте отключу последний добавленный источник (в котором ещё vk.com тогда всплыл), без него вроде тоже никто не жаловался на пропуски рекламы. Зодно встречный вопрос - а можно ли у вас сделать так, чтобы при успешном скачивании моего списка остальные не качались, если это сбережёт память? Они в нём уже учтены, и в текущей реализации удаление дубликатов (а оно у вас есть, как я понимаю), всё равно грохнет полностью всё, что они содержат. Ну кроме дохлых хостов (которые не резолвятся через DNS или не отвечают), а их в тех списках ох как много. Они так и останутся висеть мёртвым грузом в памяти.

 

Цитата: Schakal от 29/03/2020, 20:15

при успешном скачивании моего списка остальные не качались, если это сбережёт память?

Разница там совсем не существенная получается. Меньше 500 доменов. Проверено. У нас тоже uniq выполняется.

Из лога не совсем понятно, на чём происходит падение - на удалении дубликатов из общей по 3 спискам кучи хостов, или на попытке переварить уже готовый получившийся файл без дубликатов. Если первое, то имеет смысл не качать остальные, если скачался один. Если второе, то это не поможет. Тем временем отключил последний добавленный источник, запустил перегенерацию. По готовности отпишусь. Может занять чуть подольше чем обычно, днём серверок занят обсчётом других вещей ) Но думаю, не особо задержится.

Нет никакого падения. dnsmasq говорит что не может выделить память что бы сожрать список. Т.е. он не запускается даже. Падение или сегфолт это когда работал и помер. Тут не доходит до этого.

До этого вся обработка проходит.

Файлы обновились, по идее сейчас не должно упереться.

Спойлер
Извините, только авторизованные пользователи могут видеть спойлеры.

Шо, опять много? Какой-то из списков увеличился, что ли.. Интересно.

Запустился dsnmasq, всем спасибо за помощь!

Спойлер
Извините, только авторизованные пользователи могут видеть спойлеры.

В общем, adblock  и dnsmasq запускается после перезагрузки железа  и даже работает. Но после следующего через 24 часа обновления падает.

Хватит уже с падает. Не падает он. А не рестартует если рамы не хватило. В общем надо чую таки свои списки будет делать как-то фильтровать. Ибо 64Мб таки для текущих похоже уже маловато. Но там на 99% хлам всякий который вообще мало кто когда видит.

Почешем репу на досуге.

Чёт я не подумал, надо было Schakal 64Мб девайс тоже заслать....

Всем привет! Ну первый-то раз оно же стартует. Значит, imho, есть какой-то недочёт в реализации обновления, например перед обновлением списков не выгружаются из памяти текущие хосты.

Да конечно есть. Называется памяти впритык для такого объёма, а фрагментация оной растёт, а при выделении непрерывного куска (как делает dnsmasq) в итоге может оного и не оказаться.

Читаем о планировщиках памяти в *nix, разбираемся.

Не ну можно на удачу задрать overcommit, но как следствие получить вообще систему не раскоряку. Можно насиловать систему принудительно очисткой dirty pages, но всё это костыли и не без побочек.

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

P.S. Для ядерных вещей есть даже опция min_free которая не позволяет планировщику отдавать всю память юзерспэйсу во избежания обломов с выделением памяти на ядерном уровне ибо привет глюкодром.

Есть потенциальная вероятность, что мой список на днях ужмётся, так как накрылся тазом один из источников:

https://4pda.ru/forum/index.php?s=&showtopic=275091&view=findpost&p=95350269

и уже несколько дней используется его последняя успешно скачанная версия.

Пожалуй, даже, можно и не ждать больше, сейчас запущу перегенерацию без него.

Генерация закончилась, но итоговый список потерял лишь 1 килобайт веса. То есть практически всё в том списке дублировалось в других списках. Следующим шагом сейчас попробую убрать всё кроме .RU и .COM

Цитата: Schakal от 05/04/2020, 23:46

Следующим шагом сейчас попробую убрать всё кроме .RU и .COM

А вот это, кстати, принесло неслабый эффект. Список уменьшился практически вдвое. Не знаю, насколько он при этом потерял в качестве. Закину на 4PDA, пускай народ тоже погоняет, и сам на него перелезу. Ссылка на новый список. Тоже будет генериться ежедневно.

Эх. Оперативно переключаться между списками пока низя. Сейчас у нас все люди заняты. Добавлю в туду по HQ выбор списка. В MT даже ХЗ. Вот трогать уже её не хотелось бы. Подумаем.

Sadler, добавь себе в туду для HQ/MT добавить возможность управления списками. Но текучку не прерывай.

 список потерял лишь 1 килобайт веса

Лучше по числу строк смотреть.

Ну и не забываем, что память выделяется блоками по 4кб (в текущей конфигурации). Т.е. даже если надо сохранить одну запись, всё равно будет выделено 4кб.

Вообще, можно забить и переписать dnsmasq для использования например talloc. Что позволит гораздо эффективнее юзать раму. Напишу-ка я автору чего он думает на тему того, что факт, что память юзается тут совсем неэффективно.

Цитата: Schakal от 06/04/2020, 00:18

Закину на 4PDA, пускай народ тоже погоняет, и сам на него перелезу.

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

Ну значит будем переводить на него и дело с концом, ибо пока что-то ещё выдумывать откровенно некогда.

Вместе с традиционными листами от винхэлп получилось 50644 хоста. На тестовой железки проблемы не вижу. Щас соберётся 9.0.3 пусть народ проверяет. Было 74 тыс.

Видимо где-то в пределах 60 надо держать планку что бы 64Мб устройства (особенно когда сконфигурированы ещё какие-то сервисы) не влетали в ограничения.

Сделано 9.0.3 доступно через систему онлайн обновлений.

Авторы, красавцы. Готов даже 200 задонатить.

Schakal приветствую.

Мож тему создать для репортов о ложных блокировках? Тут подруженции задарил устройство и она уже стопку косяков с излишней блокировкой нашла.

Делаем? ;)

Интересно. В принципе можно постить сюда

https://4pda.to/forum/index.php?showtopic=275091

Там народ заодно и проверит и прокомментирует. Ну или темой тут, как удобнее. 

Тоже вариант ;) Я мыло дал. Надеюсь не страшно?

Про мыло я не понял) 

Адрес дал ваш человеку указанный при регистрации на форуме. Будет писать по найденным косячкам блокировок.

А, да, конечно. Спасибо. 

Доброго времени суток.

Добавил пользовательский список для блокировки рекламы:
https://github.com/Perflyst/PiHoleBlocklist/commits/master/SmartTV.txt

И падает сервис Dnsmasq из-за строки:

address=/cheburashka53.ru/#
address=/chechla.cnixon.com/#
address=/check"/#
address=/check-activity.com.ru/#
address=/check-my-internetspeed.com/#

По какой причине не понятно.
Обновление пользовательского списка от 15/12/2021, ранее все работало корректно.

Посмотрел изменения в нем, критичных изменений не нашел что бы открытая " была.

 

Посмотрите в чем может быть причина?

Роутер: 3.10.10.RU.01122021 / Маршрутизатор / MT7621 CPU, MT7615DN 2T2R DBDC, 1000FDX

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..

У вас в конце list.tmp полно гитхабовской разметки. Подозреваю, вы добавили ссылку на веб-интерфейс github'а, а не напрямую на файл списка блокировки.

o4tixzqocooc чем штатный список не устроил? Что-то не фильтруется? Ну можно всегда Schakal написать и добавит в список. Гарантировать совместимость парсера со всем творчеством мира никто не обещал.

Да, наверное ссылка должна была быть https://perflyst.github.io/PiHoleBlocklist/SmartTV.txt

Спасибо, заменил ссылку и все заработало.

Наверное надо в инструкции указать требования к формату файла.

Добавил свой список, т.к. позволяет функционал и есть необходимость блокировки рекламы на телевизоре.

Список от Schakal  устраивает.

Когда формат файла будет принят как ISO тогда обязательно будет ссылка в инструкции =) Правда уверен что даже это не решит "проблему". От слова НИКАК. =)

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

Товарищ большой молодец в этом плане. Поэтому настоятельно рекомендую действовать как описано выше, а не искать приключений на 5ю точку. ;)

Цитата: o4tixzqocooc от 19/12/2021, 12:45

Доброго времени суток.

Добавил пользовательский список для блокировки рекламы:
https://github.com/Perflyst/PiHoleBlocklist/commits/master/SmartTV.txt

И падает сервис Dnsmasq из-за строки:

address=/cheburashka53.ru/#
address=/chechla.cnixon.com/#
address=/check"/#
address=/check-activity.com.ru/#
address=/check-my-internetspeed.com/#

По какой причине не понятно.
Обновление пользовательского списка от 15/12/2021, ранее все работало корректно.

Посмотрел изменения в нем, критичных изменений не нашел что бы открытая " была.

 

Посмотрите в чем может быть причина?

Роутер: 3.10.10.RU.01122021 / Маршрутизатор / MT7621 CPU, MT7615DN 2T2R DBDC, 1000FDX

Простите за нубский вопрос. А куда вы этот список добавили?

neodimas:

Сервисы - Службы DNS- Списки блокировки рекламы

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: