Обычно, если вам нужно проверить состояние DNS-записи, то это, скорее всего, будет какая-нибудь A, CNAME, TXT или NS запись. Очень редко когда нужно смотреть, что там с SOA, да и в целом большинство людей, которые не погружались в детали работы DNS, вероятно, даже никогда и не слышали об этом типе записей.
SOA-запись — это обязательная запись для вашей зоны, без неё зона не может работать и считается некорректной. А что есть зона? Зона — это домен. Например, купили вы себе домен второго уровня big.bob, вот ваша зона — big.bob. Допустим, инфраструктура сервиса, который стоит за доменом big.bob, разрастается до такой степени, что какая-то часть её становится самостоятельной и хочет сама рулить своими DNS-записями без согласования с главными админами, которые управляют основной зоной big.bob. Допустим, эта часть инфраструктуры живёт под доменом small.big.bob. Чтобы реализовать их требования по независимости, мы делегируем small.big.bob на их DNS-сервера через NS-записи, в которых указываем адреса этих серверов. Далее они на своих DNS-серверах создают зону small.big.bob, которая всегда начинается с SOA-записи. Теперь эти сервера полностью отвественны за зону small.big.bob. В общем, зона — это управляемая часть доменного имени.
Вернёмся к нашим SOA-записям. Понятно, что зона без SOA-записи не существует, но что входит в эту SOA-запись?
Вот так, к примеру, в синтаксисе BIND выглядит SOA-запись:
$TTL 86400
@ IN SOA <master-dns> <admin-email> (
2020080302 ;Serial
7200 ;Refresh
3600 ;Retry
1209600 ;Expire
3600 ;Negative response caching TTL
)
Давайте теперь по порядку, что тут что значит.
FYI
Далее по тексту будут использоваться термины «мастер-днс» и «вторичный сервер». Мастер это авторитетный сервер, который управляет зоной, вносит в неё изменения, отвечает на запросы по записям в зоне. Вторичный же сервер только отвечает на запросы по записям. Грубо говоря это dns-сервер с ReadOnly доступом к зоне. Он регулярно общается с мастером и клонирует актуальную информацию о зоне себе.
🟢master-dns
DNS-имя основного DNS-сервера зоны. В теории на этот сервер должны идти запросы на обновление записей зоны (например, утилитой nsupdate), и только от этого сервера должны лететь уведомления вторичным DNS-серверам о том, что в зоне произошли обновления.
На практике же, если мы говорим, например, о зонах в диком интернете, в master-dns может быть прописан вообще даже не существующий домен. Такие зоны либо обновляются администратором путём прямых изменений на DNS-сервере, либо какой-то внутренней автоматизацией владельца зоны, либо зона, которую мы видим в интернете, это реплика зоны, которая живёт в серой сети администратора, но имеет другую SOA-запись с master-dns, который ведёт на реальный сервер во внутренней сети, и, соответственно, во внутренней сети своего хозяина эта зона нормально обновляется тем же nsupdate, а все изменения попадают на реплику, которая "проецируется" в интернет.
🟢admin-email
По названию в целом понятно, что это такое — мыло администратора зоны. Может быть реальным, может быть выдуманным, зависит от админа. Единственный нюанс — это то, что символ "@" должен быть заменён точкой.
🟢Serial
Серийный номер зоны. Меняется, когда необходимо сказать вторичным серверам: "зона обновилась - стягивайте изменения себе!".
Представляет из себя просто набор цифр, но чаще всего эти цифры выставлены в виде какой-то конкретной даты последнего обновления. К примеру возьмём такой Serial - 2020080302. Тут первые 8 цифр это дата обновления, а последние 2 это дополнительные цифры, которые указывают на количество обновлений зоны в этот день.
Если вашей зоной управляет один сервер и у вас нет вторичных серверов, то изменение серийного номера зоны при каждом её обновлении становится бессмысленным.
🟢Refresh
Время в секундах, говорящее вторичным серверам, как часто нужно ходить к мастер-серверу и стягивать информацию о зоне.
продолжение следует...