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