28 апреля 2014

Yandex PDD в качестве Dynamic DNS для Linux / OS X

Снова про бесплатный Dynamic DNS своими руками. Пришло время прощаться с Dyn.com (бывший DynDNS). Началось всё с того, что благополучно работавший 15 лет DynDNS сначала перестал регистрировать бесплатных пользователей, сократил количество предлагаемых на выбор доменов, стал заставлять раз в 30 дней подтверждать активность аккаунта, заходя в него, а теперь и вовсе объявил о прекращении предоставления бесплатных услуг любителям халявы вроде меня.

Сначала я начал искать альтернативу вроде no-ip.com или dns.he.net. Но вспомнил, что есть замечательный DNS сервис от Яндекс, совмещённый с почтой для домена, которым я уже пользуюсь. Осталось только создать в нём субдомен и научиться обновлять для него свой IP адрес. В общем-то готовые решения для этого быстро нашлись на GitHub. Например, вот GUIёвое приложение на .NET для Windows, или расширение для PowerShell. Ещё нашлись клиенты на Ruby, Perl (12) и иже с ними, работающие по принципу "вот 30 строк кода на моём любимом языке, но для того, чтобы это заработало, скачайте фреймворк и 300 библиотек, которые требует мой код". Решения для Windows мне не подходят, т.к. у меня нет Windows. Наколенные реализации на ruby, perl и прочей экзотике меня тоже не порадовали. Нет, я, конечно, могу скачать руби и gem'ы для него, но не хочу. Я хочу, чтобы просто работало. Желательно в Linux, а ещё лучше - на роутере.

Небольшое лирическое отступление: чем был хорош DynDNS, так это тем, что для него не нужно было устанавливать ничего. Ничего от слова совсем - его поддержка вшита в большинство роутеров. Очевидно, что ни одно из найденных выше решений таким похвастать не может.

Так вот, немного покопавшись в API DNS Яндекс.Почты, и обнаружив, что работает он довольно просто, я решил написать не что иное, как shell-скрипт, который должен просто работать на большинстве Unix и BSD совместимых систем, в том числе, и на макоси, без необходимости что-либо устанавливать. Вот что получилось (GitHub). Из служебных программ используются wget, grep, sed, присутствующие практически в любой *nix-системе. Теоретически, если у вас роутер с шеллом (например, с прошивкой DD-WRT или OpenWRT), то скрипт должен работать и на нём (пока не проверял, но скоро узнаю, так ли это).

Для того, чтобы всё заработало, нужно скачать скрипт, прописать в нём DNS адрес вашего хоста и авторизационный токен. Соответствующую запись типа "А" (например, home.example.com) нужно создать в DNS заранее, можно с левым IP. Токен для управления доменом получать здесь. Остаётся только настроить запуск скрипта в вашем любимом планировщике.

P.S.: Тем, кто решит пойти путём поиска аналогов Dyn.com, рекомендую заглянуть в каталог сервисов Dynamic DNS.

Комментариев нет: