====== 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