Tại sao DNS dự phòng địa lý cần thiết cho các trang web nhỏ?


31

Đây là một câu hỏi Canonical về dự phòng địa lý DNS.

Kiến thức cực kỳ phổ biến rằng các máy chủ DNS dự phòng địa lý được đặt tại các vị trí thực tế riêng biệt rất được mong muốn khi cung cấp các dịch vụ web linh hoạt. Điều này được đề cập sâu trong tài liệu BCP 16 , nhưng một số lý do được đề cập thường xuyên nhất bao gồm:

  • Bảo vệ chống lại thảm họa trung tâm dữ liệu. Động đất xảy ra. Hỏa hoạn xảy ra trong các giá đỡ và lấy ra các máy chủ và thiết bị mạng gần đó. Nhiều máy chủ DNS sẽ không giúp bạn nhiều nếu các sự cố vật lý tại trung tâm dữ liệu loại bỏ cả hai máy chủ DNS cùng một lúc, ngay cả khi chúng không nằm trong cùng một hàng.

  • Bảo vệ chống lại các vấn đề ngang hàng. Nhiều máy chủ DNS sẽ không ngăn chặn sự cố nếu mạng ngang hàng được chia sẻ mất một giấc ngủ ngắn. Cho dù vấn đề ngược dòng hoàn toàn đưa bạn ngoại tuyến hoặc đơn giản là cách ly tất cả các máy chủ DNS của bạn khỏi một phần cơ sở người dùng của bạn, kết quả cuối cùng là mọi người không thể truy cập tên miền của bạn ngay cả khi chính các dịch vụ được đặt trong một trung tâm dữ liệu hoàn toàn khác.

Điều đó rất tốt và tốt, nhưng các máy chủ DNS dự phòng có thực sự cần thiết nếu tôi đang chạy tất cả các dịch vụ của mình khỏi cùng một địa chỉ IP không? Tôi không thể thấy việc có một máy chủ DNS thứ hai sẽ mang lại cho tôi bất kỳ lợi ích nào nếu không ai có thể nhận được bất cứ điều gì được cung cấp bởi tên miền của tôi.

Tôi hiểu rằng đây được coi là một thực tiễn tốt nhất, nhưng điều này thực sự có vẻ vô nghĩa!


Câu trả lời:


33

Lưu ý: Nội dung tranh chấp, tham khảo ý kiến ​​cho cả hai câu trả lời. Lỗi đã được tìm thấy và Q & A này cần được đại tu.

Tôi đang loại bỏ chấp nhận từ câu trả lời này trong thời gian này cho đến khi trạng thái của Hỏi & Đáp chính tắc này được giải quyết đúng đắn. (xóa câu trả lời này cũng sẽ xóa các bình luận đính kèm, đây không phải là cách để đi IMO. Có lẽ sẽ biến nó thành một câu trả lời wiki cộng đồng sau khi chỉnh sửa mở rộng.)


Tôi có thể trích dẫn RFC ở đây và sử dụng thuật ngữ kỹ thuật, nhưng đây là một khái niệm bị nhiều người bỏ qua ở cả hai đầu của phổ kiến ​​thức và tôi sẽ cố gắng trả lời điều này cho đối tượng rộng hơn.

Tôi hiểu rằng đây được coi là một thực tiễn tốt nhất, nhưng điều này thực sự có vẻ vô nghĩa!

Nó có vẻ vô nghĩa ... nhưng thực tế không phải vậy!

Các máy chủ đệ quy rất tốt trong việc ghi nhớ khi các máy chủ từ xa không trả lời truy vấn, đặc biệt khi chúng thử lại và vẫn không bao giờ thấy phản hồi. Nhiều người thực hiện bộ nhớ đệm tiêu cực của những lỗi giao tiếp này và sẽ tạm thời đặt các máy chủ tên không phản hồi vào khung hình phạt trong một khoảng thời gian không quá năm phút. Cuối cùng, thời gian "phạt" này hết hạn và họ sẽ tiếp tục liên lạc. Nếu truy vấn xấu thất bại một lần nữa, họ sẽ quay lại hộp, nếu không, nó sẽ quay trở lại hoạt động như bình thường.

