Найкращий метод - через зону політики відповідей у Bind 9.8.1 або новішої версії. Це дозволяє переосмислювати поодинокі записи в довільних зонах (і для цього немає необхідності створювати цілий піддомен; лише один запис, який ви хочете змінити), він дозволяє переосмислювати CNAME та ін. Інші рішення, такі як Unbound, не можуть замінити CNAME .
https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html
EDIT: Давайте тоді зробимо це правильно. Я задокументую те, що я зробив на основі підручника, зв'язаного вище.
Моя ОС є 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 zone, ви можете використовувати тут.
Щоб активувати ці зміни, виконайте ще кілька кроків:
Відредагуйте 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
, а потім перезапустіть Прив’язати ще раз.
Бонус: якщо ви хочете занести запити 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
Якщо ви запускаєте копати на іншій машині, просто використовуйте @ the-ip-address-of-Bind-server замість @ 127.0.0.1
Я використовував цю методику з великим успіхом, щоб замінити CNAME для веб-сайту, над яким я працював, надсилаючи його на новий балансир завантаження AWS, який я тільки тестував. Raspberry Pi був використаний для запуску Bind, а RPi також був налаштований на функцію маршрутизатора WiFi - таким чином, підключивши пристрої до SSID, що працює на RPi, я отримав би перевірки DNS, необхідні для тестування.