Содержание

Bind

https://bind9.readthedocs.io/en/latest/reference.html
https://bind9.readthedocs.io/en/latest/configuration.html#sample-configurations
https://habr.com/ru/post/137587/
https://xakep.ru/2016/09/05/bind-9/
https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-18-04-ru
https://www.opennet.ru/base/net/dns_setup.txt.html

Windows DNS -> Bind DNS

В виндах в свойствах зон разрешить трансфер на новый сервер.

Подготовить список зон с WinDNS для конфигурации /etc/bind/named.conf.local

$zones = (Get-DnsServerZone).where{$_.IsAutoCreated -eq $false -and $_.zonename -match "\."}
# только IP-адреса, в конце обязательно ";", и после последнего IP тоже
$masters = "xxx.xxx.xxx.xxx; yyy.yyy.yyy.yyy; zzz.zzz.zzz.zzz;"
 
$bindConf = foreach ($zone in $zones) {
    "zone `"$($zone.ZoneName)`" IN {"
    "`ttype slave;"
    "`tfile `"$($zone.ZoneName)`";"
    "`tmasters {$masters};"
    "};"
    ""
}
 
$bindConf |out-file "$(env:userprofile)\Documents\named.conf.local" -Encoding utf8 -Confirm:$false
zone "domain.com" IN {
	type slave;
	file "domain.com";
	masters {xxx.xxx.xxx.xxx; yyy.yyy.yyy.yyy; zzz.zzz.zzz.zzz;};
};

zone "domain.ru" IN {
	type slave;
	file "domain.ru";
	masters {xxx.xxx.xxx.xxx; yyy.yyy.yyy.yyy; zzz.zzz.zzz.zzz;};
};
# перечитать конфиг, после этого зоны должны скопироваться с мастера
systemctl reload bind9
 
# логи
tail -f /var/log/syslog |egrep "named\[.*\]:"
 
# Файлы кэша зон (если не задавать путь в конфиге):
ls /var/cache/bind
 
# Декодировать зону из кэша и вывести в текстовом формате в консоль
named-compilezone -f raw -F text -o - domain.ru /var/cache/bind/domain.ru
# в файл
named-compilezone -f raw -F text -o /etc/bind/zones/domain.ru domain.ru /var/cache/bind/domain.ru
https://linux.m2osw.com/reading-binary-zone-file-bind

Проверка возможности копирования зоны

dig @dns-master.domain.ru zonename.ru. axfr

https://info.nic.ru/st/8/out_272.shtml

Slave -> Master

https://kb.isc.org/docs/promoting-a-slave-server-to-master

Конвертер кэшированных зон.

# Output directory.
dir=/etc/bind/zones
 
# Create if not exist
if [ ! -d "$dir" ]; then mkdir "$dir"; fi
 
# In this case, convert only reverse zones
for zone in $(cat /etc/bind/named.conf.local |egrep ^zone |cut -d '"' -f2 |egrep arpa$)
do
# Convert
named-compilezone -f raw -F text -o $dir/$zone $zone /var/cache/bind/$zone
# Remove TTL near every record and filter the SOA record out
records=$(cat $dir/$zone |grep -v SOA |sed 's/[0-9]\+ IN/IN/g')
# Keep original zones as .old
mv $dir/$zone $dir/$zone.old
# Make 
echo "\$TTL 86400
@       IN      SOA     ns.domain.ru admin.domain.ru      (
        2021030101      ;Serial
        7200            ;Refresh
        3600            ;Retry
        1209600         ;Expire
        3600            ;Negative response caching TTL
)
$records
" > $dir/$zone
done