TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
ITDog

16 May 2025, 14:28

Открыть в Telegram Поделиться Пожаловаться

Почему Podkop использует Sing-box для направления трафика, а не Dnsmasq + nftables sets

Сначала чутка дедовых историй. Помните Getdomains? Это скрипт настраивающий OpenWrt на "точечную маршрутизацию" по списку доменов. Я его написал, потому что два года назад десяток людей в чате попросили автоматизировать развёртывание этих настроек на роутере, и чтобы без Ansible! 😣 Скрипт набрал популярность. Думаю, из-за его простоты и чёткого выполнения своей задачи. Мы его допиливали по необходимости, но всё равно не хватало гибкости, более удобного управления и, конечно же, веб-интерфейса.

Прошлым летом, имея за плечами фидбэк от нескольких тысяч людей и с пониманием, что именно нужно, я начал делать Podkop. Начал с той же схемы, что и у Getdomains: Dnsmasq + nftables sets. Но она имеет свои недостатки:

1. Добавление IP-адресов CDN-сервисов в список, который уходит в VPN/Proxy.

Мне въелся в память пример: сходили к ChatGPT (который за Cloudflare), IP-адреса добавились, игра Escape from Tarkov лагает 🤷‍♂️ потому что у них что-то тоже находится за Cloudflare и частично пошло через VPN/Proxy.
В общем, то что должно было не ходить в туннель, пошло в него и получили проблемы. Это лишь один пример, в чате проблемы с CF всплывали стабильно несколько раз в неделю.

2. Если одна точка выхода не устраивает и нужно две, три и более, то возникают сложности с разруливанием между ними по доменам.

Разделить по подсетям/IP-адресам не составляет труда, а когда доходит до доменов, получается каша. Это особенно становится заметно, когда вы используете два сервиса одной компании, отправляя их в разные "точки выхода". Я пытался костылить, жонглировать приоритетом правил в nftables, но по итогу всё равно получалось 💩

3. Есть ещё несколько приятных вещей, которые позволяют делать Sing-box/Xray. И настройка логики в целом проще: просто раскидываешь всё по тегам, и оно работает.

FakeIP

Со схемы dnsmasq+sets хоть и было болезненно уходить, но это необходимо для развития. Зимой я переписал логику управления трафиком на sniffing через Sing-box. А для снижения нагрузки на CPU роутера была выбрана схема FakeIP. В этом случае ядро Sing-box перегоняет через себя не весь трафик, а только часть, ту самую часть со списком доменов. Вместе с технологией ядра Linux tproxy получаем высокое быстродействие и ещё более "точечную маршрутизацию" без каши. При этом всём с низкой нагрузкой на CPU, потому что не гоним весь трафик через Sing-box.

Тут я хочу поблагодарить наше комьюнити: один пытливый ум откапал эту схему и настроил у себя, потом подтянулось ещё два умных человека и развили эту тему. А дальше уже все подхватили и пошло-поехало. По итогу имеем несколько мануалов по ручной настройке FakeIP/FakeDNS, скрипты для Sing-box/Xray и продукт, который базируется на FakeIP.

Плюсы, надеюсь, понятны. Теперь про минусы:
1. Нужно использовать Sing-box в качестве DNS-сервера. Что плохого, ведь он умеет в DoH, DoT и больше не нужны сторонние программы?

Он должен быть единственным сервером в /etc/config/dhcp, и если по какой-то причине вы сломали Sing-box, то DNS на клиентах вместе с ним пропадает. На самом деле та же самая петрушка, что и со Stubby и подобными: сбилось время? Досвидос 🙋‍♂️ Но Sing-box легче ломается, потому что в нём не только настройки DNS. Это слабое место. Поэтому я сделал обвязку, которая решает эту проблему.

2. Sing-box в OpenWrt весит около 12MB. Роутеры с маленьким количеством флешки грустят без Sing-box/Xray. Но с наличием на рынке Xiaomi AX3000T за 2300р жалобы не принимаются 🙅‍♂️ На самом деле и с маленькими флешками есть варианты, хоть и придётся поднапрячься.

Минусы больше натянутые. Купить нормальный роутер сейчас трудности не составляет и по кошельку не ударит. А перевести домашних клиентов на DNS-сервер роутера - это хорошая практика, даже без использования FakeIP.

14.4k 2 105 105 354
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot