Jump to content
  • 0

Неотключаемый перехват DNS-запросов в отдельном сегменте


ValdikSS

Question

Не могу понять, каким образом можно отключить перехват (перенаправление) DNS-запросов на внутренний кеширующий резолвер роутера.

У меня настроен отдельный сегмент сети, в который я подключаюсь через отдельную сеть Wi-Fi. В сегменте установлена отдельная политика доступа, в которую помещён только WireGuard VPN с перенаправлением всего трафика в туннель.

Проблема заключается в том, что все DNS-запросы от клиентов в этом сегменте на любой IP-адрес и порт 53 перенаправляются на внутренний резолвер роутера, на тот IP-адрес, который указан в секции «Профили DNS» раздела «Интернет-фильтр» для интерфейса WireGuard.

Если удалить DNS для интерфейса WireGuard из «Профилей DNS», то DNS на клиентах сегмента перестаёт работать вовсе, независимо от адреса DNS-сервера.

Иными словами, указав какой-то конкретный DNS в настройках подключения WireGuard (он автоматически дублируется в «Профили DNS»), на клиентских машинах возможно использование только этого DNS, причём трафик до него идёт через внутренний резолвер роутера.
Если не указывать никакого DNS в настройках WireGuard, а настроить DNS на компьютерах в сегменте вручную, то DNS-резолв не работает ни на какие адреса.

Изначально у меня был установлен компонент «Фильтрация контента и блокировка рекламы при помощи облачных сервисов», но после его удаления ничего не изменилось.

 

Viva (KN-1910) RU, ОС 3.9.8.

Edited by ValdikSS
  • Upvote 1
Link to comment
Share on other sites

Recommended Posts

  • 0
7 минут назад, ANDYBOND сказал:

Более приоритетной настройкой в тех же профилях DNS является настройка соотношения сетей или даже конкретных зарегистрированных устройств с определённым профилем DNS

У меня нет профилей DNS. Они были раньше (с ними была та же проблема), за них отвечает компонент «Фильтрация контента и блокировка рекламы при помощи облачных сервисов». Сейчас только один, системный.

8 минут назад, ANDYBOND сказал:

В системном профиле транзит разрешён по умолчанию.

Транзит также опция компонента «Фильтрация контента и блокировка рекламы при помощи облачных сервисов». От его включения и выключения ничего не менялось. Сейчас же, после удаления компонента, опции транзита нет, тем не менее, запросы перехватываются.

 

Link to comment
Share on other sites

  • 0
8 минут назад, ANDYBOND сказал:

Даже после перезагрузки маршрутизатора (на примере системного профиля)? Просто бага в том, что перезагрузка нужна, чтоб изменения вступили в силу.

Установил компонент, включил «Публичные DNS-резолверы и настраиваемые профили» в «Режиме фильтрации». Для всех сегментов указан единственный «Системный» профиль DNS, у которого включён транзит.

Результат: в стандартном «домашнем» сегменте всё работает корректно, в сегменте VPN — перехват запросов и перенаправление на VPN-резолвер (который стоит последним в списке системного профиля DNS) через кеширующий резолвер на роутере.

Создал отдельный профиль DNS со включённым транзитом, указал в нём единственный DNS-резолвер, задал сегменту использовать этот профиль, перезагрузил роутер — запросы в VPN-сегменте всё так же перехватываются.

Устройства в VPN-сегменте все незарегистрированные.

Link to comment
Share on other sites

  • 0
6 минут назад, ValdikSS сказал:

Установил компонент, включил «Публичные DNS-резолверы и настраиваемые профили» в «Режиме фильтрации». Для всех сегментов указан единственный «Системный» профиль DNS, у которого включён транзит.

Результат: в стандартном «домашнем» сегменте всё работает корректно, в сегменте VPN — перехват запросов и перенаправление на VPN-резолвер (который стоит последним в списке системного профиля DNS) через кеширующий резолвер на роутере.

Создал отдельный профиль DNS со включённым транзитом, указал в нём единственный DNS-резолвер, задал сегменту использовать этот профиль, перезагрузил роутер — запросы в VPN-сегменте всё так же перехватываются.

Устройства в VPN-сегменте все незарегистрированные.

dns-proxy filter profile DnsProfile0 intercept no enable

