Popular Post Александр Рыжов Posted April 26 Popular Post Share Posted April 26 Ещё один легковесный способ обхода блокировок с однократной настройкой в консоли. Основан на том, что актуальная прошивка может использовать разные 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. Изменение списка доменов применяется налету. Для того, чтобы новые настройки вступили в силу ничего делать не надо. 7 3 Quote Link to comment Share on other sites More sharing options...
krass Posted April 26 Share Posted April 26 13 минуты назад, Александр Рыжов сказал: Число записей ограничено 64. А для моделей viva( или giga ) и выше можно в дальнейшем увеличить число записей? Речь только про продвинутые модели. Quote Link to comment Share on other sites More sharing options...
keenet07 Posted April 26 Share Posted April 26 (edited) 4 часа назад, Александр Рыжов сказал: Решение основано на немного допиленной мелкой утилите ipset-dns. Прошивка будет обращаться к ней для разрешения определённого доменного имени из пользовательского перечня, а та, в свою очередь, будет складывать результаты работы в отдельный набор ip-адресов. Далее этот набор используется для выборочного роутинга в VPN-соединение ровно так же, как в аналогичных решениях по соседству. Тем самым сохраняются все возможности прошивочного сервиса. Тут немножко проясните механизм. В реальном времени происходит обращение к этой утилите по домену прописанному через форму добавления DNS серверов в Интернет фильтрах. Утилита резолвит домен и хранит в оперативной памяти список полученных IP адресов и создает пользовательские маршруты к ним через настроенный в конфиге VPN. Каждое новое обращение к этому домену может добавлять в этот список новые IP адреса, если у домена их множество. 1) Я правильно понимаю, что этот список адресов и маршруты не сохраняется на флэш память устройства не расходуя её ресурс, а при перезагрузке теряются и пополняются заново по мере обращения? 2) Что происходит если VPN не подключен? Маршрут по умолчанию? 3) Адреса субдоменов автоматом также добавляются при обращении к ним. Это уже прошивка сама перенаправляет DNS запросы к субдоменам на резолвер утилиты? Какова глубина субдоменов? 4) Очистка списка IP адресов от устаревших происходит только путем перезагрузки устройства? 5) Будет ли видно эти маршруты в веб-интерфейсе роутера? 6) будет ли это работать, если в качестве DNS на роутере прописаны DOT или DOH? Обычные запросы ведь при этом отсекаются или перенаправляются. Сработает ли направление по домену на DNS утилиты? Это проверил, работает по домену. Edited April 26 by keenet07 Quote Link to comment Share on other sites More sharing options...
avn Posted April 26 Share Posted April 26 (edited) Я бы еще все маршруты в таблицу прокопировал ip -4 route show table main |grep -Ev ^default |while read ROUTE; do ip -4 route add table 1001 $ROUTE 2>/dev/null; done Идея интересна и понятна. Спасибо. Edited April 26 by avn Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted April 27 Author Share Posted April 27 В первой прикидке все зависимости менее одного мегабайта, а значит, решение с помощью SDK можно поднять хоть на Keenetic Start. Необходимые для конфигурирования имена VPN-интерфейса и его подсеть можно выуживать, к примеру, по названию соединения. 21 час назад, krass сказал: А для моделей viva( или giga ) и выше можно в дальнейшем увеличить число записей? Если надо больше, то вряд ли стоит это помещать в прошивочный конфиг или WebUI. Я бы использовал другое решение. @keenet07, всё так. По вопросам: Да, всё в памяти. Решение, по сути, три статичных файла обвязки вокруг iptables и ipset. Ничего. Таблица наполняется адресами, но роутинг ничем не отличается от роутинга по умолчанию. Прошивка. Глубина бесконечна. Да. Понимаю, что при высоких аптаймах сет может накапливать лишнее, но при точечном обходе я бы не стал заморачиваться. Если хочется такое реализовать, то создавайте ipset сразу указывая время жизни элементов и ограничивайте TTL записей DNS-кэша в прошивочном сервисе с помощью dns-proxy max-ttl … Нет. Прошивка не отображает роутинг по таблицам/сетам. 17 часов назад, avn сказал: Я бы еще все маршруты в таблицу прокопировал Т.е. маршруты по умолчанию так же окажутся в таблице для отдельного роутинга. Зачем? 1 1 Quote Link to comment Share on other sites More sharing options...
krass Posted April 27 Share Posted April 27 1 минуту назад, Александр Рыжов сказал: Если надо больше, то вряд ли стоит это помещать в прошивочный конфиг или WebUI. Я бы использовал другое решение. Подскажите, пожалуйста, какое другое решение? Quote Link to comment Share on other sites More sharing options...
avn Posted April 27 Share Posted April 27 2 часа назад, Александр Рыжов сказал: Т.е. маршруты по умолчанию так же окажутся в таблице для отдельного роутинга. Зачем? Ни в коем случае. Quote Link to comment Share on other sites More sharing options...
keshun Posted May 3 Share Posted May 3 Вот это прям то, что я искал для выборочно обхода блокировок без отключения штатного функционала роутера, огромное спасибо. 1 Quote Link to comment Share on other sites More sharing options...
keenet07 Posted May 3 Share Posted May 3 @Александр Рыжов Подскажите пожалуйста. Это решение может быть развернуто полностью без подключения внешних носителей для OPKG? Знаю, что можно в память роутера разместить. Есть только один вопрос, при таком варианте работы OPKG и скрипта происходит ли какая-либо дополнительная запись/перезапись в память роутера? Не хочется растрачивать ресурс памяти. Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted May 3 Author Share Posted May 3 В 27.04.2023 в 17:11, krass сказал: Подскажите, пожалуйста, какое другое решение? Что-нибудь основанное на dnsmasq или adguardhome, они так же умеют наполнять ipset по результатам разрешения DNS-имён. Лично я до последнего использовал это. В 26.04.2023 в 21:26, keenet07 сказал: Утилита резолвит домен и хранит в оперативной памяти список полученных IP адресов и создает пользовательские маршруты к ним через настроенный в конфиге VPN. Каждое новое обращение к этому домену может добавлять в этот список новые IP адреса, если у домена их множество. Ещё отмечу, если DNS-сервер в ответ присылает сразу несколько A/AAAA-записей, то они заносятся в ipset сразу все. 6 часов назад, keenet07 сказал: Это решение может быть развернуто полностью без подключения внешних носителей для OPKG? С лёгкой доработкой это решение может быть развёрнуто на любом кинетике, где USB-накопители вообще не предусмотрены. Дело в том, что нужные хук скрипты работают и там, хоть это нигде не документировано. Именно поэтому в роутерах без USB доступен в компонентах OPKG. Другими словами, если вы соберёте прошивку со своими дополнительными компонентами (busybox, iptables, ipset), то оно будет прекрасно себя чувствовать, к примеру, на Keenetic Start. 6 часов назад, keenet07 сказал: Знаю, что можно в память роутера разместить. Есть только один вопрос, при таком варианте работы OPKG и скрипта происходит ли какая-либо дополнительная запись/перезапись в память роутера? Не хочется растрачивать ресурс памяти. Никаких логов или динамических конфигов у приведённого решения нет, все файлы статичные. Ни USB-флешку, ни флешку роутера протирать не будут. 2 Quote Link to comment Share on other sites More sharing options...
krass Posted May 3 Share Posted May 3 2 часа назад, Александр Рыжов сказал: Что-нибудь основанное на dnsmasq или adguardhome, они так же умеют наполнять ipset по результатам разрешения DNS-имён. Лично я до последнего использовал это. Подскажите,пожалуйста, предложенные вами варианты и что вы использовали лично -- без ограничений? Или там можно больше, но тоже есть ограничение? Quote Link to comment Share on other sites More sharing options...
keenet07 Posted May 3 Share Posted May 3 (edited) В 27.04.2023 в 21:08, Александр Рыжов сказал: Нет. Прошивка не отображает роутинг по таблицам/сетам. 1. Если не затруднит подскажите какой командой в entware можно увидеть весь список ip адресов направленных через VPN этой утилитой. ps: тут вроде разобрался. ip route show dev ovpn_br1 но не уверен лучший ли это способ. Вот если бы ещё в этих строках с маршрутами и домен отображался бы.... pss: как оказалось это маршруты прошивки, а не утилиты. 2. Я так понял утилита резолвит адреса через обычный DNS 8.8.8.8. Никак нельзя эти запросы так же через системный безопасный DoH или DoT проводить? Если в конфиге вместо 8.8.8.8 указать 192.168.1.1, то зациклится запрос? В целом всё установил, настроил, работает. Edited May 4 by keenet07 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted May 4 Author Share Posted May 4 15 часов назад, krass сказал: Подскажите,пожалуйста, предложенные вами варианты и что вы использовали лично -- без ограничений? Никаких. Лишь бы список выбранных доменов влез на флешку. Хотя такой способ уже трудно будет назвать точечным:) 13 часа назад, keenet07 сказал: 1. Если не затруднит подскажите какой командой в entware можно увидеть весь список ip адресов направленных через VPN этой утилитой. Посмотрите раздел «Диагностика проблем». netfilter c доменами не работает, после того как ipset-dns разрешила очередное доменное имя в IP-адрес(а), способа сопоставить назад эти адреса с исходным доменом нет. Reverse DNS resolving будет не всегда показательным и я бы на него не стал ориентироваться вовсе. 13 часа назад, keenet07 сказал: 2. Я так понял утилита резолвит адреса через обычный DNS 8.8.8.8. … Если в конфиге вместо 8.8.8.8 указать 192.168.1.1, то зациклится запрос? Вы вольны выбрать любой DNS-сервер для работы утилиты ipset-dns в конфиге /opt/etc/bypass.conf Он первым делом добавится в ipset, следственно, обращения к нему будут идти тем же путём, что и к выбранным для обхода блокировок ресурсам. 13 часа назад, keenet07 сказал: Никак нельзя эти запросы так же через системный безопасный DoH или DoT проводить? В принципе, можно, только в общем случае не нужно (см. выше). В соседних темах можно найти инфу на каких портах работают прошивочные DoH/DoT. 2 Quote Link to comment Share on other sites More sharing options...
keenet07 Posted May 4 Share Posted May 4 (edited) 8 минут назад, Александр Рыжов сказал: netfilter c доменами не работает, после того как ipset-dns разрешила очередное доменное имя в IP-адрес(а), способа сопоставить назад эти адреса с исходным доменом нет. Reverse DNS resolving будет не всегда показательным и я бы на него не стал ориентироваться вовсе. Конечно. Я имел в виду было бы здорово, так изменить стандартные средства, чтоб на этапе добавления маршрута туда передавался бы и сам домен (чисто для информации), ну и соответственно так же в таблице хранился бы и выводился стандартными средствами. Сам я такую модификацию не потяну, а просить кого-то без личной заинтересованности и смысла наверное нет. 8 минут назад, Александр Рыжов сказал: Он первым делом добавится в ipset, следственно, обращения к нему будут идти тем же путём, что и к выбранным для обхода блокировок ресурсам. Понял, ну отлично. Edited May 4 by keenet07 Quote Link to comment Share on other sites More sharing options...
snark Posted May 4 Share Posted May 4 Приветствую всех, вопрос про 010-bypass-table.sh из пакета, вероятно немоного недогоняю, в упор не могу отловить link-yes-up-up У меня вот так , link-no-up-up > connected-yes-up-up На всякий - прошивка 4.0 А20 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted May 4 Author Share Posted May 4 5 часов назад, keenet07 сказал: Я имел в виду было бы здорово, так изменить стандартные средства, чтоб на этапе добавления маршрута туда передавался бы и сам домен (чисто для информации), ну и соответственно так же в таблице хранился бы и выводился стандартными средствами. По идее можно, у записей в ipset'е предусмотрено поле для комментов. 1 час назад, snark сказал: Приветствую всех, вопрос про 010-bypass-table.sh из пакета, вероятно немоного недогоняю, в упор не могу отловить link-yes-up-up У меня вот так , link-no-up-up > connected-yes-up-up Проверял на 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 1 Quote Link to comment Share on other sites More sharing options...
snark Posted May 4 Share Posted May 4 На 4.0А20 link-yes-up-up не появляется Видимо в 4.0 что то изменилось hook.log 1 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted May 4 Author Share Posted May 4 3 часа назад, snark сказал: У меня вот так , link-no-up-up > connected-yes-up-up Похоже из [ "${change}-${connected}-${link}-${up}" == "link-yes-up-up" ] можно выкинуть $change. Поскольку "${connected}-${link}-${up}" == "yes-up-up" и у меня и у вас встречается только один раз и, следственно, однозначно определяет статус интерфейса. Обновлю линк на пакет в первом посте. 2 Quote Link to comment Share on other sites More sharing options...
keenet07 Posted May 5 Share Posted May 5 (edited) @Александр Рыжов У меня публичный OpenVPN. Раньше внутренний адрес мне выдавал по-моему всегда один и тот же в сети 10.*.*.*/32. Его и прописал в конфиг вашей утилиты в соответствии с инструкцией. А сейчас заметил что адрес, его последние цифры стал меняться. Не знаю совпадение или нет. Подключаясь с другим адресом утилита всё-равно работает, направляет то что нужно на VPN. Настройки не менял. Получается это не такой важный параметр? Не удерживают/занимают ли какие-то элементы утилиты или entware изначальный адрес VPN не давая потом снова подключиться с ним же? А несколько раз при переподключении VPN вообще оказывался в ситуации, что трафик через него не шёл. Причем не только через утилиту, но и через настройки прошивки Маршрутизация. Поправленный вами недавно файлик мониторинга статуса VPN закинул в ентварь вручную. Edited May 5 by keenet07 Quote Link to comment Share on other sites More sharing options...
Pepsi CoJla Posted May 9 Share Posted May 9 При запуске утилиты ipset-dns выдаёт: ipset v7.17: Set cannot be created: set with the same name already exists ipset v7.17: Element cannot be added to the set: it's already added Quote Link to comment Share on other sites More sharing options...
hard_alex@mail.ru Posted Friday at 08:34 PM Share Posted Friday at 08:34 PM О! Это зачет. Вопросы. 1. При включенном DoH в мозиле или на устройстве, работать не будет правильно? 2. IPv6 работать будет? а то с нативным ipv6 с интелом проблемка, что не задавай в маршрутах, ipv6 идет родной. VPN тоже в ipv6 умеет, но обычно его никто не учитывает , как будто его вообще не существует. Quote Link to comment Share on other sites More sharing options...
keenet07 Posted Friday at 09:00 PM Share Posted Friday at 09:00 PM (edited) 26 минут назад, hard_alex@mail.ru сказал: 1. При включенном DoH в мозиле или на устройстве, работать не будет правильно? Не будет. Работает только через прямой DNS запрос к роутеру. Вернее работать то оно в мозиле с DoH сможет, но только при условии что ранее были обращения к этим ресурсам из других браузеров напрямую. Edited Friday at 09:02 PM by keenet07 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.