Скрипт автоматического изменения IP сервера в зонах DNS BIND

У меня есть два DNS сервера на BIND9 (master & slave). Изредка необходимо во всех зонах (около 15) менять направление на другой сервер. Однако, нужно исключить А запись с именем 3-его уровня, которое содержит слово radio. Реализовано это следующим скриптом с использованием sed.

#!/bin/bash
serial=`date '+%y%m%d%M%S'`
bindpath=/etc/bind
find $bindpath/db.* -exec sed -i 's/\(.*\); Serial/\t\t\t\t'$serial' ; Serial/g' {} \;
find $bindpath/db.* -exec sed -i '/radio/!s/'$1'/'$2'/g' {} \;
service bind9 restart

Вторая строка получает текущую дату и время вида 1605181417, которое используется, как Serial (четвертая строка), значение по которому bind понимает, что данные в зоне изменены. В пятой строке мы меняем один IP на другой.

Допустим у нас есть зона domain.com, данные о которой хранятся в фалйе /etc/bind/db.domain.com

$TTL 3600
domain.com. IN SOA ns1.domain.com admin.gmail.com. (
				1605182042 ; Serial
                                600      ; Refresh
                                3600     ; Retry
                                1w       ; Expire
                                300      ; Minimum TTL
)
	IN	NS	ns1.domain.com.
	IN	NS	ns2.domain.com.
	IN	A	111.111.111.111
www	IN	A	111.111.111.111
radio	IN	A       777.777.777.777

И вот мы запускаем наш скрипт

# ./change_ip 111.111.111.111 222.222.222.222

И в итоге наш файл приобретает вид

$TTL 3600
domain.com. IN SOA ns1.domain.com admin.gmail.com. (
				1605182143 ; Serial
                                600      ; Refresh
                                3600     ; Retry
                                1w       ; Expire
                                300      ; Minimum TTL
)
	IN	NS	ns1.domain.com.
	IN	NS	ns2.domain.com.
	IN	A	222.222.222.222
www	IN	A	222.222.222.222
radio	IN	A       777.777.777.777

Bind перезагружается, данные реплицируются на slave dns. Имя radio.domain.com доступно по старому IP. Все красиво 🙂


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!