Недавно понадобилось заставить DNS при запросе домена с сети отдавать локальный ip сервера, а при запросе с интернета отдавать внешний ip… Приступим…
Создадим две view зоны, одну для интернета и одну для локальной сети, таких зон можно создать n-ое количество, если сетей много, но в моем случае будет две зоны. Допустим локальную зону назовем «internal» и по аналогии внешнюю зону назовем «external».
Открывыаем named.conf и создаем две зоны:
// Локальная зона
view "internal" {
// Разрешаем просматривать домен с данной подсети
match-clients { 192.168.0.0/24; 127.0.0.1/32; };
};
// Для остальных
view "external" {
// Разрешаем просматривать всем
match-clients { any; };
};
Так же чтоб не указывать множество подсетей непосредственно в «match-clients», можно создать список контроля доступа (ACL), перед view зоной указать
acl "internal" {192.168.0.0/24; 127.0.0.1/32;};
где «internal» имя списка которое необходимо указать в «match-clients», например:
view "internal" {
match-clients { "internal"; };
};
Теперь в зоны нужно добавить домен ip которого будет отдаваться клиенту в зависимости от принадлежности к первой или второй зоне… У меня есть домен «sitename.net», я создал две записи домена «sitename.net.int» и «sitename.net.ext», внутри каждого файла указав для зоны «sitename.net.int» локальный ip, а в файле «sitename.net.ext» указал внешний ip.
Ниже пример содержимого файла домена:
// Для локалки
$TTL 3600
sitename.net. IN SOA ns1.dns.net. root.s1.dns.net. (2011100810 10800 3600 604800 86400)
sitename.net. IN NS ns1.dns.net.
sitename.net. IN NS ns2.dns.net.
sitename.net. IN MX 10 mail
sitename.net. IN MX 20 mail
sitename.net. IN A 192.168.0.2
www IN A 192.168.0.2
ftp IN A 192.168.0.2
mail IN A 192.168.0.2
smtp IN A 192.168.0.2
pop IN A 192.168.0.2
sitename.net. IN TXT "v=spf1 ip4:192.168.0.2 a mx ~all"
// Для внешки
$TTL 3600
sitename.net. IN SOA ns1.dns.net. root.s1.dns.net. (2011100810 10800 3600 604800 86400)
sitename.net. IN NS ns1.dns.net.
sitename.net. IN NS ns2.dns.net.
sitename.net. IN MX 10 mail
sitename.net. IN MX 20 mail
sitename.net. IN A 10.10.10.10
www IN A 10.10.10.10
ftp IN A 10.10.10.10
mail IN A 10.10.10.10
smtp IN A 10.10.10.10
pop IN A 10.10.10.10
sitename.net. IN TXT "v=spf1 ip4:10.10.10.10 a mx ~all"
После всех действий перезагружаем bind и в результате у нас должно получится следующее… При запросе домена sitename.net из подсети 192.168.0.0/24 клиенту будет отдаваться локальный ip сервера, тоесть 192.168.0.2, а при запросе домена из других сетей тоесть интернета, клиент будет получать ip 10.10.10.10 (пример). Всем хорошего коннекта….
Enjoy…
13,891 всего просмотров, 3 за сегодня