Как управлять днс записями в 1cloud
Зачем делегировать домен
Причин для этого у каждого может быть несколько. Вы зарегистрировали бесплатно домен или он у вас на паркинге у регистратора и регистратор не предоставляет бесплатно поддержку почты с вашим доменным именем. Или вас не устраивает сама процедура настройки доменных записей. Хочется что бы все было на родном языке. Может хочется больше, каких то дополнительных услуг, причем бесплатно. Для меня например приоритетом было то что бы сервис днс поддерживал: API для изменения доменных записей и почту для моего домена. 1cloud — частично подходит по моим требованиям. Мне понравилась простота управления записями днс и главное управление при помощи API. Так же возможность делать любые типы записей и устанавливать TTL минимум 1 секунда, для динамического айпи более чем достаточно. Все остальные услуги платные более мне и не нужно. Документация на русском языке, управление так же на русском.
Регистрация в 1cloud
Прежде чем пользоваться услугами нужно пройти процедуру создания аккаунта. Кроме указания своего е-майла, нужно будет сообщить номер своего телефона. Так же на выбор можно зарегистрироваться чрез аккаунты вк, гугла, яндекса, маилру и одноклассников. Переходим по ссылке.
Регистрация аккаунта
Вводим в поле Email ваш действующий почтовый адрес на который придет письмо для подтверждения вашей почты.
Идем на почту. жмем или копируем ссылку в браузер, подтверждаем свой почтовый адрес. После этого придет еще письмо с вашим логином и паролем для доступа.
Для окончательной регистрации требуется ввести Имя и номер телефона, на который поступит звонок, последние шесть цифр входящего номера нужно будет ввести в соответствующее поле.
Настройка профиля
После успешной регистрации попадаем в панель управления. Первым делом жмем в правом верхнем углу на ваш логин выбираем из вывалившегося списка Настройки. Вкладка Безопасность меняем пароль входа в панель управления. Старый пароль указываем, который пришел в письме. И дважды вводим желаемый пароль. Для пущей безопасности можно включить двухфакторную аутентификацию на выбор: через приложение или смс.
Переходим на вкладку API-ключ генерируем апи-ключ нажав кнопку Сгенерировать ключ запоминаем его нам он пригодится в дальнейшем.
Делегирование домена в 1cloud
Панель управления проста и интуитивна понятна. Все на русском языке.
Добавление домена
Слева в меню выбрать Сети и доставка контента - DNS . Нажать Добавление домена . В графу Доменное имя второго уровня. Например: 1cloud.ru пишем свой домен. IP адрес сервера - пишем соответственно айпи по которому расположен сервер. Узнать текущий внешний айпи сервера можно зайдя на него по SSH и набрать в терминале:
Код: Выделить всё
wget -q -O - ifconfig.me/ip
Заполнив поля нажать кнопку Добавить домен
Нужно будет немного подождать пока выполнится задача и нажать Далее. Попадем на странице редактирования и добавления записей нашего домена.
Передача управления
Собственно само делегирование сводится к изменению адресов NS. Как поменять адреса серверов имен для бесплатного домена зарегистрированного на freenom. Если у вас другой регистратор домена, то смотрим в инструкциях регистратора или обратитесь в службу поддержки.
Заменить NS на:
Код: Выделить всё
ns01.1cloud.ru
ns02.1cloud.ru
Настройки DNS записей в панели управления 1cloud
В панели управления выбрать домен для редактирования записей нажав на его имя. Нажать на кнопку Создать запись . Выбрать нужную запись. Запись А уже создана автоматически. Создадим запись CNAME. Заполнив поля.
Мнемоническое имя: www.
Каноническое имя или @ : @ или имя домена
TTL: выбрать 30 секунд. Для статического айпи адреса сервера указать 1 день.
Нажать кнопку Создать запись
Автоматическое изменение днс записей при помощи API в 1cloud
Как писал ранее меня интересует изменение записи А поскольку мой сервер с белым динамическим айпи. Для тех у кого статический белый айпи далее можно не читать, у вас и так все хорошо. С помощью API можно делать все то же самое, что и через панель управления, для полного ознакомления с возможностями можно прочитать документацию
Для работы с API необходимо, что бы было установлено curl и jq
Код: Выделить всё
sudo apt update
sudo apt install curl
sudo apt install jq
Для того что бы поменять айпи адрес доменной зоны нужно узнать id этой записи. Подключаемся по SSH к серверу. И делаем запрос:
Код: Выделить всё
curl -X GET -H 'Content-Type: application/json' -H 'Authorization: Bearer token' "https://api.1cloud.ru/Dns/" | jq
Код: Выделить всё
"ID":"1",
"TypeRecord":"A",
Так же ищем ID доменов
Код: Выделить всё
"ID": 1,
"Name": "имя_домена",
Алгоритм довольно простой. Что бы часто не беспокоить постоянными перезаписями, получаем текущую запись А сравниваем ее с реальным на этот момент айпи адресом сервера, если совпадает — все хорошо, если нет — меняем в записи А айпи адрес на текущий момент айпи сервера.
Создаем исполняемый bash скрипт, который будет запускать cron каждую минуту, вполне достаточно.
Код: Выделить всё
nano 1cloud.sh
Код: Выделить всё
#!/bin/bash
TOKEN=token
ID_A=id-a
ID_DOMAIN=id-domain
TTL=30
MYIP=`curl -s 'http://ipinfo.io/ip'`
NSIP=`curl -X GET -H 'Content-Type: application/json' -H 'Authorization: Bearer '$TOKEN'' "https://api.1cloud.ru/Dns/Record/"$ID_A"" | jq '.IP' | sed 's/"//g'`
if [ $MYIP == $NSIP ]
then
exit 1
else
curl -X PUT -H 'Content-Type: application/json' -H 'Authorization: Bearer '$TOKEN'' "https://api.1cloud.ru/dns/recorda/"$ID_A"" -d '{"DomainId":"'$ID_DOMAIN'", "IP":"'$MYIP'", "Name":"@","TTL":"'$TTL'"}' | jq
fi
exit 1
Делаем файл исполняемым.
Код: Выделить всё
chmod +x ./1cloud.sh
Если будет задано другое не табличное значение по умолчанию установится 1ч
Скрипт можно улучшить, например задавать только токен и имя домена с TTL , а остальные ID соответствующие доменной зоны скрипт будет парсить автоматически. Если у кого есть желание может поделится своим вариантом.
Установка автоматического исполнения скрипта
Добавляем файл 1cloud.sh в задачу cron
Код: Выделить всё
crontab -e
Код: Выделить всё
MAILTO=""
*/1 * * * * путь/к/файлу/1cloud.sh