Đây là nơi chúng ta gặp phải vấn đề máy chủ tên duy nhất:

  • Thời hạn phạt là bản chất của việc thực hiện luôn luôn lớn hơn hoặc bằng thời lượng của sự cố mạng. Trong hầu hết các trường hợp, nó sẽ lớn hơn, tối đa thêm năm phút nữa.
  • Nếu máy chủ DNS duy nhất của bạn rơi vào hộp hình phạt, truy vấn liên quan đến lỗi sẽ hoàn toàn chết trong toàn bộ thời gian.
  • Sự gián đoạn định tuyến ngắn xảy ra trên internet nhiều hơn hầu hết mọi người nhận ra. Truyền lại TCP / IP và các biện pháp bảo vệ ứng dụng tương tự thực hiện tốt công việc che giấu điều này khỏi người dùng, nhưng điều đó hơi khó tránh khỏi. Internet thực hiện rất tốt việc định tuyến xung quanh thiệt hại này phần lớn do các biện pháp bảo vệ được xây dựng theo các tiêu chuẩn khác nhau hỗ trợ ngăn xếp mạng ... nhưng điều đó cũng bao gồm các mạng được tích hợp trong DNS và có máy chủ DNS dự phòng địa lý là một một phần trong đó

Tóm lại, nếu bạn đi với một máy chủ DNS duy nhất (điều này bao gồm sử dụng cùng một địa chỉ IP nhiều lần trên NScác bản ghi), điều này sẽ xảy ra. Nó cũng sẽ xảy ra nhiều hơn bạn nghĩ, nhưng vấn đề sẽ rất rời rạc đến mức tỷ lệ thất bại 1) được báo cáo cho bạn, 2) được sao chép và 3) bị ràng buộc với vấn đề cụ thể này rất gần với số không. Họ gần như bằng không nếu bạn tham gia hỏi đáp này mà không biết quy trình này hoạt động như thế nào, nhưng may mắn là bây giờ không nên như vậy!

Điều này có nên làm phiền bạn không? Nó không thực sự là nơi tôi nói. Một số người sẽ không quan tâm đến vấn đề gián đoạn năm phút này, và tôi không ở đây để thuyết phục bạn về điều đó. Những gì tôi đang ở đây để thuyết phục bạn là bạn làm trong thực tế hy sinh một cái gì đó bởi chỉ chạy một máy chủ DNS duy nhất, và trong tất cả các kịch bản.


1
Một số hệ thống cũng vô vọng phụ thuộc vào dns - tra cứu không bị lỗi. Đó là một điểm chung của sự thất bại mà thiếu sự dư thừa gây ra nhiều rắc rối.
artifex

18
Mail, được lưu trong bộ nhớ cache, là một ví dụ cổ điển về cách bạn có thể tự bắn vào chân mình bằng DNS cùng lúc với phần còn lại của cơ sở hạ tầng. Với DNS dự phòng, khi trang web của bạn không hoạt động, thư chỉ xếp hàng trên máy chủ của người gửi và được gửi sau khi khôi phục. Với một DNS duy nhất, thư gửi đến được gửi trong khi bạn xuống thường sẽ bị từ chối vĩnh viễn bởi máy chủ của người gửi có tên miền không tồn tại hoặc lỗi tương tự. Thư gửi đi được gửi từ các hệ thống ngoại vi (tĩnh) cũng có thể không thành công, vì miền người gửi hiện không giải quyết được.
MadHatter hỗ trợ Monica

5
Ngoài ra, một tên miền thường không chỉ là web - đó cũng là email. Nếu bạn đang sử dụng nhà cung cấp dịch vụ email cho tên miền của mình, họ có thể không gặp sự cố mặc dù máy chủ web của bạn và nếu bạn có DNS dư thừa, bạn vẫn có thể nhận được email.
Jenny D nói Phục hồi lại

5m chỉ là thời gian thử lại của một máy chủ? Điều này sẽ không nhân với nhiều máy chủ trong chuỗi và máy khách cũng sẽ lưu các truy vấn xấu?
Nils

@Nils Bạn có thể tua lại một chút không? Tôi gặp khó khăn trong việc xác định xem bạn có nghĩa là nhiều máy chủ trong một cụm đệ quy hay nhiều máy chủ có thẩm quyền. Khoảng thời gian lưu trữ âm 5m là cho mỗi máy chủ, do đó bạn phải nhận được rất nhiều yêu cầu để nhận một bản ghi âm được lưu trong bộ đệm đệ quy trên toàn bộ cụm đệ quy - làm cho các lỗi thậm chí còn lẻ tẻ hơn.
Andrew B

-1

OP hỏi:

Điều đó rất tốt và tốt, nhưng các máy chủ DNS dự phòng có thực sự cần thiết nếu tôi đang chạy tất cả các dịch vụ của mình khỏi cùng một địa chỉ IP không? Tôi không thể thấy việc có một máy chủ DNS thứ hai sẽ mang lại cho tôi bất kỳ lợi ích nào nếu không ai có thể nhận được bất cứ điều gì được cung cấp bởi tên miền của tôi.

Câu hỏi tuyệt vời!

Câu trả lời tốt nhất được cung cấp bởi Giáo sư Daniel J. Bernstein, Tiến sĩ Berkeley , người không chỉ là nhà nghiên cứu, nhà khoa học và nhà mật mã học nổi tiếng thế giới, mà còn viết một bộ DNS rất phổ biến và được đón nhận có tên là DJBDNS ( phát hành lần cuối 2001- 02-11 , vẫn phổ biến cho đến ngày nay).

