LINUX.ORG.RU

Редирект за счет DNS для пользователей без VPN

 , ,


0

2

Доброго времени суток!
Стоит задача - завернуть все запросы посредством DNS от пользователей, у которых не установлено VPN-соединение на страницу с инструкцией как этот VPN настроить. Сперва думали сделать редирект на основе локальных сетей. Настроить зону с политикой ответов (RPZ) в bind'e и по всем запросам сделать, чтоб он отвечал определенным IP-адресом, там бы и расспологалась страница. НО, у нас множество ресурсов в наших сетях, прописаных в этом DNS, к которым пользователи должны иметь доступ в обход VPN. Сделано это засчет статических маршрутов, выдаваемых через dhcp, роут имеется к DNS тоже, чтобы пользователи могли к нему обращаться с локальных адресов и он им отвечал локальными IP этих ресурсов. Это нужно, чтоб не нагружать оборудование и разгружать каналы. Вопрос в том, можно ли это вообще сделать посредством DNS или же в связке с ним? Или это можно реализовать за счет другого бесплатного ПО? Или же мы просто толчем воду в ступе? =)


Вы можете завернуть через bind все запросы на один адрес через wildcard (ну и при этом держать рядом нормальную зону, а доступ разграничить через вьюхи), но это так себе затея, как минимум потому что есть еще /etc/hosts и вообще сторонние dns. Если хотите сделать правильно - редиректить нужно на уровне прокси или в целом того узла, который у вас трафик от клиентов выпускает в сеть (интра- или интернет, не зная вашей структуры трудно сказать, но в общем какая-то «точка входа» же у вас есть).

micronekodesu ★★ ()

Стоит задача - завернуть все запросы посредством DNS от пользователей, у которых не установлено VPN-соединение на страницу с инструкцией как этот VPN настроить.

Допустим, что у тебя получилось. Кэш отравлен, ты проиграл.

t184256 ★★★★★ ()
Ответ на: комментарий от micronekodesu

Да, так и предпологалось завернуть все через wildcard, c помощью RPZ создать список для разрешения только пары доменов. От бинда мы уйти не можем поскольку уже используем вьюхи, субдомен за которым сидят IP'ы серверов VPN для каждых подсетей свои, у нас большое географическое разделение, мы просто небольшой провайдер и VPN это и есть у нас выход в мир для наших клиентов и чтобы они к нашим ресурсам не обращались через мир у нас в рекурсивных DNS заведены зоны с локальными IP'ами этих ресурсов и выдаются статические маршруты на уровне DHCP.

Теперь вопрос как паралельно wildcard держать нормальную зону? Как будут распаралеливаться запросы? Или же Вы имели ввиду с помощью вьюх локальным сетям завернуть все запросы на wildcard, а все обращения с сетей VPN уже на нормальную зону? Если так, то мы сейчас и пытаемся избегать такого обращения к DNS, нам нужно чтобы клиенты к нему продолжали обращаться локально, иначе если они начнут к нему обращаться через VPN у нас мало говоря брасы просто ахренеют. Насчет прокси, даже не знаю есть ли такая практика у провайдеров садить всех своих клиентов за проксю, да и использовать мы тогда можем только бесплатный squid

amkgi ()
Ответ на: комментарий от amkgi

Мне кажется, что в этом случае логичнее свои IP перенаправлять на локальные уже на уровне VPN-шлюза (это можно сделать простейшим правилом iptables). То есть с точки зрения клиента IP всегда одинаковые, но физически пакеты ходят по-разному. Иначе будут проблемы с кешем DNS. Кстати, тот же хром имеет свойство кешировать DNS отдельно от системы. И он не единственный же. Так что сбросить кеш DNS и чтобы ничего после этого не глючило - не самая простая задача и 1 командой не решается (кроме команды перезагрузки, но это как-то совсем жёстко). Плюс клиент может захотеть воспользоваться другим DNS (например, гугловский). Решение же с редиректом пакетов на VPN-сервере универсально и покроет все конфигурации.

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от amkgi

Так я не знал что вы провайдер, хотя догадывался.

Раздайте маршруты, в которых внутренние ресурсы всегда доступны через внутренние адреса (то есть не важно поднят vpn или нет, запросы к dns, ЛК, трекерам и что у вас там еще есть идут без выхода в интернеты), все остальное по дефолту идет на какой-то шлюз, который будет вам заглушку показывать (ну например через правило PREROUTING iptables все заворачивать). Когда поднимается vpn - маршрут по умолчанию он меняет на свой гейт, который непосредственно позволяет выходить в интернет. В итоге у вас и с dns ничего городить не нужно, и работает как ожидалось. Единственный минус - клиенты смогут получать «нормальные» ответы от сервера dns даже если интернеты у них не оплачены, но не думаю что это сильно критично.

micronekodesu ★★ ()
Ответ на: комментарий от KivApple

Иначе будут проблемы с кешем DNS. Кстати, тот же хром имеет свойство кешировать DNS отдельно от системы. И он не единственный же.

Дополню. Винда где-то в недрах кэширует по отдельным процессам. Такой эффект можно наблюдать даже просто на двух cmd.exe на первом получили адрес ранее, второй запустили позже. Можно менять dns, выполнять ipconfig /flushdns не помогает, может протухнуть само а может долго и устойчиво держаться.

ТС Присоединяюсь ко всем отписавшимся, идея с dns не просто плохая а очень плохая. КМК даже если вы не сделаете страницу, кол-во звонков в тех.под. по причине клиент забыл включить/настроить vpn будет не сравнимо с количеством звонков «у меня не работает».

anc ★★★★★ ()

Прозрачный сквид на гейте по умолчанию (без vpn) тоже может решить эти проблемы. У моего провайдера так сделано, сквид прозрачный режет все РКН сайты и выдает заглушку, если инет не оплачен.

CeMKa ()