Sự khác biệt giữa `dig` và` host` khi truy vấn một máy chủ tên cụ thể là gì?


11

Tôi đã sử dụng lệnh này để xác minh xem tôi có thiết lập chính xác với nhà cung cấp DNS không:

host hostname.example.com ns1.example-nameserver.com

Theo như tôi có thể nói, điều này yêu cầu ns1.example-nameserver.comtra cứu hostname.example.comvà báo cáo câu trả lời. Tôi đã nhận được một phản hồi không tìm thấy máy chủ vì vậy tôi nghĩ rằng tôi đã làm sai. Tuy nhiên, không chỉ định máy chủ tên của họ (do đó cho phép máy chủ tên ISP của tôi tìm kiếm) Tôi đã nhận được phản hồi chính xác ( hostnamelà một CNAMEvấn đề nếu nó quan trọng). Tôi không thể hiểu được điều này vì vậy tôi đã tìm kiếm xung quanh và tìm thấy diglệnh:

dig @ns1.example-nameserver.com hostname.example.com

Theo như tôi có thể nói điều này thực hiện tương tự như hostlệnh - yêu cầu một máy chủ tên cụ thể tìm kiếm máy chủ. Do đó, tôi kết luận rằng họ phải làm điều đó khác đi bằng cách nào đó và các máy chủ tên bộ đệm phải sử dụng cùng một phương thức như dig.

Kết luận của tôi là đúng hoặc sai, nếu nó đúng:

Sự khác biệt giữa hai phương pháp tra cứu này là gì?

Nếu nó sai:

Những hiểu lầm của tôi về DNS và là gì hostdigcác lệnh đã dẫn tôi đến kết luận này?

Ví dụ đầu ra:

$ host cardiff.tzmchapters.org ns1.livedns.co.uk
Using domain server:
Name: ns1.livedns.co.uk
Address: 213.171.192.250#53
Aliases: 

Host cardiff.tzmchapters.org not found: 3(NXDOMAIN)

$ dig @ns1.livedns.co.uk cardiff.tzmchapters.org

; <<>> DiG 9.8.3-P1 <<>> @ns1.livedns.co.uk cardiff.tzmchapters.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23620
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;cardiff.tzmchapters.org.   IN  A

;; ANSWER SECTION:
cardiff.tzmchapters.org. 3600   IN  CNAME   ghs.google.com.

;; AUTHORITY SECTION:
google.com.     3600    IN  SOA ns1.livedns.co.uk. admin.google.com. 1354213742 10800 3600 604800 3600

;; Query time: 27 msec
;; SERVER: 213.171.192.250#53(213.171.192.250)
;; WHEN: Mon Apr 22 23:47:05 2013
;; MSG SIZE  rcvd: 128

cả hai lệnh nên hoạt động theo cùng một cách trong trường hợp này. Bạn có thể hiển thị đầu ra đầy đủ của mỗi lệnh?
Renan

Chú ý cả hai dighostbáo cáo NXDOMAIN. Với digbạn có thể thấy nó trong tiêu đề (dòng thứ 5 không trống của đầu ra) và với hostnó rõ ràng hơn. NXDOMAINcó nghĩa là tên miền không tồn tại. Tuy nhiên, a CNAMEđược trả lại trong phần câu trả lời! Tôi tin rằng đó là một lỗi trong máy chủ DNS!
Celada

Vì vậy, trong trường hợp đó, làm dighostcả hai gửi cùng một gói truy vấn, nhận cùng một gói phản hồi chính xác (ngoài bất kỳ dấu thời gian nào), nhưng giải thích nó khác nhau? Có hostbảo lãnh ra ngay khi nó nhìn thấy NXDOMAIN?
jhabbott