http://cr.yp.to/djbdns/third-party.html (2003-01-11)

Chi phí và lợi ích của dịch vụ DNS của bên thứ ba

Hãy chú ý đến phần ngắn gọn và súc tích này:

Đối số sai lệch cho dịch vụ DNS của bên thứ ba

Giáo dục

Chiến thuật thứ hai là tuyên bố rằng các máy khách DNS phổ biến sẽ làm điều gì đó đặc biệt là Ác ma khi chúng không thể truy cập tất cả các máy chủ DNS. Vấn đề với lập luận này là tuyên bố là sai. Bất kỳ ứng dụng khách nào như vậy rõ ràng là có lỗi và sẽ không thể tồn tại trên thị trường: xem xét điều gì xảy ra nếu bộ định tuyến của khách hàng bị hỏng trong thời gian ngắn hoặc nếu mạng của khách hàng bị ngập tạm thời.

Như vậy, câu trả lời ban đầu cho câu hỏi này không thể sai hơn.

Có, mất mạng tạm thời ngắn kéo dài một vài giây xảy ra mọi lúc mọi nơi. Không, việc không giải quyết tên trong thời gian ngừng hoạt động như vậy sẽ không được lưu trong bất kỳ số phút nào (nếu không, ngay cả khi thiết lập tốt nhất các máy chủ tên có thẩm quyền cao trên thế giới sẽ không có ích).

Bất kỳ phần mềm nào tự do thực hiện hướng dẫn bảo thủ trong tối đa 5 phút kể từ RFC 1998-03 để lỗi bộ nhớ cache chỉ đơn giản là bị phá vỡ bởi thiết kế và có thêm một máy chủ dự phòng địa lý sẽ không thể khắc phục được.

Trong thực tế, theo thời gian chờ DNS được lưu trong bao lâu? , trong BIND, SERVFAILtheo truyền thống , điều kiện này hoàn toàn KHÔNG được lưu trong bộ nhớ cache trước năm 2014 và kể từ năm 2015, được lưu mặc định chỉ trong 1 giây , ít hơn so với những gì người dùng trung bình đạt được khi hết thời gian giải quyết và nhấn lại nút Làm mới .

(Và ngay cả trước khi chúng ta đạt đến điểm trên về việc có nên lưu bộ nhớ vào độ phân giải hay không, phải mất nhiều hơn một vài gói bị rơi ngay cả khi lần đầu tiên xảy ra lần đầu tiên.

Hơn nữa, các nhà phát triển BIND thậm chí đã triển khai mức trần cho tính năng, chỉ trong 30 giây, thậm chí là trần (ví dụ: giá trị tối đa mà tính năng sẽ chấp nhận), thấp hơn 10 lần so với đề xuất 5 phút (300 giây) từ RFC, đảm bảo rằng ngay cả những quản trị viên có thiện chí nhất (trong số những người sử dụng bóng mắt) sẽ không thể bắn vào chân người dùng của họ.


Ngoài ra, có nhiều lý do khiến bạn không muốn chạy dịch vụ DNS của bên thứ ba - đọc toàn bộ djbdns/third-party.htmlthông tin chi tiết và việc thuê một máy chủ phụ nhỏ chỉ để DNS tự quản lý hầu như không được bảo hành khi không cần khác với BCP 16 tồn tại cho một nỗ lực như vậy.

Theo kinh nghiệm "giai thoại" cá nhân của tôi về việc sở hữu và thiết lập tên miền kể từ ít nhất năm 2002, tôi có thể nói với bạn một cách chắc chắn và trung thực rằng tôi thực sự đã có một thời gian ngừng hoạt động đáng kể trong các lĩnh vực khác nhau của mình do hoạt động chuyên nghiệp Các máy chủ bên thứ ba của các nhà đăng ký và nhà cung cấp dịch vụ lưu trữ của tôi , một nhà cung cấp tại một thời điểm và trong nhiều năm qua, tất cả đều có sự cố của họ, không có sẵn, đã đưa tên miền của tôi xuống một cách không cần thiết, cùng lúc khi địa chỉ IP của tôi HTTP và SMTP cho một tên miền nhất định được lưu trữ từ) hoàn toàn có thể truy cập được. Xin lưu ý rằng những lần ngừng hoạt động này xảy ra với nhiều nhà cung cấp độc lập, được tôn trọng và hoạt động chuyên nghiệp, và không có nghĩa là sự cố riêng lẻ, và xảy ra trên cơ sở hàng năm, và, như một dịch vụ của bên thứ ba,hoàn toàn nằm ngoài tầm kiểm soát của bạn ; nó chỉ xảy ra mà ít ai từng nói về nó lâu dài.


