🖧 Скрипт bash для просмотра времени жизни (TTL) для записи DNS на Linux, Unix, macOS |

🖧 Скрипт bash для просмотра времени жизни (TTL) для записи DNS на Linux, Unix, macOS

Скрипты

TTL – это сокращение от Time-To-Live (TTL) в DNS.

Он задает время в секундах, в течение которого DNS-запись может кэшироваться DNS-резольверами (кэширующим сервером), прежде чем ее нужно будет снова получить с авторитетного сервера имен.

Другими словами, более длительный TTL может снизить нагрузку на авторитетные DNS-серверы и улучшить время отклика за счет более длительного хранения записей в кэше.

Более короткий TTL полезен для часто меняющихся записей DNS, поскольку он обеспечивает быстрое распространение обновлений по Интернету.

Допустим, вы хотите посмотреть значение Time-To-Live (TTL) для данной записи DNS для A, AAAA и MX.

🖧 9 Примеров команд Host для запроса сведений о DNS

Далее показан пример скрипта оболочки, который работает на Linux, Unix и macOS.

У вас должны быть установлены bash и команда dig.

Необходимые условия

Этот скрипт написан на языке Bash, поэтому вам необходимо установить его.

Кроме того, команда dig должна быть установлена в Linux, FreeBSD, macOS или Unix-подобных системах.

Скрипт для просмотра времени жизни (TTL) для записи DNS

Для поиска DNS TTL в Linux, macOS и Unix мы используем следующий синтаксис команды dig:

dig {TYPE} {DomainNameHere} {NS-AUTHNAME-SERVER-HERE}

Например:

dig A itsecforu.ru @clay.ns.cloudflare.com.
 dig AAAA itsecforu.ru @clay.ns.cloudflare.com.
Вы можете пропустить ns name, чтобы использовать кэширующую службу по умолчанию.r #
 dig AAAA itsecforu.ru

Пример вывода:

; <<>> DiG 9.17.20-3-Debian <<>> AAAA itsecforu.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53085
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;itsecforu.ru. IN AAAA

;; AUTHORITY SECTION:
itsecforu.ru. 1800 IN SOA vip153.hosting.reg.ru. support.r eg.ru. 2020052302 3600 3600 604800 86400

;; Query time: 40 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Thu Aug 15 16:11:19 MSK 2024
;; MSG SIZE rcvd: 104

Как посмотреть время жизни (TTL) для записи DNS / домена

Создайте новый скрипт find-dns-ttl.sh следующим образом:

#!/bin/bash
# Usage: 
# Shell script too see Time-To-Live (TTL) for a DNS record in human readable
# format.
#
# Tested on:
# Ubuntu/Debian/macOS with bash shell v5.x
#
# Note:
# dig must be installed on your system this to work.
#
# Syntax:
# /path/to/find-domain-ttl cyberciti.biz
# /path/to/find-domain-ttl google.com | more
# /path/to/find-domain-ttl cyberciti.biz | grep  -i 'AAAA'
# ----------------------------------------------------------------------------
# Written by Vivek Gite <https://www.cyberciti.biz/>
# (c) 2021 Vivek Gite under GNU GPL v2.0+
# ----------------------------------------------------------------------------
# Last updated: 26/Jul/2024
# ----------------------------------------------------------------------------
set -eu -o pipefail
domain="${1:-NULL}"
 
# fail safe i.e. if no $1 passed to the script, die with an error
[ "$domain" == "NULL" ] && { echo "Usage: $0 domain-name"; exit 1; }
 
# make sure dig installed else die
if ! type -a dig &>/dev/null 
then
	echo "Error: $0 - dig command not found."
	exit 2
fi
 
# repeat given char 90 times
repeat(){
	for i in {1..90}; do echo -n "$1"; done
}
 
# get first ns for domain
# remove everything except domain.com 
str="${domain%.*.*}"
domain="${domain/$str./}"
 
ns="$(dig +nocmd +noall +answer ns "${domain}" | head -1 | awk '{ print $5}')"
 
# now print ttl for a, aaaa, and mx
repeat '-'
echo -e "\nDomain\t\t\tTTL\tIN\tRecord\tAnswer"
repeat '-'
echo 
 
for i in a aaaa mx
do   
	dig +nocmd +noall +answer +ttlunits "${i}" "${domain}" "@${ns}"
done

Цикл bash for выполняет всю работу за вас:

for i in a aaaa mx
do   
	dig +nocmd +noall +answer +ttlunits "${i}" "${domain}" "@${ns}"
done

Запустите этот скрипт .sh следующим образом:

chmod -v +x find-dns-ttl.sh
 ./find-dns-ttl.sh domain-name-here
 ./find-dns-ttl.sh google.com
 ./find-dns-ttl.sh itsecforu.ru

Вы получите красивую сводку TTL в человекочитаемом формате следующим образом:

------------------------------------------------------------------------------------------
Domain			TTL	IN	Record	Answer
------------------------------------------------------------------------------------------
itsecforu.ru.		5m	IN	A	172.66.40.182
itsecforu.ru.		5m	IN	A	172.66.43.74
itsecforu.ru.		5m	IN	AAAA	2606:4700:3108::ac42:2b4a
itsecforu.ru.		5m	IN	AAAA	2606:4700:3108::ac42:28b6
itsecforu.ru.		5m	IN	MX	1 aspmx.l.google.com.
itsecforu.ru.		5m	IN	MX	10 aspmx2.googlemail.com.
itsecforu.ru.		5m	IN	MX	10 aspmx3.googlemail.com.
itsecforu.ru.		5m	IN	MX	5 alt1.aspmx.l.google.com.
itsecforu.ru.		5m	IN	MX	5 alt2.aspmx.l.google.com.

Скрипт будет автоматически удалять поддомены, чтобы найти правильные NS (серверы аутентичных имен).

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий