Установка вторичного сервера имён на Amazon EC2 бесплатно

в 14:13, , рубрики: Amazon EC2, Amazon Web Services, BIND, DNS, vps/vds, хостинг, метки: , , , ,

По мере роста количества доменов, размещённых на моём сервера на Hetzner, меня всё чаще стала посещать мысль об использовании своего собственного dns-сервера вместо серверов имён провайдера.

Среди плюсов подобного решения—гибкость, удобство и экономия (правда небольшая), в среди минусов—низкая надёжность, ибо если ложится сервер то ложатся и зоны со всеми соответствующими последствиями не только для самого сервера но и для всех сторонних сайтов, чьи зоны вы хостите.

Ну а поскольку на сервере кроме dns работает ещё стопицот разных сервисов, да и руки у меня растут хотя и выше одного места, но всё же не слишком уж высоко, то сервер у меня ложится пару раз в год точно. :( Выход, разумеется, в организации физически отдельного вторичного сервера имён (что собственно и предусмотрено технологией dns).

В этой статье я хочу рассмотреть организацию такого сервера на базе облачного сервиса Amazon EC2, учитывая что всем новым аккаунтам Amazon позволяет год работать бесплатно (для micro-экземпляров):

Установка вторичного сервера имён на Amazon EC2 бесплатно

Поехали!

1. Нажимаем на копку «Get Started for Free» и регистрируемся на Amazon AWS. (В процессе придётся вести данные кредитки и принять телефонный звонок от Amazon чтобы ввести с телефона pin-код.) Через небольшое время на почту придёт подтверждение регистрации с подтверждением бесплатного года использования сервиса:

Установка вторичного сервера имён на Amazon EC2 бесплатно

2. Заходим в консоль управления экземплярами Amazon EC2 в раздел «Instances» и нажимаем там кнопку «Launch Instance»:

Установка вторичного сервера имён на Amazon EC2 бесплатно

В следующем диалоге удобно будет сразу же поставить галку «Free tier only» чтобы не смущаться платными образами:

Установка вторичного сервера имён на Amazon EC2 бесплатно

Я выбрал для установки образ Red Hat Enterprise Linux 6.4, 64-битная версия, чего и вам рекомендую (дальнейшая инструкция будет именно об этом дистрибутиве).

При запуске экземпляра Amazon EC2 предложит создать новую пару ключей (key pair)—соглашайтесь и скачивайте её на свой компьютер—она понадобится вам для подключения к экземпляру по ssh.

Кликнув мышкой на появившийся в списке «Instances» только что созданный экземпляр, найдите в его описании (Description) его внешний ip-адрес (Public IP) и скопируйте его себе на компьютер.

Дальше нам потребуется страница «Security Groups», в которой нужно встать на группу с названием типа «launch-wizard» (если что, группа безопасности экземпляра указана на той же вкладке «Description» что и его ip-адрес) и добавить там на вкладке «Inbound» новое правило под названием DNS:

Установка вторичного сервера имён на Amazon EC2 бесплатно

Таким образом мы открываем порт 53 для входящих запросов к нашему dns-серверу. После добавления не забудьте нажать на кнопку «Apply Rule Changes».

На этом консоль управления EC2 можно закрыть, она нам больше не понадобится.

3. Логинимся на сервер по ssh, используя команду ssh -i key-pair-file.pem ec2-user@ip, где key-pair-file.pm—имя файла с ключами который мы скачали при создании экземпляра, а ip—его внешний ip-адрес который мы скопировали выше.

Посмотрим, что нам тут бог послал? 600 метров RAM, 6 гигов диска, своп-файла нет… Негусто, зато бесплатно, да и для нашей цели вполне хватит. :) Переходим в режим суперпользователя:

sudo su

Для начала стоит обновить систему:

yum update -y

Затем установим dns-сервер:

yum install bind bind-utils -y

4. Настраиваем bind, редактируя его конфиг /etc/named.conf.

В случае slave-сервера секция options у нас может выглядеть так:

options {
	#listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory	"/var/named";
        dump-file	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query { any; };
        recursion no;
        allow-notify { тут ip-адрес вашего экземпляра; };
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};

а запись зоны так:

zone "mydomain.com" IN {
	type slave;
	masters { 1.1.1.1; };
	file "domain.tld.hosts";
};

где 1.1.1.1 нужно заменить на ip-адрес вашего первичного сервера имён.

Теперь можно запускать dns-сервер:

service named start

Для того чтобы всё заработало окончательно, нужно ещё сбросить правила iptables командой

iptables -F INPUT

поскольку в упомянутом дистрибутиве Red Hat 53-й порт закрыт правилом iptables.

5. Проверить работоспособность свежеустановленного сервера можно командой снаружи:

dig@ip domain.tld

где ip—ip-адрес вашего экземпляра EC2, а domain.tld—один из доменов, зону которого поддерживает ваш вторичный dns-сервер. В результате команды сервер должен отдать зону без возражений.

Спасибо за внимание!

Автор: ulrith

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js