Pull to refresh

Comments 13

В Dnsmasq (который по умолчанию используется в openwrt как DNS) есть опция NFTSet/IPSet. Позволяет задать список доменов и их отрезолвенные IP класть в nftables/ipset.

Ну а далее, уже правилами nftables с трафиком можно делать что угодно. Например ставить метку на пакет и маршрутизирвоать по ней, натравливать на соединение zapret для обмана DPI.

С ресурсами за CDN будет проблемка

Podkop и RuAntiBlock примерно так и работают.
Вносят все домены в NFTSet, далее когда по какому то домену есть запрос сохраняют ip со сроком жизни кеша 2 часа и делают для этого ip маршрут в прокси. Если у домена было много ip то берётся только один из них.
Я не отрицаю что этот способ более производительный но
Что если у пользователя настроен DoH(многие современные браузеры это делают автоматически и это надо отключать)?
Что если пользователь уже получил ip от dns на мобильном интернете, пришёл домой и у него в кеше остался ip про который роутер не знает?
Что если множество сайтов сидят за CDN и блока по ip нет, только по домену силами тпсу? Гоним трафик на все сайты в прокси?
Sing-box лишён всех этих проблем так как достаёт домен прямо из запроса.

Что если пользователь уже получил ip от dns на мобильном интернете, пришёл домой и у него в кеше остался ip про который роутер не знает?

По моим наблюдениям android сбрасывает локальный dns кэш при переключении между сетями.

Что если множество сайтов сидят за CDN и блока по ip нет, только по домену силами тпсу? Гоним трафик на все сайты в прокси?

Не проверял, но подозреваю, что sing-box тоже пустит трафик для всего IP в VPN. Определить нужен ли VPN для сайта нужно ещё во время отправки TCP-SYN, а это происходит сильно раньше, чем браузер раскроет домен отправив SNI.

Если у вас нет своей ASN, то маршрутизировать трафик анализом SNI не получится физически, т.к. если мы переключем маршрут для уже установленного TCP соединения, то оно сломается, т.к. разный внешний IP.

Что если у пользователя настроен DoH(многие современные браузеры это делают автоматически и это надо отключать)?

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

В целом не имею ничего против sing-box, и не настаиваю на своем способе. Просто он мне кажется слишком громостким для роутера.

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

Стоп, но podkop же тоже так умеет. Как локальные списки, так и текстовые и из внешних источников.

И маршрутизацию подкоп делает силами sing-box

Версия которой я пользовался примерно год назад делала NFTSet из заблокированных доменов и при запросе адреса оттуда делала маршрут на этот адрес в прокси.

Если они перешли полностью на использование sing-box, то это в чём то положительное изменение тк точность стала выше, но одновременно и отрицательное, тк маршрутизация с его помощью более ресурсо затратна и помешает работе на слабых роутерах.

Как раз почти год назад переезд на коробку и случился)

Для слабых устройств есть вариант, например, со скрипто getDomains - да, не так удобно, но вполне рабочее решение. А кому надо удобно - всегда можно взять роутер за 3-4к рублей с 256-512МБ ОЗУ, 128МБ ПЗУ и на 820 филоджике

В последний раз когда я пользовался подкопом он поддерживал только .lst списки с одним доменом/подсетью на строку. При этом внешний список с периодическим обновлением можно было задать только на один из двух выходов трафика, при этом второй выход трафика имел меньший приоритет(те нельзя направить трафик во второй выход если он был задан в первом например в автоматически обновляемом списке). При этом какие то 25к подсетей вешали подкоп намертво поскольку он их добавлял правилами маршрутизации по 1 штуке.

Поддержка списков sing-box прямо это позитивное изменение, но я всё равно предпочту сам написать конфиг для sing-box, как я его написал для всех телефонов где он используется и компьютеров.

В отличие от Podkop и ему подобных, этот способ позволяет более точно заворачивать трафик посредством снифинга целевого домена

Вам уже указали на ошибку. Как видите, лучше всё-таки смотреть исходный код проекта перед публикацией статьи на Хабре.

Или даже проще, можно поставить podkop и посмотреть конфиг sing-box и dnsmasq.

Или ещё проще, посмотрите схему работы на картинке: https://podkop.net/docs/fakeip/

А по вашей реализации. Процессор, который сниффает весь трафик - это лёгкий, но не лучший подход для soho-роутера. Тем более вы знаете, что такое FakeIP/FakeDNS.

За рекламу, хоть и такую, спасибо.

Просто совет для тех кому в конфиг sing-box сложно. Бейте секции на отдельные json и делайте merge в один.

Есть ещё вариант как установить momo? Оба варианта из документации не работают. Выдают ошибку скачивания.

Не знаю какого рода у вас проблемы со скачиванием с гитхаба но залил последний релиз с гитхаба на файлообменник https://pixeldrain.com/u/WZE3gYs3

Sign up to leave a comment.

Articles