Thứ tự tra cứu DNS được xác định như thế nào?


20

Ví dụ: chúng tôi đã đăng ký tên miền domain.com và thêm hồ sơ máy chủ tên tại máy chủ đăng ký:
ns1.domain.com.
ns2.domain.com.
ns3.domain.com.

Hơn chúng tôi tìm kiếm domain.com . Chúng tôi nhận được tất cả 3 địa chỉ máy chủ tên.
1. Một trong những máy chủ đó sẽ được yêu cầu thêm và tại sao?
2. Thứ tự của các bản ghi NS trong tệp vùng có vấn đề không?
3. Nó có được xác định trong bất kỳ RFC ?

Câu trả lời:


20

Đáng buồn thay, câu trả lời ở đây là "nó phụ thuộc". Các yếu tố phụ thuộc vào nó sẽ thay đổi theo tên miền và cách các máy chủ sở hữu được thiết lập cũng như cách DNS cục bộ của bạn được thiết lập.

Đầu tiên, ví dụ, liên quan đến các bản ghi NS được trả về: hoàn toàn được phép chọn ngẫu nhiên thứ tự mà các bản ghi đó được trả về, vì vậy thứ tự có thể khác nhau mỗi khi bạn yêu cầu. Mặt khác, điều đó không được thực hiện bởi tất cả các triển khai DNS, do đó bạn có thể nhận được một danh sách theo thứ tự tĩnh. Vấn đề là bạn không thể chắc chắn.

Tiếp theo, một số triển khai DNS sẽ truy vấn song song từng NS và sử dụng bất kỳ câu trả lời nào trước. Những người khác sẽ đánh từng cái, xác định nhanh nhất qua một số yêu cầu và sử dụng yêu cầu đó. Hoặc nó chỉ có thể quay vòng.

Có nhiều RFC cho DNS, hai trong số hữu ích hơn mà tôi đã tìm thấy là:

http://www.faqs.org/rfcs/rfc1912.html

http://www.faqs.org/rfcs/rfc1033.html

Tôi nhận ra đây là một câu trả lời không có câu trả lời, không có gì dứt khoát để bạn lấy đi, nhưng đưa ra ở trên, cách duy nhất đúng để bạn xác định hành vi cho một miền nhất định là kiểm tra.


Tôi đã chứng thực câu trả lời của bạn. Tôi sẽ nói điều tương tự nhưng bạn đã đánh bại tôi.
Tonny

Ngoài ra, các khách hàng sử dụng getaddrinfo kết thúc với các kết quả được sắp xếp trong khi các cuộc gọi gethostbyname dường như ngẫu nhiên. Do đó, khách hàng không mong đợi rằng hành vi đó sẽ phá vỡ vòng vây trong một số trường hợp.
Matt

5

