Làm cách nào tôi có thể thấy Time-To-Live (TTL) cho bản ghi DNS?


117

Tôi muốn xem giá trị Thời gian sống (TTL) cho bản ghi CNAME.

Tôi có quyền truy cập vào đào (trên Apple Mac OS X), cho tôi câu trả lời như sau:

% 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

Giá trị '43200' có phải là TTL cho bản ghi DNS này không?

Câu trả lời:


142

Có, số ở đó là số giây còn lại cho đến khi bản ghi đó hết hạn (miễn là chúng tôi không truy vấn máy chủ tên có thẩm quyền). Rõ ràng với một CNAME có một mức độ chuyển hướng, do đó, bản ghi TTL cho bản ghi A mà nó chỉ ra trong trường hợp này cũng có thể quan trọng.

Nếu bạn đợi một vài giây và chạy đào lại trên máy chủ tên cục bộ của mình, bạn sẽ thấy số TTL giảm theo số giây bạn chờ (khoảng). Khi nó về 0, nó sẽ làm mới hoặc nếu máy chủ tên của bạn làm mới vùng vì một số lý do.

Như đã đề cập ở trên, có một sự khác biệt giữa đào được chạy với máy chủ tên với mục nhập được lưu trong bộ nhớ cache và máy chủ tên có thẩm quyền cho mục đó.

(trong các ví dụ tôi sử dụng bên dưới, tôi sử dụng +noauthority +noquestion& & +nostatscờ chỉ để giữ đầu ra ngắn gọn).

Lưu ý sự khác biệt giữa các truy vấn sau:

$ 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

Vì vậy, trong truy vấn trên, chúng tôi đang truy vấn một máy chủ tên có thẩm quyền cho stackoverflow.com. Nếu bạn chú ý flagsphần này, đặc biệt chú ý đến cờ aa biểu thị đây là câu trả lời có thẩm quyền (nghĩa là không được lưu trong bộ nhớ 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

Trong truy vấn trên, chúng tôi không có cờ aa và TTL sẽ tiếp tục giảm khi chúng tôi truy vấn và truy vấn. Đây thực chất là bộ đếm tôi đã nói trước đây.


49

Nếu bạn tình cờ bị kẹt trên một ô cửa sổ và chỉ có quyền truy cập vào nslookup:

nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com

15

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

Có - như được báo cáo cho bạn bởi máy chủ đã trả lời truy vấn của bạn (nếu bạn hỏi máy chủ bộ đệm, nó sẽ trả về thời gian còn lại trong bộ đệm của nó).

Để xem bộ TTL trên truy vấn bản ghi thực, máy chủ tên có thẩm quyền ( dig @some.dns.server host.example.gov- Các máy chủ DNS có thẩm quyền sẽ được liệt kê trong phần Quyền hạn của đầu ra đào)

Kiểm tra nhanh để xem bạn có hỏi NS có thẩm quyền hay không: Nếu bạn chạy diglại và thay đổi TTL, có lẽ bạn đang nhấn bộ đệm. Nếu nó vẫn như cũ, có lẽ bạn đang hỏi máy chủ có thẩm quyền (hoặc máy chủ đã bị hỏng bộ nhớ đệm).


1
Nếu ttl không thay đổi, đó chỉ có thể là một người tin rằng mình có thẩm quyền: chủ sở hữu tên miền có thể đã thay đổi máy chủ DNS mà không tắt máy chủ cũ .... đã gặp sự cố vào tháng trước.
Jasen

2
@Jasen Vâng, đó là chắc chắn có thể (Nó chỉ ra một cái gì đó quan trọng cũng như: Các admin DNS sẽ mua đồ uống tại công ty đi chơi tiếp theo cho screwing lập di chuyển!)
voretaq7

7

Tôi không thể thấy các máy chủ có thẩm quyền trong đầu ra đào mặc định, nhưng sau đây

dig +nssearch host.example.com

trả về chúng, sau đó có thể được sử dụng như mô tả của voretaq7 để lấy giá trị TTL thực tế cho bản ghi.

Cập nhật: tiếp tục quên cách thực hiện việc này và phải quay lại, vì vậy đã viết một đoạn script nhỏ để tìm nạp máy chủ tên có thẩm quyền sau đó đào sử dụng nó

#!/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 $@
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.