Задача
Сделать статическое доменное имя для своего домешнего сервера с динамическим IP-адресом
Исходные данные
У меня есть домен rekby.ru, делегированный на DNS-сервера yandex, домашний сервер на ubuntu-сервер, интернет-провайдер билайн с l2tp-соединением.
Варианты
- dyndns.org им подобные
- Работа через Яндекс-API
Вариант 1 раньше был хорошо и удобен, потом интерфейс, регистрации и т.п. так замудрили, что стало сложно разобраться как там добраться до бесплатной DNS-записи, так что он не подошел.
Настройка автообновления IP на DNS-серверах yandex
Для начала создайте A-запись с нужным поддоменом и любым IP-адресом в интерфейсе pdd.yandex.ru
Потом нужно получить токен для доступа к API:
https://pddimp.yandex.ru/get_token.xml?domain_name=ВашДомен
там нужно авторизоваться своей учеткой яндекса, в ответ будет выдан xml из которого нужен только token, он там виден.
Затем нужно перейти на страницу
https://pddimp.yandex.ru/nsapi/get_domain_records.xml?token=ТокенСПрошлогоШана&domain=ВашДоменТут нужно посмотреть record_id вашего поддомена.
Скрипт bash для обновления IP-Адреса:
Дайте скрипту права выполнения и поставьте на выполнение после сразу после поднятия соединения или просто поставьте в CRON раз в 5 минут. Чаще смысла не имеет, т.к. TTL=900 секунд, т.е. 15 минут, меньше яндекс поставить не дает.#!/bin/bash TOKEN=ВашТокен RECORD_ID=ВашRecordID DOMAIN=ВашДомен SUBDOMAIN=ВашПоддомен LINE=`ifconfig ppp | grep --color=never "inet addr"` # extract IP from line: inet addr:2.93.172.129 P-t-P:85.21.208.191 Mask:255.255.255.255 LINE=( $LINE ) IPADDR=${LINE[1]} IPADDR=${IPADDR:5} wget -O /dev/null "https://pddimp.yandex.ru/nsapi/edit_a_record.xml?token=$TOKEN&domain=$DOMAIN&subdomain=$SUBDOMAIN&record_id=7136651&content=$IPADDR&ttl=900" 2>/dev/null