-
Постов
1 227 -
Зарегистрирован
-
Посещение
-
Победитель дней
25
Тип контента
Профили
Форумы
Галерея
Загрузки
Блоги
События
Весь контент Александр Рыжов
-
Плюс к названному выше — возможность обращения к локальным устройствам по тем DNS-именам, которыми они представились DHCP-серверу. И в целом не хочется без крайней нужды отрывать какой-то базовый функционал от роутера, поскольку прошивочная логика больше не будет им управлять. Если он отвалится, то перезапустить его будет некому. Прошивочные фичи можно сохранить, сделав каскад из DNS-прокси служб. Прошивочный резолвер будет обращаться к dnsmasq.
-
Как поддерживает? Проприетарным бинарником, существующим только для архитектуры x86. Начните со списка поддерживаемых принтеров в CUPS, затем убедитесь, что для драйверов есть исходники в открытом доступе. Без этого никак.
- 3 ответа
-
- 1
-
@catdimon, с точки зрения TFTP сервера никаких изменений не требуется. Однако для загрузки по UEFI: нужен загрузочный образ в формате UEFI, в образе д.б. поддержка UEFI NIC драйверов, chained-загрузка в большинстве случаев невозможна, в BIOS д.б. отключен Secure Boot.
-
Контент последней статьи с сайта keenetic-gi.ga, архив доступен здесь. В самом алгоритме нет ничего нового, но благодаря недавнему обновлению AdGuard Home (далее AGH) его можно реализовать довольно изящно: использование VPN для заданных вами доменов возможно тройкой коротких скриптов. Требования Развёрнутая среда Entware, Рабочее VPN-соединение поверх провайдерского, по которому будет идти обращение к определённым доменам. Установка пакетов Подразумевается, что AGH будет использоваться вместо встроенной в прошивку службы DNS Proxy. Установите необходимые пакеты: opkg install adguardhome-go ipset iptables Выполните первоначальную настройку AGH, для чего в CLI роутера наберите: opkg dns-override system configuration save В этот момент Entware-сервисы будут перезапущены, а интерфейс для первоначальной настройки AGH станет доступен по адресу http://192.168.1.1:3000, где 192.168.1.1 — IP-адрес роутера. Настройки по умолчанию подходят для большинства случаев. Скриптовая обвязка Результаты разрешения указанных доменных имён AGH будет помещать в ipset (bypass в примере), правилами iptables трафик по этим IP-адресам будет помечаться fwmark, а для роутинга помеченного трафика будет использоваться своя таблица маршрутизации. Первый скрипт — создание ipset'а при старте роутера. Создайте файл /opt/etc/init.d/S52ipset со следующим содержимым: #!/bin/sh PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin if [ "$1" = "start" ]; then ipset create bypass hash:ip ip rule add fwmark 1001 table 1001 fi Второй — для поддержания актуальности таблицы роутинга. Файл /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh с содержимым: #!/bin/sh [ "$system_name" == "nwg0" ] || exit 0 [ ! -z "$(ipset --quiet list bypass)" ] || exit 0 [ "${change}-${connected}-${link}-${up}" == "link-yes-up-up" ] || exit 0 if [ -z "$(ip route list table 1001)" ]; then ip route add default dev $system_name table 1001 fi где nwg0 — сетевой интерфейс VPN-соединения для выборочного доступа. Если затрудняетесь в его поиске, то посмотрите вывод ip addr, его адрес будет совпадать с тем, что виден в веб-интерфейсе.Третий — пометка трафика с помощью fwmark. Актуальная прошивка активно использует эту возможность, поэтому маркировать трафик приходится точечно. Создайте файл /opt/etc/ndm/netfilter.d/010-bypass.sh c контентом: #!/bin/sh [ "$type" == "ip6tables" ] && exit [ "$table" != "mangle" ] && exit [ -z "$(ip link list | grep nwg0)" ] && exit [ -z "$(ipset --quiet list bypass)" ] && exit if [ -z "$(iptables-save | grep bypass)" ]; then iptables -w -t mangle -A PREROUTING ! -s 192.168.254.0/24 -m conntrack --ctstate NEW -m set --match-set bypass dst -j CONNMARK --set-mark 1001 iptables -w -t mangle -A PREROUTING ! -s 192.168.254.0/24 -m set --match-set bypass dst -j CONNMARK --restore-mark fi где nwg0 — снова сетевой интерфейс VPN-соединения, 192.168.254.0/24 — его подсеть. Её так же можно найти в выводе ip addr. Сделайте скрипты исполняемыми: chmod +x /opt/etc/init.d/S52ipset chmod +x /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh chmod +x /opt/etc/ndm/netfilter.d/010-bypass.sh и переходите к финальному пункту. Список доменов для выборочного доступа Найдите в конфигурационном файле AGH /opt/etc/AdGuardHome/AdGuardHome.yaml строчку ipset_file: "" и поменяйте на ipset_file: /opt/etc/AdGuardHome/ipset.conf. Файл /opt/etc/AdGuardHome/ipset.conf будет единственным, требующим редактирования время от времени, в зависимости от изменения вашего персонального списка доменов для выборочного доступа. Он имеет следующий синтаксис: intel.com,ipinfo.io/bypass instagram.com,cdninstagram.com/bypass epicgames.com,gog.com/bypass Т.е. в левой части через запятую указаны домены, требующие доступа, справа после слэша — ipset, в который AGH складывает результаты разрешения DNS-имён. Можно указать всё в одну строчку, можно разделить логически на несколько строк как в примере. Домены третьего уровня и выше также включаются в правило доступа, т.е. указание intel.com включает www.intel.com, download.intel.com и пр. Рекомендую добавить какой-нибудь «сигнальный» сервис, показывающий ваш текущий IP-адрес (ipinfo.io в примере). Так вы сможете проверить работоспособность настроенного решения. Учтите, что AGH не перечитывает изменённый файл, поэтому после правки перезапустите его с помощью: /opt/etc/init.d/S99adguardhome restart При желании можно использовать несколько VPN-соединений для обращения к разным доменам, для простоты понимания здесь это не описано. Диагностика проблем Убедитесь в том, что набор ipset создан и наполняется в процессе работы: ipset --list bypass Вывод должен быть не пустой. Убедитесь в существовании нужной таблицы роутинга для выборочного доступа: ip rule list | grep 1001 Убедитесь, что в таблице присутствует необходимый маршрут: ip route list table 1001 Посмотрите, существуют ли правила netfilter для пометки пакетов: iptables-save | grep bypass После перезагрузки роутера проверьте в веб-интерфейсе Системный журнал, в нём не должно быть красных строк, связанных с настроенными скриптами. Удачи в начинаниях!
- 146 ответов
-
- 14
-
- adguardhome
- ipset
-
(и ещё 1 )
C тегом:
-
AdGuardHome никак не лимитирует объём используемой оперативной памяти при своей работе, однако лимиты можно задавать как для любого другого приложения на GO с помощью переменных среды. GOMEMLIMIT — максимальный объём памяти, доступной для использования в байтах, GOGC — агрессивность сборщика мусора в процентах. Меньше — агрессивнее, т.е. память освобождается чаще за счёт повышения нагрузки на проц. Значения можно задать в стартовом скрипте /opt/etc/init.d/S99adguardhome следующим образом: PREARGS="env GOMEMLIMIT=64MiB GOGC=40" в примере выше для AGH задан лимит в 64MB RAM и более агрессивное поведение по освобождению RAM (дефолтное значение 100), за что придётся заплатить появлением пиков в графике загрузки проца в момент обновления списков блокировки.
-
Я бы не стал на это рассчитывать. Расстановка тэгов в зависимости от опций клиента — это (замечательная!) фича dnsmasq.
-
Со стороны кинетика они ни чем не отличается от уже существующей. Всё зависит от того, какой контент вы размещаете для загрузки по PXE.
-
IMHO, логи существуют отнюдь не для того, чтобы кому-то нравится. Если они помогают в диагностике проблем — это хорошие логи.
-
По идее можно, у записей в ipset'е предусмотрено поле для комментов. Проверял на 3.9.х. Перед отловом нужных событий сперва собираю все возможные варианты, положив в нужную папку /opt/etc/ndm/<name it>.d такое: #!/bin/sh LOG='/opt/tmp/hook.log' echo -e "\n\n--- $(date '+%T') $0 fired ---" >> $LOG echo $@ >> $LOG set | grep -vE "^'\$|^HOME|^HOSTNAME|^IFS|^LANG|^LD_|^LINENO|^LOG|^NDM_MOUNT|^OPTIND|^PATH|^PPID|^PS|^PWD|^SHELL|^SHLVL|^TERM|^timezone|^USER|^FUNCNAME" >> $LOG exit 0 Во вложении выхлоп скрипта при выключении и повторном включении VPN-соединения. hook.log
-
Никаких. Лишь бы список выбранных доменов влез на флешку. Хотя такой способ уже трудно будет назвать точечным:) Посмотрите раздел «Диагностика проблем». netfilter c доменами не работает, после того как ipset-dns разрешила очередное доменное имя в IP-адрес(а), способа сопоставить назад эти адреса с исходным доменом нет. Reverse DNS resolving будет не всегда показательным и я бы на него не стал ориентироваться вовсе. Вы вольны выбрать любой DNS-сервер для работы утилиты ipset-dns в конфиге /opt/etc/bypass.conf Он первым делом добавится в ipset, следственно, обращения к нему будут идти тем же путём, что и к выбранным для выборочного роутинга ресурсам. В принципе, можно, только в общем случае не нужно (см. выше). В соседних темах можно найти инфу на каких портах работают прошивочные DoH/DoT.
-
Что-нибудь основанное на dnsmasq или adguardhome, они так же умеют наполнять ipset по результатам разрешения DNS-имён. Лично я до последнего использовал это. Ещё отмечу, если DNS-сервер в ответ присылает сразу несколько A/AAAA-записей, то они заносятся в ipset сразу все. С лёгкой доработкой это решение может быть развёрнуто на любом кинетике, где USB-накопители вообще не предусмотрены. Дело в том, что нужные хук скрипты работают и там, хоть это нигде не документировано. Именно поэтому в роутерах без USB доступен в компонентах OPKG. Другими словами, если вы соберёте прошивку со своими дополнительными компонентами (busybox, iptables, ipset), то оно будет прекрасно себя чувствовать, к примеру, на Keenetic Start. Никаких логов или динамических конфигов у приведённого решения нет, все файлы статичные. Ни USB-флешку, ни флешку роутера протирать не будут.
-
Не собирается хостовый cmake. Либо хостовое окружение (Ubuntu? Debian?) не отвечают требованиям сборки, либо собираемая версия стара настолько, что не собирается на (слишком:) современном для неё хосте.
-
Если уж делать в прошивке, то законченную фичу по выборочному роутингу.
- 1 ответ
-
- 1
-
В первой прикидке все зависимости менее одного мегабайта, а значит, решение с помощью SDK можно поднять хоть на Keenetic Start. Необходимые для конфигурирования имена VPN-интерфейса и его подсеть можно выуживать, к примеру, по названию соединения. Если надо больше, то вряд ли стоит это помещать в прошивочный конфиг или WebUI. Я бы использовал другое решение. @keenet07, всё так. По вопросам: Да, всё в памяти. Решение, по сути, три статичных файла обвязки вокруг iptables и ipset. Ничего. Таблица наполняется адресами, но роутинг ничем не отличается от роутинга по умолчанию. Прошивка. Глубина бесконечна. Да. Понимаю, что при высоких аптаймах сет может накапливать лишнее, но при точечном обходе я бы не стал заморачиваться. Если хочется такое реализовать, то создавайте ipset сразу указывая время жизни элементов и ограничивайте TTL записей DNS-кэша в прошивочном сервисе с помощью dns-proxy max-ttl … Нет. Прошивка не отображает роутинг по таблицам/сетам. Т.е. маршруты по умолчанию так же окажутся в таблице для отдельного роутинга. Зачем?