Bagaimana saya bisa melihat Time-To-Live (TTL) untuk catatan DNS?

117

Saya ingin melihat nilai Time-To-Live (TTL) untuk catatan CNAME.

Saya memiliki akses untuk menggali (di Apple Mac OS X), yang memberi saya jawaban seperti ini:

% dig host.example.gov
<*SNIP*>
;; ANSWER SECTION:
host.example.gov.       43200   IN  CNAME   host1.example.gov.
host1.example.gov.      43200   IN  A       192.168.16.10

Apakah nilai '43200' TTL untuk catatan DNS ini?

Stefan Lasiewski
sumber

Jawaban:

142

Ya, nomor yang ada adalah jumlah detik yang tersisa sampai catatan itu kedaluwarsa (asalkan kami tidak menanyakan server nama yang berwenang). Tentunya dengan CNAME ada tingkat pengalihan, jadi TTL untuk catatan A yang ditunjukkannya dalam kasus ini mungkin juga penting.

Jika Anda menunggu beberapa detik dan menjalankan menggali lagi di server nama lokal Anda, Anda akan melihat bahwa nomor TTL berkurang dengan jumlah detik yang Anda tunggu (kurang-lebih). Saat mencapai 0, itu akan menyegarkan atau jika server nama Anda menyegarkan zona untuk beberapa alasan.

Seperti disebutkan di atas, ada perbedaan antara penggalian dijalankan terhadap server nama dengan entri yang di-cache dan server nama yang otoritatif untuk entri itu.

(dalam contoh yang saya gunakan di bawah ini saya menggunakan tanda +noauthority +noquestion& +nostatshanya untuk menjaga keluaran tetap).

Perhatikan perbedaan antara pertanyaan berikut:

$ dig +noauthority +noquestion +nostats stackoverflow.com @ns2.p19.dynect.net.

; <<>> DiG 9.7.0-P1 <<>> +noauthority +noquestion +nostats stackoverflow.com @ns2.p19.dynect.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50066
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; ANSWER SECTION:
stackoverflow.com.  432000  IN  A   69.59.196.211

Jadi dalam kueri di atas, kami meminta server nama yang resmi untuk stackoverflow.com. Jika Anda memperhatikan flagsbagian ini, perhatikan secara khusus bendera aa yang menunjukkan ini adalah jawaban yang berwenang (yaitu tidak di-cache).

$ dig +noauthority +noquestion +noadditional +nostats stackoverflow.com 

; <<>> DiG 9.7.0-P1 <<>> +noauthority +noquestion +noadditional +nostats stackoverflow.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43514
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; ANSWER SECTION:
stackoverflow.com.  246696  IN  A   69.59.196.211

Dalam kueri di atas, kami tidak memiliki bendera aa , dan TTL akan terus berkurang saat kami kueri dan kueri. Ini pada dasarnya adalah counter yang saya bicarakan sebelumnya.

Philip Reynolds
sumber
49

Jika Anda terjebak di kotak windows dan hanya memiliki akses ke nslookup:

nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com
M Sleman
sumber
15

Is the value '43200' the TTL for this DNS record?

Ya - seperti yang dilaporkan kepada Anda oleh server yang menjawab kueri Anda (jika Anda meminta server caching itu akan mengembalikan sisa waktu dalam cache-nya).

Untuk melihat set TTL pada kueri rekaman aktual nameserver otoritatif ( dig @some.dns.server host.example.gov- Server DNS otoritatif akan terdaftar di bagian Otoritas dari output penggalian)

Periksa cepat untuk melihat apakah Anda meminta NS otoritatif: Jika Anda menjalankan diglagi dan TTL berubah Anda mungkin memukul cache. Jika tetap sama, Anda mungkin meminta server otoritatif (atau yang telah melanggar caching).

voretaq7
sumber
1
jika ttl tidak berubah, itu bisa saja salah satu yang meyakini dirinya otoritatif: pemilik domain mungkin telah mengubah server DNS tanpa menutupg yang lama .... mengalami masalah itu bulan lalu.
Jasen
2
@ Yasen Ya, itu pasti mungkin (Ini menunjukkan sesuatu yang penting juga: Admin DNS akan membeli minuman di tamasya perusahaan berikutnya untuk mengacaukan migrasi!)
voretaq7
7

Saya tidak bisa melihat server otoritatif di keluaran penggalian standar, tetapi berikut ini

dig +nssearch host.example.com

mengembalikannya, yang kemudian dapat digunakan seperti yang dijelaskan oleh voretaq7 untuk mendapatkan nilai TTL aktual untuk catatan.

Pembaruan: terus lupa bagaimana melakukan ini dan harus kembali, jadi tuliskan skrip kecil untuk mengambil dulu server nama yang otoritatif lalu gali menggunakannya

#!/bin/bash

show_help(){
        echo Usage $0 domain
}

if [ -z "$1" ]; then
        show_help
        exit 1
fi

DOMAIN=$1
APEX_DOMAIN=`echo $DOMAIN | sed 's/\(.*\.\)\([^.]*\.[^.]*\)/\2/'`
FIRST_AUTHORITATIVE_NS=$(dig +nssearch $APEX_DOMAIN | awk '$1=="SOA"{sub(".$","",$2);print $2;exit;}')

echo
echo Using authoritative nameserver $FIRST_AUTHORITATIVE_NS

dig @$FIRST_AUTHORITATIVE_NS $@
Adam
sumber