Nói ngắn gọn:

DNS dự phòng địa lý hoàn toàn KHÔNG cần thiết cho các trang web nhỏ.

Nếu bạn đang chạy tất cả các dịch vụ của mình trên cùng một địa chỉ IP , việc thêm DNS thứ hai rất có thể dẫn đến một điểm thất bại bổ sung và gây bất lợi cho tính khả dụng liên tục của tên miền của bạn. "Sự khôn ngoan" luôn luôn phải làm điều đó trong bất kỳ tình huống có thể tưởng tượng là một huyền thoại rất phổ biến, thực sự; BẮT ĐẦU.

Tất nhiên, lời khuyên sẽ hoàn toàn khác nếu một số dịch vụ của tên miền, đó là web (HTTP / HTTPS), thư (SMTP / IMAP) hoặc giọng nói / văn bản (SIP / XMPP), đã được bên thứ ba phục vụ các nhà cung cấp, trong trường hợp loại bỏ IP của chính bạn thành một điểm thất bại thực sự sẽ là một cách tiếp cận rất khôn ngoan và dự phòng địa lý thực sự sẽ rất hữu ích.

Tương tự, nếu bạn có một trang web đặc biệt phổ biến với hàng triệu khách truy cập và cố tình yêu cầu sự linh hoạt và bảo vệ bổ sung của DNS dự phòng địa lý theo BCP 16, thì bạn có thể không sử dụng một máy chủ / trang web duy nhất cho web / mail / giọng nói / văn bản đã có, vì vậy câu hỏi và câu trả lời này rõ ràng không áp dụng. Chúc may mắn!


Mặc dù tôi rất vui khi được mời các chuyên gia thành lập để xem xét cả hai câu trả lời, nhưng tôi nhận được nhiều hơn chỉ là một chút rung cảm của sân khấu từ câu nói này. Như vậy, trong khi tôi sẽ chấp nhận bất kỳ ý kiến ​​nào được đưa ra bởi các bên có ý kiến ​​mà tôi tin tưởng hơn nhiều so với của bạn hoặc của tôi, tôi chọn cách tự mình tham gia vào chủ đề bình luận này.
Andrew B

Tôi không chắc ý kiến ​​của bạn muốn nói là gì. Bạn đã trả lời câu hỏi của riêng mình bằng một đối số đơn giản là không hợp lệ theo điểm được minh họa trong câu trả lời của tôi, được trích dẫn trực tiếp từ DJB. Câu trả lời của bạn không chính xác; như vậy, bạn đang làm bất đồng với cộng đồng bằng cách nêu lên một huyền thoại. Nếu bạn muốn hủy bỏ câu trả lời của mình và chấp nhận câu trả lời của tôi, tôi rất vui khi chấp nhận những lời chỉ trích / chỉnh sửa mang tính xây dựng đối với nó.
cnst

2
Phần mềm tốt sẽ nhận ra phản hồi SERVFAIL (được tạo bởi một máy chủ đệ quy nếu không có máy chủ có thẩm quyền nào có thể truy cập được) và xử lý nó một cách thích hợp, tức là bằng cách xếp hàng thư SMTP. Thật không may, không phải tất cả các phần mềm là tốt. Có một giáo sư nhất định có cách tiếp cận giáo điều để thực hiện các giao thức đã được biết là gây ra các vấn đề tương tác quan trọng ...
Alnitak

2
Tình trạng hiện tại của ngành công nghiệp và những gì trong tự nhiên có liên quan hơn nhiều so với bất cứ điều gì từ năm 2003, chứ chưa nói đến năm 2001. Đây là lý do tại sao các ý kiến ​​của bên thứ ba có liên quan có giá trị hơn so với việc đánh giá vấn đề bằng một bài xã luận ngày, mặc dù có thể có có khả năng sống sót qua thử thách của thời gian. Alnitak đã chỉ ra rằng trí nhớ của tôi về cách BIND xử lý trường hợp này là do lỗi và việc tôi củng cố bộ nhớ đó bằng lời nói từ RFC 2308 thực sự là sai lầm. Rút lại sẽ theo tuần này khi tôi tìm thấy thời gian.
Andrew B

2
Lưu ý bên lề: Tôi đồng ý không tham gia với bạn vì thừa nhận lỗi thực tế từ phía tôi, nhưng có vẻ như chúng tôi trở lại lãnh thổ của sự hiếu chiến biên giới. Tôi xin lỗi vì đã truyền bá thông tin sai lệch và đã nhận lỗi, nhưng tôi không muốn tham gia thêm nữa. (tôi cũng vậy, như bạn dường như có một lịch sử về điều đó ở đây)
Andrew B
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.