Việc triển khai phổ biến nhất mà tôi đã thấy ở cấp độ máy khách, chẳng hạn như các ISP trên toàn thế giới, như sau:

  1. Ai đó (như thuê bao băng thông rộng) yêu cầu máy chủ DNS của ISP giải quyết bản ghi A cho foo.example.com.
  2. ISP kiểm tra bộ đệm của chính nó và nếu bản ghi đó được lưu vào bộ đệm và vẫn được coi là "mới", nó sẽ ngay lập tức được trả lại qua bộ đệm. ( Đây là cách tất cả các bộ đệm DNS hoạt động, do đó chúng không cần phải làm căng máy chủ DNS của trang web đang đề cập. )
  3. Nếu họ không có bản ghi đó được lưu trong bộ nhớ cache hoặc nếu bộ đệm được coi là "cũ / lỗi thời", ISP biết rằng cần phải giải quyết bản ghi mới nhất một lần nữa.
  4. Bây giờ ISP cần biết máy chủ tên nào để truy vấn về bản ghi mới nhất.
  5. ISP bắt đầu bằng cách kiểm tra danh sách lưu trữ của các máy chủ tên có thẩm quyền cho tên miền (đây là ns1.example.com, ns2.example.com, v.v. cùng với IP của họ). Nếu những hồ sơ đó vẫn được coi là mới, nó sẽ bỏ qua bước 8.
  6. Nếu các bản ghi máy chủ tên được lưu trong bộ nhớ cache được coi là hết hạn hoặc nếu nó không có bất kỳ bản ghi được lưu trong bộ nhớ cache nào cho tên miền đó, thì ISP truy vấn máy chủ tên gốc của TLD (chẳng hạn như sổ đăng ký .com nếu đó là tên miền .com) để lấy hầu hết các cặp tên / IP máy chủ cập nhật nhất ví dụ.com. ( Bạn có thể tự thử điều này qua "dig @ b.gtld-servers.net example.com" để xem những người đặt tên gốc cho TLD của bạn biết gì về tên miền của bạn - nếu tên miền của bạn thuộc về TLD com / net / etc thông thường. TLD sẽ phải truy vấn các máy chủ gốc tương ứng của họ. )
  7. Các máy chủ tên gốc cho TLD luôn trả về các máy chủ tên theo thứ tự chính xác mà chúng được chỉ định bởi bạn; không có ngẫu nhiên đi vào. Họ cũng trả lại IP cho mỗi máy chủ tên; cái này được gọi là "GLUE" và là thứ cho phép internet giải quyết vấn đề "con gà và quả trứng" về cách giải quyết tên máy chủ tên máy chủ thành IP trước khi biết bất cứ điều gì về tên miền. Hơn nữa, hầu hết trong số họ (như các cơ quan đăng ký com / net / etc là những công ty lớn nhất) sử dụng thời gian bộ đệm trong 2 ngày để họ không bị mắc kẹt liên tục với "danh sách máy chủ tên miền cho miền X là gì?" yêu cầu. Đây là nguồn kiến ​​thức phổ biến mà bạn PHẢI đợi 2 ngày cho đến khi bạn có thể nói rằng máy chủ tên mới của bạn được biết đến trên toàn thế giới, sau khi bạn '
  8. Khi ISP biết máy chủ tên của example.com và IP của họ, chẳng hạn như ns1.example.com, ns2.example.com, ns3.example.com, ISP sẽ chọn một máy chủ ngẫu nhiên từ danh sách đó và gửi đi truy vấn. ( Điều này thật tuyệt vời đối với họ, họ không cần thiết phải đập tất cả các máy chủ DNS của trang web đang được đề cập và họ hỗ trợ thêm cho việc cân bằng tải bằng cách không phải luôn truy vấn máy chủ tên được liệt kê đầu tiên. )
  9. Nếu ISP không nhận được phản hồi từ máy chủ tên đó trong khoảng thời gian chờ đã chỉ định, nó sẽ truy vấn một tên khác trong danh sách.
  10. Khi có phản hồi, ISP hiện lưu nó trong bộ đệm cục bộ của chính nó. Về việc nó sẽ được lưu trữ trong bao lâu; mỗi bản ghi được trả về bởi bất kỳ máy chủ DNS nào cũng có thời gian "hết hạn mềm" (tính bằng giây) được liên kết với nó, đó là thời gian máy khách truy vấn (như máy chủ DNS của ISP) được phép lưu trữ bản ghi đó trước khi được xem xét " vẫn có thể sử dụng được nhưng có thể đã lỗi thời, một truy vấn mới sẽ diễn ra NẾU KHẢ NĂNG chỉ để đảm bảo rằng nó đã không thay đổi. " Ngoài ra còn có thời gian "hết hạn cứng" được chỉ định trong bản ghi "SOA" (Bắt đầu quyền hạn) của từng máy chủ tên riêng lẻ (bạn có thể thấy thông qua "dig @ ns1.example.com example.com -t soa"), trong đó chỉ định "giới hạn cứng" toàn cầu cho tất cả các bản ghi được máy chủ đó trả về, sau đó, bất kỳ bộ đệm nào NÊN XÓA hồ sơ lưu trong bộ nhớ cache của mình NGAY NẾU máy chủ tên bị hỏng và không thể tra cứu lại các bản ghi. Thông thường, thời hạn sử dụng mềm là từ 30 phút đến 5 giờ và hết hạn sử dụng thường là từ 1-3 tuần.
  11. Sau công việc mệt mỏi đó, ISP cuối cùng cũng có bản ghi DNS mới nhất và có thể trả lại cho thuê bao băng thông rộng truy vấn, người không phải là người khôn ngoan hơn một công việc to lớn đã diễn ra sau hậu trường!

Quá trình này được lặp đi lặp lại cho MỌI tra cứu hồ sơ. Tuy nhiên, chỉ có truy vấn đầu tiên thực hiện toàn bộ công việc; IP máy chủ tên sẽ được lưu vào bộ đệm sau đó và các truy vấn tiếp theo đến máy chủ DNS bộ đệm của ISP sẽ nhanh chóng có thể chuyển xuống bước 8.

Bây giờ, như đối với ngẫu nhiên của bước 8, nó hoạt động ở mức kỷ lục. Giả sử thuê bao băng thông rộng của ISP đó đã hỏi về các bản ghi sau:

  • Một foo.example.com
  • Một ví dụ.com
  • Một www.example.com
  • MX example.com (một khách hàng ISP không nên yêu cầu bản ghi này, nhưng đó chỉ là một ví dụ)

Mỗi bản ghi sẽ được xử lý như một "thực thể" riêng biệt, được lưu trữ và tra cứu độc lập. Vì vậy, giả sử người đăng ký và ISP chưa bao giờ gặp phải tên miền trước đó và cả hai đều có các bản ghi lưu trữ hoàn toàn bằng không. Việc tra cứu có thể như sau:

  • Một foo.example.com qua ns1.example.com, sau đó được lưu trữ trong bộ đệm của ISP
  • Một example.com qua ns3.example.com, sau đó được lưu trữ trong bộ đệm của ISP
  • Một www.example.com qua ns2.example.com, sau đó được lưu trữ trong bộ đệm của ISP
  • MX example.com qua ns3.example.com, sau đó được lưu trong bộ đệm ISP

Bất cứ khi nào các bản ghi được lưu trong bộ nhớ cache hết hạn, quy trình được lặp lại, do đó bạn thậm chí không biết rằng các yêu cầu tiếp theo cho bản ghi đó sẽ sử dụng lại cùng một máy chủ.

Do đó, mục tiêu lớn nhất tuyệt đối của bạn là đảm bảo rằng tất cả các máy chủ DNS của bạn hoàn toàn đồng bộ với nhau, phản ánh hoàn hảo mọi bản ghi DNS trên mỗi máy chủ. Bạn không bao giờ biết máy chủ DNS nào sẽ bị tấn công và bạn không thể dựa vào bất kỳ thứ tự nào. Không có những điều như vậy.

Hơn nữa, như Adam C đã đề cập, bản thân các máy chủ DNS ở cấp độ máy chủ (example.com) có thể trả về các bản ghi NS và ngẫu nhiên hóa thứ tự của các máy chủ đó. Điều rất phổ biến đối với các máy chủ DNS thông thường là ngẫu nhiên hóa các bản ghi NS của họ trong trường hợp không may là việc triển khai DNS kém luôn chọn máy chủ tên được trả về đầu tiên. Tuy nhiên, máy chủ tên ROOT TLD (đã đề cập trước đó) sẽ không bao giờ chọn ngẫu nhiên danh sách này và danh sách của chúng là điều thực sự quan trọng khi giải quyết tên miền. Đó là lý do tại sao hầu hết các triển khai chọn một máy chủ ngẫu nhiên từ danh sách máy chủ tên, để tránh luôn luôn nhấn cùng một máy chủ và làm quá tải nó.

Được rồi, đó là nguyên tắc của bạn trong cách DNS hoạt động và những gì bạn nên nhớ.

  • Tóm lại: Hãy đối xử với tất cả các máy chủ DNS của bạn như thể chúng chỉ là một máy chủ, biến nó thành mục tiêu cao nhất của bạn trong cuộc sống để đảm bảo rằng tất cả chúng đều có khả năng trả lời bất kỳ câu hỏi nào có thể được ném vào chúng.

Tuyên bố miễn trừ trách nhiệm: Các mục tiêu cao hơn trong cuộc sống so với việc quản lý DNS có thể có sẵn nhưng được bán riêng, hãy sử dụng trí tưởng tượng của bạn. ;-)

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.