Самодельный DynDNS

Автор Yuriy_Y, 15 Мая 2014, 08:22

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

hedgeven

11 Июля 2014, 11:45 #20 Последнее редактирование: 11 Июля 2014, 13:47 от hedgeven
Вдохновившись недавней статьёй на хабре про dyndns, а точнее коментариями к ней, решил настроить свой Dynanic DNS.
Имеется аккаунт на Digitalocean, в котором есть управление моими доменами, а так же виртуальный сервер. В принципе для этого способа подойдет любой сервис, который имеет API для управления записями, а наличие своего сервера не является необходимостью.

Для получения своего ip есть масса способов, но я сделал свой велосипед. На внешнем сервере я настроил nginx на простую выдачу ip подключившегося клиента:
server {
        listen 80;
        server_name ip.hedgeven.me;
        access_log off;

        location / {
                echo $remote_addr;
        }
}


А на домашнем сервере (я использую raspberry pi, но можно также заюзать любой умный  роутер) прописал в cron задание, которое обновляет DNS-запись в соответствии с полученным ip.
*/10 * * * * /path/to/file/ddns.sh &>> /path/to/file/ddns.log
А вот содержимое самого скрипта:
#!/bin/bash
TOKEN="4f8476ec7c0ded094d2b90f1d071373bfdaa601fba824d3d4ef8bc787baa0537"
DOMAIN="hedgeven.me"
MY_IP=`curl -s ip.hedgeven.me` || { echo "Error: Can not get my ip" && exit 1; }
RECORD_ID=2425244
curl -s -X PUT "https://api.digitalocean.com/v2/domains/$DOMAIN/records/$RECORD_ID" -d '{"data":"'${MY_IP}'"}' -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"

Узнать RECORD_ID следующим запросом:
curl -X GET "https://api.digitalocean.com/v2/domains/$DOMAIN/records" -H "Authorization: Bearer $TOKEN"

Вот и все, DNS-запись обновляется, я доволен. :)
Jah will give us everything...