Или

dns-proxy intercept no enable

  • Y'r wrong 1
Link to comment
Share on other sites

  • 0
1 минуту назад, ANDYBOND сказал:

В каждом профиле серверы должны быть разные, иначе они (повторяющиеся) будут использоваться для основного (в конкретный момент) подключения.

Как только я удаляю DNS-сервер из стандартного профиля, DNS-резолвинг перестаёт работать в сегменте VPN, независимо от того, что указано в профиле DNS, который я назначаю сегменту VPN.

Я уже и совершенно разные адреса указал, и маршруты через VPN-интерфейс до них прописал — ничего. Единственное изменение только в том, что локальный резолвер теперь мне отвечает REFUSED, вместо просто отсутствия ответа.

Баг я завёл еще вчера, пока никто не ответил, поэтому написал сюда.

Link to comment
Share on other sites

  • 0
1 минуту назад, Denis P сказал:

dns-proxy intercept no enable

Уже установлено.

!
dns-proxy
    rebind-protect auto
    filter profile DnsProfile0 description VPN
    filter profile DnsProfile0 dns53 upstream 8.8.8.8
    filter profile DnsProfile0 dns53 upstream 8.8.4.4
    filter profile DnsProfile0 intercept no enable
    filter assign interface profile Bridge2 DnsProfile0
    filter engine public
!

 

Link to comment
Share on other sites

  • 0
# iptables -t nat -vnL

...
Chain _NDM_HOTSPOT_DNSREDIR (1 references)
...
 1122 70308 REDIRECT   udp  --  br2    *       0.0.0.0/0            0.0.0.0/0            mark match 0xffffd00 PKTTYPE = unicast udp dpt:53 redir ports 41100
    4   208 REDIRECT   tcp  --  br2    *       0.0.0.0/0            0.0.0.0/0            mark match 0xffffd00 PKTTYPE = unicast tcp dpt:53 redir ports 41100

После удаления этих правил всё работает корректно.

Link to comment
Share on other sites

  • 0
5 минут назад, ANDYBOND сказал:

А как указан адрес сервера в VPN (буквенный или числовой)? И о каком протоколе речь?

WireGuard, везде указано IP-адресами.

Link to comment
Share on other sites

  • 0
7 минут назад, ANDYBOND сказал:

https://help.keenetic.com/hc/ru/articles/6179082606994-Дополнительные-DNS-серверы

Иными словами, все DNS используют любой сетевой интерфейс - и тогда ничего не работает как надо. Попробуйте добавить нужные DNS с указанием конкретного интерфейса, который каждый из них может использовать (подробнее по ссылке). На принадлежность профилю это не влияет.

Указать конкретный интерфейс можно только в системном профиле. Запись DNS VPN'а и так указана с интерфейсом, если её удалить — резолвинг в сегменте перестаёт работать.

Интерфейс у резолверов, добавляемых в отдельный профиль DNS, назначить нельзя. Да и вообще, они, похоже, никак не используются: резолвинг идёт только через адрес, прописанный в настройках VPN-подключения, а не где либо еще. Несмотря на то, что у меня заведён отдельный профиль DNS, который назначен сегменту, адреса из профиля банально не используются.

Для теста я указываю 8.8.8.8 и 8.8.4.4, которые доступны через все интерфейсы. Уже пробовал добавлять маршруты до этих адресов через VPN-интерфейс — не помогает.

Проблема в том, что я не могу отключить перехват запросов. Мне вообще в этом сегменте не нужен кеширующий резолвер роутера (и соответствующие настройки на роутере), я бы просто выдавал сторонний адрес через DHCP, и дело с концами.

Edited by ValdikSS
Link to comment
Share on other sites

  • 0
1 минуту назад, ANDYBOND сказал:

Как вариант на сегодня и сейчас: указать гуглевские DNS первым способом (в DHCP сегмента) в статье: https://help.keenetic.com/hc/ru/articles/360011440720

Это также не работает из-за перехвата трафика. Вернее, эти настройки работают ровно так, как и должны: выдают заданный DNS-сервер по DHCP, только перехват от этого не отключается. Независимо от того, какой адрес там указан (может быть и такой, на котором DNS-резолвера вовсе нет), DNS-запросы будут идти через кеширующий резолвер роутера. Посмотрите на правило iptables выше — оно просто перехватывает все запросы на порт 53 UDP/TCP на внутренний резолвер.

