Лучший способ - через зону политики ответа в Bind 9.8.1 или новее. Он позволяет вам переопределять отдельные записи в произвольных зонах (и для этого не нужно создавать целый поддомен, только одну запись, которую вы хотите изменить), он позволяет переопределять CNAME и т. Д. Другие решения, такие как Unbound, не могут переопределять CNAME. ,
https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html
РЕДАКТИРОВАТЬ: Давайте сделаем это правильно тогда. Я задокументирую то, что я сделал, основываясь на учебнике, указанном выше.
Моя ОС - Raspbian 4.4 для Raspberry Pi, но метод должен работать без изменений в Debian и Ubuntu или с минимальными изменениями на других платформах.
Перейдите туда, где хранятся ваши файлы конфигурации Bind в вашей системе - здесь он находится /etc/bind
. Создайте там файл db.rpz
с таким содержимым:
$TTL 60
@ IN SOA localhost. root.localhost. (
2015112501 ; serial
1h ; refresh
30m ; retry
1w ; expiry
30m) ; minimum
IN NS localhost.
localhost A 127.0.0.1
www.some-website.com A 127.0.0.1
www.other-website.com CNAME fake-hostname.com.
Что оно делает?
- он переопределяет IP-адрес
www.some-website.com
с помощью поддельного адреса 127.0.0.1
, эффективно отправляя весь трафик для этого сайта на адрес обратной связи
- он отправляет трафик на
www.other-website.com
другой сайт под названиемfake-hostname.com
Все, что можно поместить в файл зоны Bind, вы можете использовать здесь.
Для активации этих изменений есть еще несколько шагов:
Отредактируйте named.conf.local
и добавьте этот раздел:
zone "rpz" {
type master;
file "/etc/bind/db.rpz";
};
В приведенном выше руководстве рассказывается о том, как добавить больше материала, zone "rpz" { }
но в простых установках это не нужно - я показал здесь минимум, чтобы заставить его работать на вашем локальном преобразователе.
Отредактируйте named.conf.options
и где-нибудь в options { }
разделе добавьте response-policy
опцию:
options {
// bunch
// of
// stuff
// please
// ignore
response-policy { zone "rpz"; };
}
Теперь перезапустите Bind:
service bind9 restart
Вот и все. Сервер имен должен начать переопределять эти записи сейчас.
Если вам нужно внести изменения, просто отредактируйте db.rpz
, а затем перезапустите Bind снова.
Бонус: если вы хотите регистрировать DNS-запросы в системном журнале, чтобы вы могли следить за ходом работы, отредактируйте named.conf.local
и убедитесь, что есть logging
раздел, который включает эти утверждения:
logging {
// stuff
// already
// there
channel my_syslog {
syslog daemon;
severity info;
};
category queries { my_syslog; };
};
Перезапустите Bind снова и все.
Проверьте это на машине, на которой запущен Bind:
dig @127.0.0.1 www.other-website.com. any
Если вы запускаете dig на другом компьютере, просто используйте @ the-ip-address-of-Bind-server вместо @ 127.0.0.1
Я с большим успехом использовал эту технику, чтобы переопределить CNAME для веб-сайта, над которым я работал, и отправить его на новый балансировщик нагрузки AWS, который я только что тестировал. Raspberry Pi использовался для запуска Bind, а RPi также был настроен для работы в качестве маршрутизатора WiFi - поэтому, подключая устройства к SSID, работающему на RPi, я получал переопределения DNS, необходимые для тестирования.