Обновил 27.04.2022 — т.к. в яндексе изменились ссылки на получение токенов для АПИ.
Всем привет, сегодня с толкнулся с проблемой, что у меня дома динамический IP адрес и я не могу на домашнем компе публиковать сайт в интернете ( я могу, но при смене IP-адреса сайт выпадает, т.к. DNS адрес, а именно А-записи имеют другой IP).
Полазив в интернете я нашел скрипт пользователя АРТЕМА, а так же небольшую инструкцию как его настраивать, из которой нифига не понятно. В итоге решил опубликовать более подробно, т.к. сам делал для себя.
Итак, у меня есть: 1) Свой сервер с сайтом к примеру 9notes.ru
2) Свой Аккаунт Яндекс и замечательный сервис Почта для домена (сейчас там 360, но вы выбираете использовать бесплатно), там у вас уже должен быть создан домен и подтвержден ( подтверждение занимает примерно 1-2 часа при делегировании домена на сервисы яндекс)
3) На этом все, остальное зависит от вас!
Инструкция пошагово:
- Если вы делегировали свой домен на яндекс почту и подтвердили его, переходите по ссылке: и получайте свой токен: https://pddimp.yandex.ru/api2/admin/get_token , в противном случае вам стоит просто ввести в поиск «как добавить яндекс почту к домену» и выполнить все по порядку.
- В открывшемся окне вводим капчу и адрес сайта и жмем «Get Token»
3. Теперь надо получить ID полей, которые будем менять, тут все просто берите мою ссылку за основу и меняйте в ней токен и название сайта, затем вставляйте ссылку в браузер
https://pddimp.yandex.ru/api2/admin/dns/list?token=ВАШ-ТОКЕН&domain=9notes.ru
После вы получите информацию как на фото, в ней берем только Id как на скрине ниже:
4. Копируем скрипт ниже и вставляем в крон на вашем сервере ( можно создать отдельный файл и запустить через крон, тут делайте как вам удобнее), главное не забудьте поменять токен и ID записи на нужные вам. (так же могут быть заменены не только А-записи, но и другие записи (ниже пример с А-записями).
Скрипт:
#!/bin/sh
# путь к Яндекс.API
api_url=https://pddimp.yandex.ru/api2
# идентификатор, нужен для доступа к api.
# как получить: https://tech.yandex.ru/pdd/doc/concepts/access-docpage/#access-admin
token=ВАШ-ТОКЕН
# домен которым управляем
domain=9notes.ru
# поддомены и id записей
subdomain_1=ВАШ-ПОДДОМЕН (пример: просто пишите "@" и все? можно взять с пункта 3 поле subdomain )
record_id_1=ВАШ-ID
subdomain_2=ВАШ-ПОДДОМЕН (пример: просто пишите "www" и все )
record_id_2=ВАШ-ID
# TTL
ttl=1800
# временный файл
cache_file=/tmp/ya_dns_ip
if test -f $cache_file
then
cache_ip=$(cat $cache_file)
fi
# получаем ip
current_ip=$(wget -q -O - checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')
# основные действия: если ip обновился, то внести новые изменения в DNS
if [ "$current_ip" != "$cache_ip" ]
then
echo "Update Yandex DNS with" $current_ip
echo `date` "Updating with IP" $current_ip >> /tmp/yandex-dns-update.log
# обновление DNS записей
curl -k -H 'PddToken: '$token'' -d 'domain='$domain'&record_id='$record_id_1'&subdomain='$subdomain_1'&ttl='$ttl'&content='$current_ip'' ''$api_url'/admin/dns/edit'
curl -k -H 'PddToken: '$token'' -d 'domain='$domain'&record_id='$record_id_2'&subdomain='$subdomain_2'&ttl='$ttl'&content='$current_ip'' ''$api_url'/admin/dns/edit'
rm -f $cache_file
echo $current_ip > $cache_file
fi
# eof
5. Проверяем все ли правильно заполнили и запускаем тестовую проверку, заранее изменив ip адрес в А-записи. Если все сработало, то ставим повторять каждые 10 минут. На этом все.
Надеюсь статья была полезна! Если есть вопросы пишите в комментах! Хорошего дня!
Свежие комментарии