FWIW Tôi có vấn đề ngược lại chính xác trên một tên miền phụ cụ thể. Sử dụng máy chủ lưu trữ trên tên miền phụ cụ thể này cung cấp bản ghi dự kiến ​​cho thấy tên miền phụ cụ thể này phân giải thành tên máy chủ chính tắc dự kiến. Tuy nhiên, khi sử dụng đào trên tên miền phụ cụ thể này - tôi nhận được phản hồi rằng bản ghi không tồn tại. Ngoài ra, điều hướng đến tên miền phụ này bằng trình duyệt không hoạt động. Tôi đã thử nhiều lần, kiểm tra lỗi chính tả, v.v ... Các lệnh rõ ràng KHÔNG hoạt động theo cùng một cách.
user12345

Câu trả lời:


13

host, dignslookuptất cả chia sẻ hầu hết các chức năng tương tự. Trong trường hợp bạn đang hỏi về (hỏi một câu hỏi DNS cụ thể cho một máy chủ tên cụ thể) dighost(và thực tế nslookup) hành xử giống hệt nhau.

Đối với khắc phục sự cố DNS, digđược ưu tiên vì định dạng đầu ra của nó "thô" hơn: trong đầu ra của nó, nó hiển thị trực tiếp nội dung của cả 4 trường trong phản hồi DNS: câu hỏi, câu trả lời, quyền hạn và các phần bổ sung (cộng với các cờ trong tiêu đề) Và nó cũng có nhiều lựa chọn hơn. hostmặt khác, có định dạng đầu ra thân thiện hơn với người dùng.

Nếu bạn không cần một tùy chọn mà một trong số các lệnh đó và các lệnh khác không có, hoặc một phần thông tin mà một trong số chúng đưa ra và các thông tin khác thì không, đó là vấn đề ưu tiên.


2
Nếu họ làm điều tương tự ở phía mạng (truy vấn thực tế), làm thế nào tôi có thể nhận được máy chủ không tìm thấy khi sử dụng hostnhưng câu trả lời đúng khi sử dụng dig? Ngay cả khi máy chủ được cấu hình bằng một cài đặt cụ thể (do lựa chọn hoặc do tai nạn) để gây ra điều này, nó phải có khả năng phân biệt các yêu cầu.
jhabbott

Không! Hai lệnh bạn đưa ra trong câu hỏi của bạn là tương đương và chúng sẽ tạo ra cùng một câu trả lời! Bạn có chắc chắn rằng digđã cung cấp cho bạn một câu trả lời thực tế và không phải là một bản ghi trong phần bổ sung hoặc thẩm quyền? Như Renan gợi ý, nó có thể giúp hiển thị đầu ra.
Celada

Ok, tôi đã thêm một số ví dụ đầu ra. Tôi nhận được kết quả tương tự ở nhà và tại nơi làm việc. Khi tôi không chỉ định máy chủ tên sẽ sử dụng và ISP của tôi xử lý truy vấn, sẽ hosthoạt động tốt. Hãy tự mình thử và cho tôi biết kết quả.
jhabbott

Chỉ cần xem lại điều này - ISP cuối cùng đã nói với tôi rằng máy chủ của họ được cấu hình không đáp ứng các truy vấn trực tiếp của khách hàng, chỉ cho các máy chủ tên khác yêu cầu chuyển thông tin - có digtruy vấn theo cách khác, như máy chủ tên không?
jhabbott

1
đào có thể thực hiện cả câu hỏi thông thường (tất cả các loại trừ AXFR) và chuyển vùng (loại AXFR) nhưng các nhà khai thác DNS thường hạn chế chuyển vùng đối với nô lệ được ủy quyền để bạn có thể muốn sử dụng các câu hỏi thông thường
Celada

0

Nếu bạn đang sử dụng tên máy chủ không phải FQDN, kết quả có thể khác vì hostsẽ sử dụng các miền tìm kiếm trong resolv.confkhi digkhông mặc định.

Bạn phải sử dụng +searchtùy chọn nếu bạn muốn digsử dụng resolv.conf(hoặc thêm nó vào ~/.digrc).

Ví dụ:

$ host foo
foo.myfqdn.com has address 10.1.2.3

$ dig +short foo
# (no result)

$ dig +short +search foo
10.1.2.3
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.