Документация по ОС FreeBSD Четверг, 18.04.2024, 11:18
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » DNS

Динамический DNS [2009]
Есть у меня объект на котором стоит интернет с динамическим IP. Периодически есть необходимость подключаться к нему и проводить плановые работы. Статику там сделать дорого (кто знает Укртелекомовские тарифы, тот поймет о чем я) да и не особо она там нужна. VPN поднимать тоже не хотелось. И, до не давнего времени, я пользовался сервисом DynDNS.com, но мне пришло письмо, что мой аккаунт по каким-то причинам заблокирован. Сначала хотел зарегить новый, а потом подумал, что неплохо бы сделать у себя аналог такого сервиса, тем более что свой DNS-сервак имеется.

Итак вводные данные
- на стороне с динамическим IP - сервер Windows
- DNS - сервер FreeBSD 7.0

Идея вообщем-то проста - сервер Windows периодически коннектится к серверу DNS -> в логах появляются записи об этом -> выковыриваем из логов IP-адрес и суём его в DNS.

Так как на сервере с DNS поднят ssh, то я решил использовать его (хотя можно заюзать в принципе любой протокол telnet, ftp, pop3, imap и т.д. просто из разных логов выковыривать ip-адрес).

Был написан следующий bat-файл

plink.exe -ssh -batch -pw 12345 test01@имя сервера днс

и засунут в планировщик Windows на выполнение каждый час (программа plink была взята у разработчиков putty).
Пользователь test01 на сервере DNS не существует.

На сервере DNS был написан скрипт, который выковыривает нужный нам ip-адрес и запихивает его в днс (предпологается, что версия файла зоны прописана в третьей строчке и она там одна)
#!/bin/sh

ip=`awk '/Invalid user test01/ { ip = $10} END {print ip}' /var/log/auth.log`
ipnamed=`awk '/test01/ {print $4}' /etc/namedb/master/имя зоны`
if [ $ip != $ipnamed ]
then
version=`date +%Y%m%d%H`
awk -v ver="$version" -v ip="$ip" \
' { st++; if(st==3) {print(ver)} else \
if($1=="test01") {print("test01 IN A ",ip)} \
else {print}}' \
/etc/namedb/master/имя зоны > /tmp/имя зоны
cp /tmp/имя зоны /etc/namedb/master/имя зоны
/etc/rc.d/named reload
fi

результате у нас всегда есть DNS-запись с актуальным IP.

Категория: DNS | Добавил: oleg (20.08.2009) | Автор: BAV_Lug
Просмотров: 1744 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024