Автор Тема: Перенаправление DNS  (Прочитано 8540 раз)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Перенаправление DNS
« : 25.10.2016 08:30:04 »
Всем привет!

Подскажите, возможно ли такое...

Фильтр SkyDNS через DNS. В локальной сети работает свой DNS. Если запросы слать сначала на локальный DNS, а потом уже на DNS от SkyDNS, то нет возможности применять профили для каждой машины отдельно. Если же слать запросы в обход локального DNS, то все локальные ресурсы сходят на нет, но зато можно применять профили.

Вопрос: можно ли написать правило iptables таким образом, чтобы локальные запросы шли на локальный DNS, а запросы в Интернет уходили на DNS от SkyDNS ?

На сайте SkyDNS много разных инструкций есть, но именно такой вариант не рассматривается. Подозреваю, что так не получится...

Заранее спасибо.
Сноси Винду, переходи на Линукс ! :)

Оффлайн sirares

  • Давно тут
  • **
  • Сообщений: 194
Re: Перенаправление DNS
« Ответ #1 : 25.10.2016 09:30:32 »
А что если сделать фильтрующий прокси, который бы перенаправлял нужный диапазон адресов на локальный DNS, вернее два фильтруюших прокси - второй перенаправлял на внешний DNS - своеобразный "фильтр нижних и высоких частот" выделяющий нужные полосы. Это не решение, а предположение...
Посмотрите privoxy. У них есть версия для Debian...
P.S. Да я уже нашел что и в ALT есть.
« Последнее редактирование: 25.10.2016 09:41:33 от sirares »

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 999
Re: Перенаправление DNS
« Ответ #2 : 25.10.2016 09:38:51 »
Посмотрите privoxy, у них есть версия для Debian.
Внезапно https://packages.altlinux.org/ru/Sisyphus/srpms/privoxy

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: Перенаправление DNS
« Ответ #3 : 25.10.2016 09:54:36 »
Вроде помогли такие правила:
iptables -t nat -A PREROUTING ! -d 192.168.1.2 -p udp --dport 53 -j DNAT --to-destination 193.58.251.251:1253
iptables -t nat -A PREROUTING ! -d 192.168.1.2 -p tcp --dport 53 -j DNAT --to-destination 193.58.251.251:1253

192.168.1.2 - адрес локального сервера

У них через модуль в Zyxel Keenetic можно профили настраивать, через прокси неудобно :-)
Но можно, только в настройках прокси нужно указать их DNS вместо локального, и опять же тогда не будут работать локальные ресурсы. И профили не получится применять, будет для всех применяться профиль сервера.
« Последнее редактирование: 25.10.2016 09:58:12 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Перенаправление DNS
« Ответ #4 : 25.10.2016 09:57:53 »
Не знаю, как профили SkyDNS работают...
А что если попробовать маркировать пакеты в зависимости от ip источника до входа на локальный DNS, а после перенаправления на внешний фильтровать по маркеру и заворачивать в нужном направлении?

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: Перенаправление DNS
« Ответ #5 : 25.10.2016 10:58:13 »
В общем не взлетело... показалось.

Не знаю, как профили SkyDNS работают...
Фильтрация на основе DNS-сервера.
Суть такая, можно на каждом компьютере прописать их DNS или раздать по DHCP этот DNS, или же на шлюзе на внешнем интерфейсе прописать их DNS. Так вот, последний вариант будет фильтровать все машины, нельзя для отдельной машины вкл/выкл фильтрацию или применить для неё профиль, потому что запрос на их DNS поступает с сервера и применяется профиль сервера, такая же история и с прокси. В первых двух вариантах запрос уйдёт сразу на их DNS и тогда можно применять профили и т.д.
Как они пишут на сайте между клиентом и их DNS не должно быть никаких DNS, прокси, роутеров, иначе не будет работать.
Убедитесь, что в вашей локальной сети не используется прокси-сервер, кэширующий DNS или Active Directory, т.к. в этом случае запросы DNS на роутер Zyxel Keenetic приходят с MAC-адреса используемого сервера и применяется профиль фильтрации, назначенный серверу.
Но я не могу лишиться локального DNS !
А что если попробовать маркировать пакеты в зависимости от ip источника до входа на локальный DNS, а после перенаправления на внешний фильтровать по маркеру и заворачивать в нужном направлении
Как это сделать ?

