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 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 следующим образом:
Вы получите красивую сводку 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 (серверы аутентичных имен).
см. также:
- ⏫ 3 метода проведения разведки DNS
- 🖧 Обзор инструментов перечисления DNS с лучшими практиками и примерами
- 🐉 DNSX – Выполнение нескольких DNS-запросов
- 🖧 9 Примеров команд Host для запроса сведений о DNS
- 🔍 dns monster: Пассивная система перехвата/мониторинга DNS
- 🌐 Как выполнить обратный поиск DNS
- 🐳 Как определить DNS в контейнерах Docker