Jump to content

Александр Рыжов

Moderators
  • Posts

    1,212
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by Александр Рыжов

  1. IMHO, логи существуют отнюдь не для того, чтобы кому-то нравится. Если они помогают в диагностике проблем — это хорошие логи.
  2. Похоже из [ "${change}-${connected}-${link}-${up}" == "link-yes-up-up" ] можно выкинуть $change. Поскольку "${connected}-${link}-${up}" == "yes-up-up" и у меня и у вас встречается только один раз и, следственно, однозначно определяет статус интерфейса. Обновлю линк на пакет в первом посте.
  3. По идее можно, у записей в 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
  4. Никаких. Лишь бы список выбранных доменов влез на флешку. Хотя такой способ уже трудно будет назвать точечным:) Посмотрите раздел «Диагностика проблем». netfilter c доменами не работает, после того как ipset-dns разрешила очередное доменное имя в IP-адрес(а), способа сопоставить назад эти адреса с исходным доменом нет. Reverse DNS resolving будет не всегда показательным и я бы на него не стал ориентироваться вовсе. Вы вольны выбрать любой DNS-сервер для работы утилиты ipset-dns в конфиге /opt/etc/bypass.conf Он первым делом добавится в ipset, следственно, обращения к нему будут идти тем же путём, что и к выбранным для выборочного роутинга ресурсам. В принципе, можно, только в общем случае не нужно (см. выше). В соседних темах можно найти инфу на каких портах работают прошивочные DoH/DoT.
  5. Что-нибудь основанное на dnsmasq или adguardhome, они так же умеют наполнять ipset по результатам разрешения DNS-имён. Лично я до последнего использовал это. Ещё отмечу, если DNS-сервер в ответ присылает сразу несколько A/AAAA-записей, то они заносятся в ipset сразу все. С лёгкой доработкой это решение может быть развёрнуто на любом кинетике, где USB-накопители вообще не предусмотрены. Дело в том, что нужные хук скрипты работают и там, хоть это нигде не документировано. Именно поэтому в роутерах без USB доступен в компонентах OPKG. Другими словами, если вы соберёте прошивку со своими дополнительными компонентами (busybox, iptables, ipset), то оно будет прекрасно себя чувствовать, к примеру, на Keenetic Start. Никаких логов или динамических конфигов у приведённого решения нет, все файлы статичные. Ни USB-флешку, ни флешку роутера протирать не будут.
  6. Не собирается хостовый cmake. Либо хостовое окружение (Ubuntu? Debian?) не отвечают требованиям сборки, либо собираемая версия стара настолько, что не собирается на (слишком:) современном для неё хосте.
  7. Поддержка занимается заводским функционалом. Сторонние OPKG-пакеты уже за его пределами.
  8. Если уж делать в прошивке, то законченную фичу по выборочному роутингу.
  9. В первой прикидке все зависимости менее одного мегабайта, а значит, решение с помощью SDK можно поднять хоть на Keenetic Start. Необходимые для конфигурирования имена VPN-интерфейса и его подсеть можно выуживать, к примеру, по названию соединения. Если надо больше, то вряд ли стоит это помещать в прошивочный конфиг или WebUI. Я бы использовал другое решение. @keenet07, всё так. По вопросам: Да, всё в памяти. Решение, по сути, три статичных файла обвязки вокруг iptables и ipset. Ничего. Таблица наполняется адресами, но роутинг ничем не отличается от роутинга по умолчанию. Прошивка. Глубина бесконечна. Да. Понимаю, что при высоких аптаймах сет может накапливать лишнее, но при точечном обходе я бы не стал заморачиваться. Если хочется такое реализовать, то создавайте ipset сразу указывая время жизни элементов и ограничивайте TTL записей DNS-кэша в прошивочном сервисе с помощью dns-proxy max-ttl … Нет. Прошивка не отображает роутинг по таблицам/сетам. Т.е. маршруты по умолчанию так же окажутся в таблице для отдельного роутинга. Зачем?
  10. Ещё один легковесный способ выборочного роутинга с однократной настройкой в консоли. Основан на том, что актуальная прошивка может использовать разные DNS-серверы для указанных пользователем доменов. Желаемые домены можно будет менять прямо в веб-интерфейсе. Решение основано на немного допиленной мелкой утилите ipset-dns. Прошивка будет обращаться к ней для разрешения определённого доменного имени из пользовательского перечня, а та, в свою очередь, будет складывать результаты работы в отдельный набор ip-адресов. Далее этот набор используется для выборочного роутинга в VPN-соединение ровно так же, как в аналогичных решениях по соседству. Тем самым сохраняются все возможности прошивочного сервиса. Перед установкой настройте в веб-интерфейсе любое VPN-соединение. Установка возможна с помощью пакета, подходящего под любую архитектуру кинетика: opkg install http://bin.entware.net/mipselsf-k3.4/test/ipset-dns-keenetic_0.2-1_all.ipk Для настройки вам понадобится имя и подсеть VPN-интерфейса. Их можно увидеть в выводе команды ip addr. В примере это nwg3 и 10.7.0.0/24: … 37: nwg3: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1324 qdisc noqueue qlen 50 link/[65534] inet 10.7.0.8/24 scope global nwg3 Внесите эти два параметра любым удобным способом в /opt/etc/bypass.conf по имеющемуся примеру в переменные VPN_NAME и VPN_SUBNET: vi /opt/etc/bypass.conf После чего решение готово к использованию. Запустите утилиту ipset-dns или просто перегрузите роутер: /opt/etc/init.d/S52ipset-dns start Список ресурсов для открытия через VPN-соединение удобно вести на странице Сетевые правила → Интернет фильтры → Настройка DNS. Пример добавления домена intel.com вместе с субдоменами: где 192.168.1.1 — IP-адрес роутера. Если вам привычней CLI-интерфейс, то аналог записи выше: ip name-server 192.168.1.1:5353 intel.com Число записей ограничено 64. Изменение списка доменов применяется налету. Для того, чтобы новые настройки вступили в силу ничего делать не надо.
  11. В новой версии изменился формат конфига. Проще переименовать старый и настроить заново. mv /opt/etc/AdGuardHome/AdGuardHome.yaml /opt/etc/AdGuardHome/AdGuardHome.yaml.prev
  12. Часто используемые (и тяжело собираемые нативно) python-модули уже есть в репозитории, в том числе python3-pillow.
  13. Только довольно устаревший из-за использования ndmq. Надо бы переписать под актуальный API.
  14. Тоже был вынужден ограничить журнал запросов до 24 часов из-за размера лога, теперь: # du -hs /opt/etc/AdGuardHome/data/* 961.0K /opt/etc/AdGuardHome/data/filters 7.5M /opt/etc/AdGuardHome/data/querylog.json 29.2M /opt/etc/AdGuardHome/data/querylog.json.1 25.0K /opt/etc/AdGuardHome/data/sessions.db 185.0K /opt/etc/AdGuardHome/data/stats.db
  15. У роутера нет цепей, способных отключить собственное питание. Может сгодится простой механический таймер?
  16. Пару лет назад прошивочный DNS-сервис научили запоминать имена хостов, которыми они представляются в момент обращения к DHCP.
  17. Добавьте в скрипт ниже свои учётные данные для AGH, проверьте список блокируемых сервисов и запускайте из cron с нужным параметром: cat ./agh_block_svc.sh #!/bin/sh # user:pass - учётка для WebUI API='http://user:pass@localhost:3000/control' # список сервисов для блокировки, возможные варианты в выводе ./agh_block_svc.sh list BLOCKED='["youtube","wechat"]' case $1 in block) curl --header 'Content-Type: application/json' --request POST --data-binary "$BLOCKED" $API/blocked_services/set ;; unblock) curl --header 'Content-Type: application/json' --request POST --data-binary "[]" $API/blocked_services/set ;; list) curl --silent $API/blocked_services/all | jq '.blocked_services[].id' ;; list_blocked) curl --silent $API/blocked_services/list | jq '.[]' ;; *) echo "Usage: $0 block|unblock|list|list_blocked" ;; esac Для работы придётся установить пакеты curl, jq, cron. Задания для cron попробуйте сделать самостоятельно:)
  18. В случае использования Wireguard'а заменить: protocol bgp antifilter { import filter { if martians() then reject; gw = 10.9.0.1; # override route nexthop accept; }; на: protocol bgp antifilter { import filter { if martians() then reject; ifname = "nwg1"; # override route nexthop accept; }; Спасибо за решение, изложенное в начале темы. Для чего нужен bird, если не используется BGP?
  19. define Package/libhttpserver/install - попадёт в итоговый пакет, define Build/InstallDev - попадёт в ./staging_dir/<arch> и в будущем будет востребовано при сборке зависимых пакетов.
  20. Для icecast вам нужен источник, например, mpd. Для управления mpd вам понадобится клиент, например ympd. Ничего специфичного для роутера в настройке стриминга нет, поэтому на профильных форумах будет быстрее найти ответ.
×
×
  • Create New...