Здесь https://www.skydns.ru/guides/implementation предлагают делить пользователей на группы и для каждой группы использовать свой локальный DNS-сервер.
Естественно для Windows у них есть "Агент SkyDNS". Но честно, мне такой подход не нравится, хотелось бы всё настроить централизованно, на шлюзе.
« Последнее редактирование: 25.10.2016 11:18:22 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Перенаправление DNS
« Ответ #6 : 25.10.2016 11:24:37 »
Фильтрация на основе DNS-сервера.
Я думал, SkyDNS может разный результат давать.
Как они пишут на сайте между клиентом и их DNS не должно быть никаких DNS, прокси, роутеров, иначе не будет работать.
Это смотря как настроить.
Здесь https://www.skydns.ru/guides/implementation предлагают делить пользователей на группы и для каждой группы использовать свой локальный DNS-сервер.
Это вариант.

Я предлагаю другой вариант. Если я правильно понимаю, все пакеты сначала идут на внутренний DNS-сервер, оттуда неразрешенные запросы перенаправляются на SkyDNS. В этом случае на локальном DNS-сервере в таблице Prerouting по маске (кого не надо фильтровать) маркируем пакеты. Потом из таблицы Postrouting забираем промаркированные пакеты и перенаправляенм их на другой внешний DNS-сервер (гугл, яндекс etc.).

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Перенаправление DNS
« Ответ #7 : 25.10.2016 11:55:51 »
Есть еще вариант. Если внутренний DNS-сервер не перенаправляет запросы, то еще проще. Такая цепочка правил:
разрешить всем DNS-сервер:порт-dns
разрешить избранным любой сервер: порт-dns
перенаправить все исходящие с целью порт-dns на SkyDNS  сервер:порт.

При этом на dhcp можно спокойно всем выдавать первым вариантом внутренний dns, а вторым, третьим... внешние.

Идея понятна?

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: Перенаправление DNS
« Ответ #8 : 25.10.2016 15:29:57 »
Если я правильно понимаю, все пакеты сначала идут на внутренний DNS-сервер
Да. Точнее клиентам по DHCP передаётся локальный DNS.

оттуда неразрешенные запросы перенаправляются на SkyDNS
Все запросы идут на SkyDNS, фильтруются на их DNS-сервере.

В этом случае на локальном DNS-сервере в таблице Prerouting по маске (кого не надо фильтровать) маркируем пакеты. Потом из таблицы Postrouting забираем промаркированные пакеты и перенаправляенм их на другой внешний DNS-сервер (гугл, яндекс etc.).
Если я правильно понял, то в итоге всё равно сервер будет инициировать отправку и снова будет применяться профиль сервера.

разрешить всем DNS-сервер:порт-dns
разрешить избранным любой сервер: порт-dns
перенаправить все исходящие с целью порт-dns на SkyDNS  сервер:порт.
То есть предлагаете к профилям вообще не подвязываться, а посылать на SkyDNS всех кого наоборот нужно фильтровать ? Например:
iptables -t nat -A PREROUTING -s 192.168.1.10-20 -p udp --dport 53 -j DNAT --to-destination 193.58.251.251:53
iptables -t nat -A PREROUTING -s 192.168.1.10-20 -p tcp --dport 53 -j DNAT --to-destination 193.58.251.251:53

Интересно бы конечно с профилями наладить... напишу им в техподдержку, наверно, может чего путного подскажут.
Сноси Винду, переходи на Линукс ! :)

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Перенаправление DNS
« Ответ #9 : 25.10.2016 18:38:10 »
Если я правильно понимаю, все пакеты сначала идут на внутренний DNS-сервер
Да. Точнее клиентам по DHCP передаётся локальный DNS.

оттуда неразрешенные запросы перенаправляются на SkyDNS
Все запросы идут на SkyDNS, фильтруются на их DNS-сервере.

В этом случае на локальном DNS-сервере в таблице Prerouting по маске (кого не надо фильтровать) маркируем пакеты. Потом из таблицы Postrouting забираем промаркированные пакеты и перенаправляенм их на другой внешний DNS-сервер (гугл, яндекс etc.).
Если я правильно понял, то в итоге всё равно сервер будет инициировать отправку и снова будет применяться профиль сервера.
Тут основной вопрос: в каком режиме Ваш DNS-сервер работает. Если просто пересылает пакеты с неразрешенными запросами - то их перехватить на выходе можно. А если кэширует получаемые ответы, то тут правила фаервола не помогут. Нужно либо его тоньше настраивать, если это ,вообще, возможно (но тут я Вам ничем не помогу, с таким не связывался ниразу), либо схему сети несколько изменить.


То есть предлагаете к профилям вообще не подвязываться, а посылать на SkyDNS всех кого наоборот нужно фильтровать ? Например:
Да, это самый простой вариант. Но он сам по себе работать не будет. Выше должно стоять правило, разрешающее всем локальный днс-сервер, в Вашем днс-сервере не должно быть включено использование днс верхнего уровня, а по dhcp выдавать нужно не только локальный, но и внешний днс: Вашего провайдера, либо общедоступный.

Интересно бы конечно с профилями наладить...
Я так и не понял, о каких профилях идет речь. Это группы в домене? Или что это?

В первом сообщении, как мне показалось, вы акцент на ip делали... Вот я Вам под фильтрацию по ip 2 принципиальных схемы и предложил. Обе рабочие, но при определенной конфигурации локальной сети.
« Последнее редактирование: 25.10.2016 18:42:13 от Dmytro »

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: Перенаправление DNS
« Ответ #10 : 25.10.2016 19:50:45 »
в каком режиме Ваш DNS-сервер работает
bind, настройки по умолчанию.
Я так и не понял, о каких профилях идет речь. Это группы в домене? Или что это?
https://www.skydns.ru/guides/profiles
Сноси Винду, переходи на Линукс ! :)

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Перенаправление DNS
« Ответ #11 : 25.10.2016 21:45:41 »
По поводу профилей... Похоже, что их клиент vpn-тонель поднимает. Если они согласятся на соединение без помощи их клиента и скажут, при помощи чего соединяться, то вариант.

На вскидку могу предложить другой. Отключить форвардинг запросов на Вашем DNS-сервере, а по dhcp выдавать 2 адреса: Ваш и SkyDns. Тогда и зоны локальная зона будет работать и профили. И с фаерволом заморачиваться не придется.

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: Перенаправление DNS
« Ответ #12 : 26.10.2016 09:27:41 »
Похоже, что их клиент vpn-тонель поднимает.
Да. Это делает модуль SkyDNS в Zyxel Keenetic.
Отключить форвардинг запросов на Вашем DNS-сервере
Не подскажете, как это сделать ?

Я сейчас вручную на клиенте прописал настройки сети и в них указал два DNS, первичным сделал свой (локальный), а вторичным - SkyDNS. Пока работает как надо: и не фильтрует мою машину, и к локальным ресурсам могу обратиться по имени. Может bind по умолчанию настроен как вы говорите ?..
« Последнее редактирование: 26.10.2016 09:29:41 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: Перенаправление DNS
« Ответ #13 : 26.10.2016 09:41:00 »
Сейчас вот так форвардинг описан в настройках bind:
# Generated by resolvconf
forward first;
forwarders {
193.58.251.251;
};
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: Перенаправление DNS
« Ответ #14 : 26.10.2016 11:06:35 »
forwarders {
193.58.251.251;
};
Не могу понять, как сюда попадает этот адрес.
Убрал везде в /etc/net/ifaces/*/resolv.conf все упоминания об этот адресе и выполнил:
recolvconf -u
service bind restart
Но адрес всё равно попадает в конфиг.

Если его убрать, вроде, начинает работать как надо.
Сноси Винду, переходи на Линукс ! :)