Бесплатный аналог dyndns и no-ip используя Яндекс DNS.
Статья более не актуальна. Яндекс всех поголовно переводит на Яндекс.Коннект. В API Коннекта на данный момент отсутствует возможность управлять DNS-записями. API pdd.yandex уже не работает.
Можно использовать api Telegram для получения динамических ip. Инструкция здесь.
Я давно пользовался услугами dyndns для подключения из вне к домашней файлопомойке-торрентокачалке на фряхе, у которой динамический ip от провайдера. Хотя уже давно у dyndns эта услуга платная для вновь зарегистрировавшихся пользователей, но я пользовался бесплатно, т.к зарегистрировался ещё до того как они стали за это просить денег. Но на днях мне пришло письмо что они не могут больше предоставлять эту услугу мне бесплатно и со следующего месяца я должен буду за неё платить. Меня это не устроило и я стал искать выход из текущего положения.
Т. к. домены у меня делегированы на Яндекс DNS я стал читать мануалы для их API и выход был найден. Расскажу о нём ниже.
Чтобы использовать яндекс api нам нужно получить токен. Получить его довольно просто, в браузере вводим.
https://pddimp.yandex.ru/get_token.xml?domain_name=domen.ru
Где domen.ru — ваш домен делегированный на яндекс. Вводим капчу и в выводе ищем:
token="XXXXXX"
В кавычках будет ваш токен. Копируем его куда-нибудь, он нам потребуется чуть позже.
Теперь нам нужно добавить к нашему домену сабдомен, который будет ссылаться на машину с динамическим ip. Переходим на https://pdd.yandex.ru, выбираем домен и кликаем «Редактор DNS» там добавляем А-запись для домена:
В поле «Хост» вводите сабдомен, а в поле «Значение записи» пишете любой ip(в последствии он будет меняться, когда будет изменятся ip вашей тачки).
Теперь нам нужно получить id нашей записи. Для этого в браузере вводим:
https://pddimp.yandex.ru/nsapi/get_domain_records.xml?token=XXXXXX&domain=domen.ru
Где ХХХХХХ-ваш токен, а domen.ru — ваш домен делегированный на яндекс.
В выводе ищем строку с нашей записью myhome.domen.ru и в этой строке находим:
id="1234567"
В кавычках id записи, так же копируем его куда-нибудь.
Теперь пишем скрипт на тачке на которой динамический ip. Скрипт будет проверять внешний ip тачки раз в пол часа и если он изменился, то будет изменять А-запись на Яндекс DNS.
# ee /usr/local/bin/dyndns.sh
Содержание скрипта:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
DOMEN="domen.ru" # ваш домен делегированный на яндекс
SUB=myhome # сабдомен
TOKEN=XXXXXX # токен
RECID=1234567 # id записи
while true; do
IP='curl -s http://ip.anikin.pw/'
YAIP=`host myhome.domen.ru dns1.yandex.ru | grep has | awk '{print $4}'` # замените myhome.domen.ru на ваш сабдомен
if [ $IP != $YAIP ]
then
curl -s "https://pddimp.yandex.ru/nsapi/edit_a_record.xml?token=$TOKEN&domain=$DOMEN&subdomain=$SUB&record_id=$RECID&content=$IP&ttl=1800"
fi
sleep 1800; done;
Значения переменных измените в соответствии с комментариями.
Делаем скрипт исполняемым:
# chmod +x /usr/local/bin/dyndns.sh
И добавляем соответствующую запись в крон:
# crontab -e
@reboot /usr/local/bin/dyndns.sh
Всё, теперь после перезагрузки скрипт будет автоматически запускаться. Перезагружаемся или запускаем скрипт вручную и проверяем на https://pdd.yandex.ru изменилось ли значение записи для нашего сабдомена.
P.S. Чтобы было совсем все бесплатно, можно не покупать домен а использовать бесплатный домен в зоне .tk. Получить его можно на сайте www.dot.tk
http://dns-ip.ru/Home/DynDns юзаю эту штуку вроде все устраивает
Эта штука только под винду, если я правильно понял. Под юникс подобные ОС её нет.
Пётр, помогите советом, пожалуйста :-)
Настроил всё по Вашей инструкции, получил токен\id, создал скрипт dyndns.sh, при запуске получаю ошибку:
./dyndns.sh: 10: [: curl: unexpected operator
Код скрипта провенрил — вроде бы точно, как у Вас, всё написал.
Не сталкивались с подобным, случаем?
Здравствуйте. Curl у вас установлен?
Да, установлен. Я даже пытался запускать curl отдельно с параметрами, как в Вашем скрипте. curl -s http://ip.anikin.pw/ отрабатывает нормально и выдаёт текущий внешний ip-адрес, «curl -s „https://pddimp.yandex.ru/nsapi/...“ ругается на ошибку идентификации (видимо, потому, что я отдельно запускаю, безщ предварительного определения токена с id).
«curl -s „https:pddimp.yandex.ru/nsapi/...» при правильно заполненных переменных с токеном, доменом и другими данными должен выдавать что-то типа:
По поводу ошибки
даже не знаю что подсказать. Возможно есть какая-то ошибка в синтаксисе или не правильно скопировался какой-либо символ. Попробуйте скачать здесь http://anikin.pw/dyndns.tar.gz я выложил 100% рабочий скрипт. Запаковал его в архив, этот скрипт работает у меня на домашней тачке. Впишите только свои данные домена, токена и т.д, свои данные я естественно удалил. Также не забудьте вписать свой поддомен в строке:
И проверьте будет ли работать.
Также роутерах ASUS есть встроенный беспатный DynDNS в домене asuscomm.com. Просто вводим желаемое имя поддомена и все, никаких регистраций, все автоматом, по времени через 10 сек имеем доступ, например на test.asuscomm.com.
Можно повесить форвард на удаленный рабочий стол, например.
Многие производители роутеров предоставляют подобные сервисы для своей продукции, не только asus.
Привет! Была ошибка, как у Дмитрия. Архив помог. Спасибо!
Брехня про бесплатные домены в зоне .tk При попытке зарегистрировать «бесплатный» домен на dot.tk попросили 1000 долларов за 2-х годовую «бесплатную» регистрацию. А чуть ниже вопрос — еще хотите зарегистрировать один домен?
Возможно. Я регистрировал домен в зоне .tk пару лет назад, тогда было бесплатно абсолютно.
Домены .TK и сейчас бесплатны и регистрируются даже без регистрации на сайте. Просто домены надо выбирать попроще. Домены с тире там всегда свободны, типа: m-u-z-o-n.tk, mnogo-mnogo-deneg.tk
Большое спасибо за информацию.
Вышеуказанная процедура добавляет А запись с новым IP
Добавляет а не перезаписывает. Как с этим быть? их там может со временем набиться немерено
Вы не правы, она редактирует запись с id указанной в переменной RECID.
Проблема в том, что у меня в сети два последовательно подключенных маршрутизатора. И сервер висит только на втором. Проброс, как я понимаю, нужно настраивать на обоих маршрутизаторах?
Настраивать описанный выше скрипт достаточно только на одном маршрутизаторе, скрипт в любом случае пропишет выходной ip в А-запись. Но тут несколько сложнее, чтобы вам подключится внутрь локальной сети, т.е ко второму маршрутизатору, вам нужно будет настроить проброс портов на первом маршрутизаторе. Чтобы пакеты приходящие на определенный порт первого маршрутизатора уходили на второй.
вообще не пойму,бьюсь несколько дней не могу придти к выводу почему не работает.
выдает <domains><domain/><error>no_auth</error></domains>
пробовал по разному в конфиге с ковычками» « и без, да и по всякому
Я думаю проблема с токеном. Проверьте правильность его ввода.
в общем помоги разобраться. у меня поддомен делегирирован как домен. вроде что то срабатывало с подписью no_content это когда я прописывал все данные в строке curl.
но всё ровно не так.
напиши код, как он правильно должен быть? с ковычками или без? ей богу беда какая то.
Вот скрин скрипта на тачке с убунтой, где этот скрипт успешно работает. Изучайте.
Выше в комментах есть архив со скриптом который у меня во фряхе работал. Там слегка синтаксис отличается, парой кавычек, или что-то типа того.
на VirtualBox-e так и не смог запустить. а на рабочей машине сразу запустился скрипт
У меня работает до сих пор. Специально зашел проверил.
[URL=http://radikal.ru/big/ac459a0d2ba14837938a7b94d516e510][IMG]http://s010.radikal.ru/i314/1605/30/d0202f4e4c65.jpg[/IMG][/URL]
Значит вы счастливчик, мне услугу заблокировали.
dlinkddns в помощь. Я еще давным давно через него регался)
Не нужен, ибо через яндекс ДНС скриптом все отлично работает. И домен можно любой юзать, а не только из ограниченного списка доменов третьего уровня.
На 21 октября 2016 в записи днс яндекса нельзя вносить изменения если домен не находится на обслуживании у регистратора яндекса, что можно сделать? если ли похожий сервис без оплаты и делегирования домена?
Не понимаю о чем вы. У меня все так же работает. Никаких денег яндекс не требует. Домен зарегистрирован у стороннего регистратора и делегирован на яндекс. Поясните что вы имеете ввиду.
Все разрешилось. Само «делегирование» делал не я. там не была сделана еще одна запись MX(которой не было), потом еще мне надо было нажать кнопу «считать MX» на яндексе и он «делегировался».
Хотя я не понимаю зачем это, если сами днс сервера были изменены у регистратора, зачем менять настройки старых днс(изменять NS и MX записи на них). Я так понимаю или одно или другое. Или днс просто меняются или или меняются эти записи.
Огромное спасибо за идею и за реализацию, а так же и за ваш сервис IP.
Использовал скрипт со скриншота. Все отлично работает.
Пожалуйста.
а вы смотрели сколько времени пройдет после смены ip чтобы обновилась запись в ДНС???? в консоли яндекса стоит новый ip, но толку от этого ноль, т. к. надо ждать пока обновятся сервера ДНС, а это может занять до суток
Используйте быстрые сервера. Не используйте ДНС провайдера, если ваш провайдер обновляет ДНС раз в сутки.
использую 8.8.8.8
обратил внимание что адрес vpn.xxx.ru не обновляется, а вот адреса vpn1, vpn2.xxx.ru обновляются быстро)))
Возможно у записи слишком большое значение ttl.
такое же как у и vpn1 и vpn2
У кого возникают ошибки: ./dyndns.sh: 10: [: curl: unexpected operator
В 8 строке одинарные кавычки нужно заменить на обратные (такие же как в 9 строке).
P.S. Спасибо за статью и скрипт!
Аналог [удалено] , полностью бесплатен, позволяет подключать к себе ваши домены.
Рекламу я удаляю.
http://ip.anikin.pw — suspended?
Пока да. Потому что некоторые деятели запускают скрипт без задержки и долбят по сотне запросов в секунду. Как сделаю чтобы таких умников отпуливало включу обратно. Пока предлагаю поискать альтернативные сервисы запроса ip.
Здравствуйте! Спасибо за скрипт. А не подскажите аналогичные сервисы запроса ip? (пока ваш простаивает)
Спасибо сразу!
Можете сделать свой на простейшем скрипте на php. Можете bash’ем и curl’ом выдергивать ip со страниц популярных сервисов типа 2ip.ru. Можете написать мне в личку(skype, facebook), и я вам дам доступ к моему сервису, но если будете хулиганить забаню.
Яндекс всех поголовно переводит на Яндекс.Коннект. В API Коннекта на данный момент отсутствует возможность управлять DNS-записями. API pdd.yandex уже не работает.
Да. Именно так. Статья уже не актуальна. Чуть позже возможно напишу как через Telegram API получать ip, будет альтернативой этой статьи. Я сам сейчас использую телеграм.
Вот небольшой лайфхак по удаленному доступу. На даче стоит старый компьютер с камерой. Хочу получить к нему удаленный доступ. В деревне у провайдера нет «белого IP» и приобрести его невозможно.
DDNS работает, но и это бесполезно, потому что соединения извне тупо закрыты провайдером.
Поэтому использую вот такой VPN сервис — [Удалено] Они не предоставляют выход в интернет, но объединяют мои туннели — один с дачи, другой с смартфона.
Вдруг кому-то это поможет.
Рекламу я удаляю.
Спасибо автору. все работает
Подскажите, как быть с Яндекс Коннект ? Они вроде обновились до API 2. Не получается запустить скрипт
У меня нет скрипта для яндекс-коннект.