Tại sao các truy vấn DNS không thành công nếu máy chủ tên đầu tiên không được đệ quy?


7

Tôi có một hộp Linux (máy chủ Ubuntu 11.10) bên trong miền Windows Active Directory và được gia nhập miền bằng cách sử dụng mở tương tự . Các resolv.conftập tin trông như thế này:

domain mydomain.com
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4

192.168.1.1máy chủ DNS Windows ở đâu cho miền Windows. 8.8.8.88.8.4.4là các máy chủ DNS công cộng của Google mà chúng tôi ưa thích hơn các máy chủ ISP của chúng tôi.

Thiết lập đó đã hoạt động đúng, cho đến khi chúng tôi quyết định vô hiệu hóa đệ quy trong máy chủ DNS của Windows do một số thay đổi trong thiết kế mạng của chúng tôi. Tôi nghĩ rằng điều đó sẽ diễn ra tốt đẹp khi chúng tôi đã định cấu hình nó để sử dụng các máy chủ của Google tiếp theo, nhưng có vẻ như không:

mydomain\myuser@linux-server:~$ dig google.com

; <<>> DiG 9.7.3 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55321
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;google.com.                    IN      A

;; AUTHORITY SECTION:
.                       3600    IN      NS      c.root-servers.net.
.                       3600    IN      NS      d.root-servers.net.
.                       3600    IN      NS      e.root-servers.net.
.                       3600    IN      NS      f.root-servers.net.
.                       3600    IN      NS      g.root-servers.net.
.                       3600    IN      NS      h.root-servers.net.
.                       3600    IN      NS      i.root-servers.net.
.                       3600    IN      NS      j.root-servers.net.
.                       3600    IN      NS      k.root-servers.net.
.                       3600    IN      NS      l.root-servers.net.
.                       3600    IN      NS      m.root-servers.net.
.                       3600    IN      NS      a.root-servers.net.
.                       3600    IN      NS      b.root-servers.net.

;; ADDITIONAL SECTION:
c.root-servers.net.     3600    IN      A       192.33.4.12
d.root-servers.net.     3600    IN      A       128.8.10.90
e.root-servers.net.     3600    IN      A       192.203.230.10
f.root-servers.net.     3600    IN      A       192.5.5.241

;; Query time: 4 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Jan  8 14:02:22 2014
;; MSG SIZE  rcvd: 507

Cũng thế:

mydomain\myuser@linux-server:~$ ping google.com
ping: unknown host google.com

Và tôi cũng đã thất bại với các kết nối proxy mực (mà tôi đã giải quyết bằng cách sử dụng tùy chọn dns_nameservers bên trong cấu hình mực và bỏ qua máy chủ DNS bên trong).

Tại sao các yêu cầu DNS không thành công khi đệ quy bị từ chối bởi máy chủ tên đầu tiên? Máy không nên thử máy chủ tiếp theo? Và tôi có thể làm gì nếu đó là hành vi được mong đợi (được thiết kế)?

EDIT: NSLOOKUP đã cho kết quả (thành công) khác:

mydomain\myuser@linux-server:~$ nslookup google.com
;; Got recursion not available from 192.168.1.1, trying next server
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 173.194.67.102
Name:   google.com
Address: 173.194.67.138
Name:   google.com
Address: 173.194.67.100
Name:   google.com
Address: 173.194.67.113
Name:   google.com
Address: 173.194.67.139
Name:   google.com
Address: 173.194.67.101

Vì vậy, phụ thuộc vào ứng dụng này? Tôi có thể có được điều đó (thử máy chủ tiếp theo nếu lần đầu tiên từ chối đệ quy) hoạt động minh bạch cho tất cả các ứng dụng yêu cầu phân giải tên hoặc giải quyết tên là trách nhiệm của chính chương trình không? (hoặc tôi đang thiếu thứ gì đó ?!) ...

EDIT: Cũng đáng chú ý, mydomain.comlà một địa chỉ được đăng ký và công khai trên internet và không thuộc sở hữu của chúng tôi. Giống như chúng tôi đã thiết lập một tên miền nội bộ có tên apple.comvà tôi đảm bảo với bạn rằng tôi không làm việc cho Apple, ít nhất là chưa ;-).

Câu trả lời:


5

Tôi sợ câu trả lời sẽ là "nó phụ thuộc".

Theo như digcó liên quan, về cơ bản nó là một công cụ được sử dụng để gỡ lỗi thông tin DNS. Do đó, nó cho bạn thấy thông tin mà nó nhận được từ máy chủ tên mà bạn đã hỏi; nó không tiếp tục và làm cho câu hỏi thêm.

Đối với các chương trình khác, nó sẽ phụ thuộc vào chương trình. Hầu hết có thể sẽ sử dụng các chức năng của hệ điều hành để phân giải tên (xem man getnameinfo). Những người khác có thể không. Điều này có nghĩa là nếu bạn liệt kê một máy chủ tên không đệ quy, bạn sẽ có một số lỗi sẽ rất khó xác định.

Nói cách khác, giữ một máy chủ tên không đệ quy trong danh sách các trình phân giải của bạn là một ý tưởng tồi.

Nếu bạn không muốn máy chủ windows được đệ quy, thì tôi khuyên bạn nên thiết lập một máy chủ riêng để hoạt động như một trình giải quyết và hãy để máy chủ đó yêu cầu máy chủ Windows cho các miền bên trong.


Trên thực tế mydomain.comlà một tên miền hợp lệ và đã đăng ký trên internet, tôi nghĩ rằng điều đó có thể gây ra vấn đề cho tên miền đệ quy khác, có thể?
amyassin

Vì 192.168.1.1 không phải là địa chỉ có thể định tuyến công khai, tôi đã giả định rằng đây không phải là máy chủ tên công khai của công ty bạn. Nhưng nếu bạn đã có một máy chủ riêng để trả lời các truy vấn cho các địa chỉ trong miền của mình, tại sao lại giữ máy chủ này trong danh sách trình phân giải? Nó dường như không phục vụ học sinh ...
Jenny D

(Ngoài ra, mydomain.com là tên miền hợp lệ và đã đăng ký, nhưng nó có thực sự là của bạn không?)
Jenny D

Không, tên miền địa phương giống hệt với tên miền khác được sử dụng trên internet nhưng không phải tên miền của chúng tôi. Nói, ví dụ, tên miền địa phương của chúng tôi là apple.com! Tái bút: Tôi biết đó là một ý tưởng tồi nhưng đó là trường hợp đã có và không có thể thay đổi ngay bây giờ ...
amyassin

Không, @Jenny không phải của chúng tôi !!
amyassin
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.