Как стать автором
Обновить

Выборочный роутинг по доменным именам на маршрутизаторах Keenetic

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров20K
Всего голосов 11: ↑11 и ↓0+14
Комментарии16

Комментарии 16

Разве то же самое не делает opkg пакет kvas?

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

Ну и в целом, мне было интереснее разобраться, как это работает, чем просто взять готовое решение.

Кстати, спасибо за статью. Это дает чуть большее понимание, как работает связка dnsmasq + ipset. Смотрю в сторону kvas для домашнего маршрутизатора, но мне не нравится именно то, что не используются системные dns, которые видно явно и нет необходимости в ручном рестарте сервиса при их изменении.

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

Довольно сумбурно написано. Перевожу кратко:
на (домашнем) роутере ставится кэширующий днс (dnsmasq) и результаты резолва для определённых доменов он не только отдаёт клиентам, а ещё и складывает в специальный список в ядре линукса (ipset). В дальнейшем, файрвол (netfilter в ядре линукса) роутера сравнивает ip назначения исходящего трафика с этим списком и если находит совпадение, то направляет этот трафик через отдельный интерфейс (поднятый впн).

Прикольная связка двух казалось бы несоединимых процессов - резолв и роутинг. Спасибо dnsmasq.
Можно использовать не только на кинетике, а везде где есть dnsmasq+netfilter.

Отличный краткий пересказ, спасибо! :)

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

Как посоветуете быть, если статический внешний адрес выдается провайдером по dhcp и если отключаешь dhcp, в т.ч. настройки dns и прописываешь те же самые настройки ручками, то работать подключение отказывается.

Кто знает как сделать чтобы при доступе к ресурсу если не 200 или 302 код в ответе скрипт бы перекидывал в ВПН канал траффик. Может быть есть готовые решения. Не привязываясь к кинетику у меня другой роутер.

Чувствует моя душа что наконец-то мы близко к статье о частичной маршрутизации на стандартной прошивке asus роутера. То там сейчас можно или полностью трафик пустить или конкретных машин. Жду больше года уже )

Поддержу :) Но мне кажется на стандартной прошивке Asus тут уже не выехать. У неё (в моей версии) из доступных протоколов OpenVPN и WG недавно стали блокироваться провайдером, a вариантов с IPSec или Amnezia нету

"в случае падения туннеля я не хочу остаться без интернета"

Можно вместо server=1.1.1.1@nwg0 использовать server=1.1.1.1 и отдельно настроить на кинетике маршрутизацию для 1.1.1.1, сняв галочку "эксклюзивный маршрут"

Способ рабочий, но в случае отказа флешки с Entware я тоже не хочу остаться без интернета :)

Хорошая идея! Применил у себя. За флешку с entware не переживаю - встроенной флехи достаточно.

В гите, на базе чего похоже сделан пост, некоторые моменты яснее

https://github.com/Sharm/keenetic-domain-routing/blob/master/VPN.md

в частности строка

iptables -t mangle -A OUTPUT -p udp -d 8.8.8.8 --dport 53 -j DOMAIN_VPN

упущена, хотя в описании в тексте про это есть

Спасибо за наводку, некоторые моменты стали понятнее.

В целом, рабочая схема выглядит так: используем в качестве единственного резолвера dnsmasq, который смотрит в серверы Google через статический маршрут, нацеленный в туннель. Получаем чистый резолв без вмешательств РКН.

Если туннель падает, то резолв санкционки будет грязный - но это нестрашно, ведь всё равно туннеля нет.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации