Назад | Перейти на главную страницу

Может ли BIND изменить ответ на основе запрашиваемого IP-адреса?

Привет, сервервина,

Я работаю в больнице, которые настроили свою сеть, используя 192.168.0.0/23 (до моего приезда). Мы хотим, чтобы ноутбуки и мобильные клиенты подключались из удаленных мест с помощью VPN, но больничная сеть очень сильно конфликтует с большинством домашних маршрутизаторов. Я оказывал давление на руководство, чтобы дать нам время изменить его, но, поскольку я больница с серверами, оборудованием и т. Д. Повсюду, это было невозможно организовать. Таким образом, мы «устранили» проблему, используя коэффициент 1: 1 10.22.0.0/23.

Проблема: Клиенты могут без проблем подключаться и получать доступ к ресурсам, используя IP-адреса 10.22.0.0/23, но если они запрашивают DNS-сервер, они получают ответы 192.168.0.0/23. Есть ли верный способ в BIND перевести их на лету на адреса 10.22.0.0/23, если запрос исходит из подсети VPN? Акцент на правильности, поскольку у меня он работает через представления BIND, используя в cron следующее:

sed -e 's/192.168.0./10.22.0./' -e 's/192.168.1./10.22.1./' /var/lib/bind/db.company.local > /var/lib/bind/db.company.local.ext && /usr/sbin/rndc reload company.local in extView

Это отлично работает, но задерживается на 15–20 минут из-за того, что журналу BIND требуется примерно 15 минут для обратной записи в файл db.company.local.

Я немного читал о RPZ, но информация кажется нечеткой. Может кто-то указать мне верное направление? Если нет, можете ли вы сделать мое решение более элегантным?

РЕДАКТИРОВАТЬ: Я просто хочу прояснить, что я уже использую представления BIND, но я делаю это с двумя зонами. Я генерирую свою вторую зону из первой, отправляю ее через sed для изменения IP-адресов и выполняю перезагрузку rndc для этой зоны в этом представлении. Это имеет большую задержку, есть ли способ использовать один и тот же файл зоны в обоих представлениях и изменить ответ DNS во время запроса?

Спасибо!

да, вы можете сделать это с помощью видов привязки:

http://www.zytrax.com/books/dns/ch7/view.html

По сути, вы определяете каждое представление как подсеть, а затем каждое представление поддерживает свой собственный файл зоны. в зависимости от IP / подсети источника запроса DNS вы получите другое "представление".

это обычное дело для серверов имен для использования во "внутренних" / "внешних" представлениях, так как имена DNS разрешаются публично во внешнем представлении, но разрешают "внутренний" частный IP-адрес хоста во внутренней локальной сети при запросе из внутреннего частный (ые) LAN (ы).

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

Допустим, у вас есть записи, которые выглядят так:

$ORIGIN db.company.local.net.
test1   IN A 10.22.0.1
test2   IN A 10.22.1.255

В параметрах представления для представления 192space определите следующую политику ответа:

options {
    response-policy { zone "192remap.rpz"; };
}

zone "192remap.rpz" {
    type master;
    file "192remap.rpz.zone";
};

Политика ответа будет использоваться для перезаписи всех IP-адресов 10space на 192space. Это похоже на любой другой файл зоны, но записи NS не имеют смысла, а записи имеют особое значение. Поскольку записывать каждое переназначение IP-адресов вручную было бы утомительно, мы будем использовать $GENERATE блоки для заполнения файла зоны за вас.

@            IN    SOA  localhost. root.localhost.  (
                      2   ; serial 
                      3H  ; refresh 
                      1H  ; retry 
                      1W  ; expiry 
                      1H) ; minimum 

             IN    NS    localhost.

; 32.$.0.22.10.rpz-ip. -> 10.22.0.$/32
$GENERATE 0 255 32.$.0.22.10.rpz-ip. A 192.168.0.$
$GENERATE 0 255 32.$.1.22.10.rpz-ip. A 192.168.1.$

Это не только переназначит любой из этих IP-адресов 10.22.0.0/23, найденных в разделе ANSWER ответа DNS, но также перехватит любые скрытые IP-адреса, которые по какой-либо причине отображаются в разделах AUTHORITY или ADDITIONAL. Запрос на test1.db.company.local.net. Ответ (10.22.0.1) должен быть переписан на 192.168.0.1, и только для клиентов, обращающихся к вашему представлению 192space.

Надеюсь, это поможет, и сообщите нам, работает ли это. Вы можете найти дополнительную информацию о RPZ и ссылки на документацию в другой ответ Я написал несколько месяцев назад.