Настройка geoDNS с помощью powerDNS

geoDNS — это возможность предоставления для клиентов из разных регионов/стран различных ДНС записей.
С помощью geodns можно организовать свою CDN, либо бороться с DDOS-атакой.
В PowerDNS этот функционал предоставляет модуль geo.

Установим PowerDNS и модуль geo из репозитория epel:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install pdns pdns-backend-geo

Переименуем конфигурационный файл PowerDNS поставляющийся вместе с пакетом:
cd /etc/pdns/
mv pdns.conf pdns.conf.rpmsave

Создадим свою версию конфигурационного файла pdns.conf:
#cat pdns.conf
setuid=pdns
setgid=pdns
launch=geo,bind #мы будем использовать модуль geo для обработки geo-зон, остальные зоны будем хранить в виде bind-файлов
bind-config=/etc/pdns/bindbackend.conf #конфигурационный файл bind-модуля
query-cache-ttl=0 #необходимо обязательно отключить кэширование, иначе пользователи из разных стран будут получать ip-адреса из кэша, а не на основании ip
cache-ttl=0 #
geo-zone=www.firefly.by #домен который будет обрабатываться с помощью модуля geo
geo-zone=firefly.by
geo-soa-values=ns0.firefly.by,admin.firefly.by # soa-запись для доменов обслуживаемых модулем geo
geo-ns-records=ns0.firefly.by,ns1.firefly.by #ns записи для доменов обслуживаемых модулем geo
geo-ip-map-zonefile=/etc/pdns/countries/zz.countries.nerd.dk.rbldnsd #файл содержащий информацию по принадлежности ip адресов к странам.
geo-maps=/etc/pdns/geo-maps #директория в которой хранятся "карты" geo-зон

Создаем необходимые каталоги:
cd /etc/pdns/
mkdir geo-maps countries bindzone

Скачиваем файл с информацией по соответствию IP адресов странам (рекомендую добавить эту команду в cron, для ежедневного обновления списка ip-адресов):
rsync -qt rsync://countries-ns.mdc.dk/zone/zz.countries.nerd.dk.rbldnsd /etc/pdns/countries/

Создаем конфигурационный файл модуля bind /etc/pdns/bindbackend.conf:
options {
directory "/etc/pdns/bindzone";
};

zone "firefly.by" {
type master;
file "firefly.by.zone";
};

Создаем файл-описание «статических» записей домена
#cat bindzone/firefly.by.zone
firefly.by. 84600 IN SOA ns0.firefly.by. admin.firefly.by. (
2014020101 ; serial
21600 ; refresh (6 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
300 ; minimum (1 hour)
)
NS ns0.firefly.by.
NS ns1.firefly.by.
MX 10 mail.firefly.by.
mail A 111.222.222.222
by.geo A 1.2.3.4
com.geo A 1.2.2.2
ru.geo A 1.3.3.3

Создаем «карты» для ответов по региональному принципу:
#cat geo-maps/www.firefly.by
$RECORD www.firefly.by.
$ORIGIN geo.firefly.by.
# The Belarus
112 by
643 ru
# Default
0 com

#cat geo-maps/firefly.by
$RECORD firefly.by.
$ORIGIN geo.firefly.by.
# The belarus
112 by
643 ru
#default
0 com

Если запрос к ДНС серверу посылает пользователь из Беларуси, то ему будет возращена CNAME запись by.geo.firefly.by, россиянамru.geo.firefly.by, а всем остальным — com.geo.firefly.by.
Посмотреть цифровой код (ISO 3166-1) страны можно в wikipedia

После этого запускаем PowerDNS и добавляем его в автозагрузку:
/etc/init.d/pdns start
chkconfig pdns on

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий