Как настроить бесплатный личный самообслуживаемый динамический DNS

by itisgood

Бесплатный личный Self Hosted Dynamic DNS с BIND и DNSSEC

Окружающая среда:

  • Сервер: статический IP, работает BIND
  • Home: динамический IP, работающий с Debian / * buntu

Генерация ключей

Первый шаг – создать ключ на сервере.

 /etc/bind $ sudo dnssec-keygen -a HMAC-MD5 -b 512 -n HOST home.dynamic.n0where.net

Это действие создает два файла, которые будут называться по-разному на основе отдельных запусков.

 Khome.dynamic.n0where.net.+157+#####.key
Khome.dynamic.n0where.net.+157+#####.private 

Содержание файла:

Khome.dynamic.n0where.net.+157+62567.key:

 home.dynamic.n0where.net. IN KEY 512 3 157 <key> 

Khome.dynamic.n0where.net.+157+62567.private:

 Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: <key>
Bits: AAA=
Created: 20160126233343
Publish: 20160126233343
Activate: 20160126233343

Файл ключа

Затем создайте файл ключа в /etc/bind/key.dynamic.n0where.net.

 key dynamic.n0where.net. {
algorithm HMAC-MD5;
secret "<secret>";
};

Затем добавьте следующую строку в /etc/bind/named.conf.local, чтобы включить новый ключ.

 include "/etc/bind/key.dynamic.n0where.net"; 

Динамическая зона

Добавьте зону для BIND.

 // Dynamic zone
zone "dynamic.n0where.net" IN {
type master;
allow-transfer {none;};
file "/etc/bind/db.dynamic.n0where.net";
update-policy {
key "dynamic.n0where.net.";
};
};

Определить файл /etc/bind/db.dynamic.n0where.net

$ORIGIN .
$TTL 14400 ; 4 hours
dynamic.n0where.net IN SOA ziost.n0where.net. admin.n0where.net. (
9 ; serial
604800 ; refresh (1 week)
86400 ; retry (1 day)
2419200 ; expire (4 weeks)
604800 ; minimum (1 week)
)
NS korriban.n0where.net

Перезапустите BIND.

Клиент

Сначала перенесите файлы .key и .private в клиентскую систему с помощью выбранного транспортного механизма. После размещения, chmod каждый файл до 0400.

 -r-------- 1 user user 128 Jan 26 17:58 Khome.dynamic.n0where.net.+157+62567.key
-r-------- 1 user user 229 Jan 26 17:58 Khome.dynamic.n0where.net.+157+62567.private 

Скрипт обновления

Средство nsupdate в пакете dnsutils будет выполнять обновление.

 #!/bin/bash

EXT_IP=$(wget -qO- http://ifconfig.me/ip)
KEY="/path/to/Khome.dynamic.n0where.net.+157+62567.private"

cat <<EOF | nsupdate -k "$KEY"
server n0where.net
zone dynamic.n0where.net
update delete home.dynamic.n0where.net. A
update add home.dynamic.n0where.net. 86400 A $EXT_IP
show
send
EOF

Расписание Cron

Быстрый тест с помощью dig покажет, будет ли обновлена запись.

 $ dig @8.8.8.8 +short home.dynamic.n0where.net 

Скрипт можно планировать автоматически запускать на клиенте с помощью cron.

 $ crontab -l
*/15 * * * * /path/to/<script> 

 

You may also like

Leave a Comment