Link to comment
Share on other sites

  • 0

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

  • Upvote 1
Link to comment
Share on other sites

  • 0

Перехват трафика должен включаться если задействован один из (любой) режимов фильтрации.
Транзит запросов нужен только в случае включенного перехвата трафика, для того чтобы разрешать имена в адреса через явно указанные на устройствах сервисы.
Система "никуда ничего не посылает", только запрос и только туда куда указано по указанным настройкам. Складируется только в локальный кеш (это нормальное поведение любого резолвера, вести кеш).
Пожалуйста, если вы идите другое поведение, опишите как воспроизвести. Здесь или в обращении в Техническую поддержку.

Link to comment
Share on other sites

  • 0
19 минут назад, corniger сказал:

Пожалуйста, если вы идите другое поведение, опишите как воспроизвести. Здесь или в обращении в Техническую поддержку.

Я пробовал все возможные настройки и не смог отключить перехват DNS. Выключал все возможные фильтры, удалял компонент «Фильтрация контента и блокировка рекламы при помощи облачных сервисов», без которого вообще нет галочки транзита DNS (в надежде, что именно этот компонент перехватывает запросы и сбоит) — без толку.

Обращение в техподдержку завёл до этой темы, отправил selftest. Пока без ответов.

Шаги воспроизведения:

  1. Настроить клиент WireGuard с перенаправлением всего трафика (разрешенные подсети: 0.0.0.0/0), задать в настройках подключения адрес DNS 8.8.8.8
  2. В разделе "приоритеты подключений" создать политику доступа "vpn"
  3. Настроить отдельный сетевой сегмент "vpn", с выделенными сетями Wi-Fi для сегмента, включить в сегменте DHCP и NAT, указать политику "vpn"
  4. Подключаемся к этой сети с незарегистрированного компьютера. Выполняем на компьютере резолв DNS через адрес, на котором нет DNS-резолвера (например, 6.6.6.6): nslookup ya.ru 6.6.6.6

Результат: DNS-ответ успешно возвращается.

Ожидаемый результат: Таймаут DNS-запроса.

 

Link to comment
Share on other sites

  • 0
2 часа назад, corniger сказал:

Перехват трафика должен включаться если задействован один из (любой) режимов фильтрации.
Транзит запросов нужен только в случае включенного перехвата трафика, для того чтобы разрешать имена в адреса через явно указанные на устройствах сервисы.
Система "никуда ничего не посылает", только запрос и только туда куда указано по указанным настройкам. Складируется только в локальный кеш (это нормальное поведение любого резолвера, вести кеш).
Пожалуйста, если вы идите другое поведение, опишите как воспроизвести. Здесь или в обращении в Техническую поддержку.

Днс для политик перехватывается всегда, @Le ecureuil говорил что так и задумано. 

Link to comment
Share on other sites

  • 0
1 минуту назад, ANDYBOND сказал:

А веб-интерфейс просто врёт. Понял.

Не, настройка в веб актуальна только для default политики, и для нее она действительно работает.

Link to comment
Share on other sites

  • 0
4 минуты назад, ANDYBOND сказал:

Действительно нигде не работает в линейке прошивок 3.9.х.

Эта тема подтверждает что работает для политики по умолчанию, но с ньюансами...

 

Edited by r13
Link to comment
Share on other sites

  • 0
8 минут назад, ANDYBOND сказал:

А сообщеия выше с алгоритмами воспроизведения ошибки подтверждают практику и факты, что не работает. Но, ясное дело, фанатизм мешает некоторым принять факты. Была просьба о содействии (а не в фанатизме) - я откликнулся. Бодаться с фанатами - пустая трата времени: они ж фанаты.

Так в первом посте, а так же в тестовом примере и идет речь о том что при использовании политик работает безусловный перехват днс

Edited by r13
Link to comment
Share on other sites

  • 0
Цитата

Добрый день. Удалось выяснить, что для политик перехват не отключается. Сделано специально чтобы не утекли запросы не туда, потому нужно запросы в политику перехватить и отправить на свой, особый экземпляр dns-proxy Я создам идею, чтобы этот функционал был хотя бы управляемым через cli. Спасибо

 

Link to comment
Share on other sites

  • 0

почему-то все успешно забыли про

opkg dns-override

который отключает встроенный dns-proxy и оставляет его только для собственных нужд.

С ним в доп. политиках никакого перехвата нет, такие дела.

Edited by Denis P
Link to comment
Share on other sites

  • 0
28 минут назад, ANDYBOND сказал:

Потому что "все" не используют opkg, а лишь прошивку, и ведут речь именно о функционале штатном, а не о стороннем.

Это не обязательно относится к opkg, перед тем как что-то писать, лучше еще раз подумать. 

Edited by Denis P
  • Y'r wrong 1
Link to comment
Share on other sites

  • 0
В 08.07.2023 в 06:25, ANDYBOND сказал:

В версии 4.0.0 исправлено. Спасибо. Да, изменения вступают в силу только после перезагрузки маршрутизатора, но для меня это некритично. Или интерфейс перезапустить, но этот метод я не практикую: предпочитаю перезагрузку.

Обновился до 4.0.4, у меня ничего не изменилось — как перехватывались запросы, так и продолжают, независимо от галочки «транзит запросов». Устройство перезагружал. Что нужно сделать, чтобы отключить перехват?

Link to comment
Share on other sites

  • 0
38 минут назад, Petrak сказал:

А как вообще проверить перехват? Какие команды для этого нужны?

Например,

nslookup ya.ru 3.3.3.3

Эта команда выполнит лукап ya.ru через резолвер на IP-адресе 3.3.3.3. На этом адресе нет резолвера, при обычной настройке команда должна завершаться с ошибкой. Если же выдаётся IP-адрес домена ya.ru — запрос был перехвачен роутером.

Link to comment
Share on other sites

  • 0
3 часа назад, ANDYBOND сказал:

Эта команда выполнит лукап ya.ru через резолвер на IP-адресе 3.3.3.3. На этом адресе нет резолвера, при обычной настройке команда должна завершаться с ошибкой. Если же выдаётся IP-адрес домена ya.ru — запрос был перехвачен роутером.

А можно как-то проверить перехват dns провайдером или кем-то ещё?

Link to comment
Share on other sites

  • 0
11 минуту назад, ANDYBOND сказал:

Можно. Метод точно тот же.

Т.е в ответ я должен получить ip запрашиваемого сайта, а если он не соответствует то провайдер перехватил. Так да?

Link to comment
Share on other sites

  • 0
1 час назад, ANDYBOND сказал:

Спасибо за статью, а если вас не затруднит, вы не могли бы привести наглядный пример как работает перехват провайдером?

Link to comment
Share on other sites

  • 0
2 минуты назад, Petrak сказал:

Спасибо за статью, а если вас не затруднит, вы не могли бы привести наглядный пример как работает перехват провайдером?

Как это относится к обсуждаемой теме?

Link to comment
Share on other sites

  • 0
В 17.06.2023 в 14:31, Denis P сказал:

почему-то все успешно забыли про

opkg dns-override

который отключает встроенный dns-proxy и оставляет его только для собственных нужд.

С ним в доп. политиках никакого перехвата нет, такие дела.

Вы уверены в корректности своего высказывания?

У меня:

  1. Применён `opkg dns-override`.
  2. Один системный профиль DNS с DoT серверами.
  3. В котором разрешён транзит запросов.
  4. Контентный фильтр выключен.
  5. Компоненты «NextDNS» и «SkyDNS» отключены.

Как только я создаю тестовую политику доступа, закидываю туда одного клиента, то в `iptables-save | grep " 53 "` появляется:

-A _NDM_HOTSPOT_DNSREDIR -i br0 -p udp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m udp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br0 -p tcp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m tcp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p udp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m udp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p tcp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m tcp --dport 53 -j REDIRECT --to-ports 41100

`dns-proxy no intercept enable` сообщает `disable intercept for system profile`, при этом в `show dns-proxy` кроме системного виден ещё один профиль Policy0, у которого:

dns_tcp_port = 41100
dns_udp_port = 41100

Навскидку, есть такой костыль (постоянно портит отбирающие правила), но хотелось бы адекватного поведения из коробки.

Link to comment
Share on other sites

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.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...