Перейти к содержанию

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

Модераторы
  • Постов

    1 227
  • Зарегистрирован

  • Посещение

  • Победитель дней

    25

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

  1. Ещё один легковесный способ выборочного роутинга с однократной настройкой в консоли. Основан на том, что актуальная прошивка может использовать разные 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. Изменение списка доменов применяется налету. Для того, чтобы новые настройки вступили в силу ничего делать не надо.
  2. В новой версии изменился формат конфига. Проще переименовать старый и настроить заново. mv /opt/etc/AdGuardHome/AdGuardHome.yaml /opt/etc/AdGuardHome/AdGuardHome.yaml.prev
  3. Вареза в репозитории не будет.
  4. Часто используемые (и тяжело собираемые нативно) python-модули уже есть в репозитории, в том числе python3-pillow.
  5. Только довольно устаревший из-за использования ndmq. Надо бы переписать под актуальный API.
  6. Тоже был вынужден ограничить журнал запросов до 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
  7. У роутера нет цепей, способных отключить собственное питание. Может сгодится простой механический таймер?
  8. Пару лет назад прошивочный DNS-сервис научили запоминать имена хостов, которыми они представляются в момент обращения к DHCP.
  9. Добавьте в скрипт ниже свои учётные данные для 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 попробуйте сделать самостоятельно:)
  10. В случае использования 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?
  11. define Package/libhttpserver/install - попадёт в итоговый пакет, define Build/InstallDev - попадёт в ./staging_dir/<arch> и в будущем будет востребовано при сборке зависимых пакетов.
  12. Для icecast вам нужен источник, например, mpd. Для управления mpd вам понадобится клиент, например ympd. Ничего специфичного для роутера в настройке стриминга нет, поэтому на профильных форумах будет быстрее найти ответ.
  13. Логика прошивки предусматривает сброс модема обесточиванием USB-разъёма. Может, не надо?
  14. @Rbuha, пожалуйста, проверьте сейчас.
  15. Кстати, можно помечать трафик от отдельных приложений, а на кинетике для помеченного трафика использовать отдельную таблицу роутинга. И никакой SOCKS-прокси не понадобится.
  16. Два девайса разнесены пространственно и соединены одним ethernet-кабелем. Подскажите не накосячил ли я где в конфигах? Всё работает, но хочу убедиться, что настроено правильно. Для минимизации телодвижений (thnx to @KorDen) в WAN-порт Keenetic Peak вставлен кабель от MikroTik, отличия от заводского конфига минимальные: interface GigabitEthernet1/Vlan100 security-level public ip dhcp client dns-routes ip dhcp client name-servers up interface Bridge0 include GigabitEthernet1/Vlan100 Другими словами, в кабеле между роутерами ходит не тегированный WAN провайдера и тегированный домашний LAN. MikroTik hEX RB750Gr3 сброшен без загрузки дефолтного конфига и настроен с нуля: /interface bridge add name=lan add name=wan /interface vlan add interface=ether2 name=ether2vlan100 vlan-id=100 /interface bridge port add bridge=wan interface=ether1 add bridge=wan interface=ether2 add bridge=lan interface=ether3 add bridge=lan interface=ether4 add bridge=lan interface=ether5 add bridge=lan interface=ether2vlan100 /ip dhcp-client add interface=lan Соответственно, в ether1 торчит WAN от провайдера, ether2 соединён с Кинетиком. MikroTik выступает только в роли свитча.
  17. Перекладка зарегистрированных со статическим IP-адресом клиентов кинетика в интерфейс AdGuardHome: opkg install curl jq curl --silent http://localhost:79/rci/show/ip/hotspot | \ jq -c '.host[] | select(.dhcp.static != null) | {ids: [.ip], name: .name, tags: [], upstreams : [], use_global_blocked_services: true, use_global_settings: true}' | \ while read postbody; do curl --header 'Content-Type: application/json' --request POST --data-binary "$postbody" http://user:pass@localhost:3000/control/clients/add done user:pass — учётные данные для доступа к интерфейсу Adguardhome, замените на свои. Удаление всех клиентов AdGuardHome: #!/bin/sh API='http://user:pass@localhost:3000/control' curl --silent $API/clients | jq -c '.clients[] | {name: .name}' | \ while read postbody; do curl --header 'Content-Type: application/json' --request POST --data-binary "$postbody" $API/clients/delete done
  18. Да, всё так. Однако авторы adguardhome сами подстроились под Entware-сертификаты.
  19. К текущему моменту почти ничем, различия косметические. На оффсайте adguardhome релизы появляются раньше, а в Entware попадают спустя ~2 месяца.
  20. Никак. Это ядерные модули, которые из «чужой» системы загрузить на кинетике не получится. Надо обращаться к разрабам прошивки. Если ваша задача интересная и может быть полезна другим, то шансы довольно высоки.
  21. У меня PXE-файлы лежат на NAS'e (192.168.123.4): ip dhcp pool _WEBADMIN range … dns-server … lease 25200 bind Home domain lan bootfile netboot.xyz.kpxe next-server 192.168.123.4 enable
  22. Это ядерная реализация и подойдёт только под текущую прошивку. В Entware ничего ядерно-специфичного не добавляем.
  23. Да, воспроизводится на MIPS-архитектуре, на ARM такого нет.
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.