Một bản ghi DNS sẽ thường xuyên thay đổi? [đóng cửa]


17

Làm cách nào để tạo một bản ghi tên miền có thể thay đổi thường xuyên?

Hãy nói example.orgđiểm 203.0.113.0. Hai phút sau nó phải chỉ vào 198.51.100.0.

Nó sẽ là các trang web bình thường đằng sau tên miền ("bình thường" chỉ theo nghĩa được truy cập bằng các trình duyệt web phổ biến) nhưng với tuổi thọ rất ngắn. Tên miền sẽ trỏ đến một địa chỉ tối đa 3-4 giờ trước khi nó được chuyển đổi hoặc tắt. Không cần bảo vệ máy chủ DNS khỏi các truy vấn thường xuyên.

Cách tiếp cận của tôi sẽ là đặt TTL thành 60 giây và chỉ cần thay đổi bản ghi khi phải thực hiện chuyển đổi. Trong trường hợp xấu nhất, nó sẽ khiến người dùng phải chờ tối đa 60 giây trước khi có thể truy cập máy chủ mới.

Bằng cách nào đó tôi không tin tưởng vào điều này ... Một số ISP hoặc trình duyệt có thể bỏ qua hoặc ghi đè lên TTL, phải không? Nếu đó là một mối quan tâm hợp lệ, điều gì sẽ là một TTL hợp lý được mong đợi?

Cảm ơn bạn!


9
Tại sao chính xác bạn cần khả năng này? Loại "trang web bình thường" nào chạy trên cơ sở hạ tầng biến mất sau 3-4 giờ? Có những giải pháp xuất hiện trong đầu, nhưng không rõ bạn đang làm gì với những thay đổi DNS nhanh hay hành vi nào bạn mong đợi trong quá trình chuyển đổi.
Michael - sqlbot

@ Michael-sqlbot, "bình thường" theo nghĩa nó là một ứng dụng web được truy cập qua trình duyệt nhưng nó không phải là một trang web cổ điển. Một ví dụ ứng dụng duy nhất thực sự sẽ có tuổi thọ vài giờ. Tôi chỉ muốn sử dụng nhóm tên miền được chia sẻ cho họ. Tôi đã có lời khuyên để xem xét kỹ thuật cân bằng tải. Nhưng vì các trường hợp ứng dụng không thể thay thế cho nhau nên tôi không chắc nó có thể áp dụng được không.
Andrew8

4
Theo kinh nghiệm của tôi, những điều mơ hồ về Internet khiến DNS trở thành một ứng cử viên nghèo cho 'dịch vụ theo sau'. Mặc dù nó có thể hoạt động trên máy của bạn, hoặc thậm chí mạng công ty của bạn hoặc trên băng thông rộng dễ vỡ của bạn bè, nhưng dường như trên thế giới có một số khách hàng thực sự khủng khiếp phải mất nhiều bội số của bạn để nhận thấy bất kỳ thay đổi nào trong DNS của bạn.
Ralph Bolton

Tại sao không phải là một chuyển đổi dự phòng ip thay thế?
giammin

Câu trả lời:


38

Đây được gọi là bản ghi DNS thông lượng nhanh . Và đó thường là cách các tác giả phần mềm độc hại che giấu các máy chủ cơ sở hạ tầng của họ.

Mặc dù điều này sẽ làm việc cho kế hoạch của bạn, nhưng nó không phải là kế hoạch tốt nhất. Bạn có thể sẽ cần phải có một máy chủ dự phòng hoặc nhiều hơn, trực tuyến và không phải làm gì hầu như mọi lúc. Chỉ khi bạn gặp sự cố với máy chủ chính, bạn mới chuyển sang máy chủ tiếp theo.

Ngay cả khi bạn có chỉ số TTL là 1 phút, một bản ghi rất có thể sẽ có giá trị hơn thế:

  1. Bộ nhớ cache của trình duyệt

    Các trình duyệt thường lưu trữ các bản ghi DNS trong một khoảng thời gian khác nhau. Firefox sử dụng 60 giây , Chrome cũng sử dụng 60 giây , IE 3.x và được lưu trong bộ nhớ cache trước đó trong 24 giờ , IE 4.x trở lên được lưu trong bộ nhớ cache trong 30 phút.

  2. Bộ đệm hệ điều hành

    Windows thường sẽ không tôn vinh TTL . Một TTL cho DND không giống như TTL cho gói IPv4. Đó là một dấu hiệu của sự tươi mới hơn là một sự làm mới bắt buộc. Linux có thể được cấu hình nscd để đặt lượng thời gian người dùng muốn, bỏ qua DNS TTL. Nó có thể lưu trữ các mục trong một tuần, ví dụ.

  3. Bộ nhớ cache ISP

    ISP có thể (và một số sẽ) sử dụng bộ nhớ đệm tích cực để giảm lưu lượng. Họ không chỉ có thể thay đổi TTL mà còn lưu trữ các bản ghi và trả lại cho khách hàng mà không yêu cầu máy chủ DNS ngược dòng. Điều này phổ biến hơn trên các ISP di động, vì chúng thay đổi TTL để khách hàng di động không phàn nàn về độ trễ lưu lượng.

Một bộ cân bằng tải được thực hiện để làm chính xác những gì bạn muốn. Với một bộ cân bằng tải tại chỗ, bạn có thể có 2 hoặc 4 hoặc 10 máy chủ trực tuyến cùng một lúc, chia tải. Nếu một trong số họ ngoại tuyến, dịch vụ sẽ không bị ảnh hưởng. Thay đổi bản ghi DNS sẽ có thời gian chết giữa thời gian máy chủ tắt và DNS được thay đổi. Sẽ mất hơn một phút, bởi vì bạn phải phát hiện thời gian chết, thay đổi hồ sơ và chờ chúng lan truyền.

Vì vậy, sử dụng một bộ cân bằng tải. Nó được tạo ra để làm những gì bạn muốn, và bạn biết chính xác những gì mong đợi. Thiết lập DNS thông lượng nhanh sẽ có kết quả hỗn hợp và không nhất quán.


11
Mặc dù vậy, sử dụng một bộ cân bằng tải. Bạn sẽ có tính sẵn sàng cao, nhóm linh hoạt, nhật ký, nhiều số liệu và số liệu thống kê, có thể ưu tiên máy chủ này hoặc máy chủ khác và ít đau đầu hơn.
ThoriumBR

4
Có, bạn có thể thấy rằng một số ISP khủng khiếp ở đâu đó phải mất hàng giờ hoặc cả ngày để nhận thay đổi DNS của bạn.
Robyn

2
@Mehrdad Tùy thuộc vào cách bạn xác định nó, nó làm. Ở Đức, nếu bạn có đường truyền ADSL, bạn phải xác thực qua PPPoE và sau đó bạn được chỉ định một địa chỉ IP từ phạm vi quay số. Cho đến gần đây (và trên một số dòng, vẫn), kết nối của bạn đã bị ngắt sau 24 giờ, do đó bạn phải đăng nhập lại (hoặc CPE của bạn đã làm điều đó cho bạn).
glglgl

3
Để thêm vào nhận xét của @ glglgl: Điểm quan trọng là bạn đã được chỉ định một địa chỉ IP khác mỗi khi bạn đăng nhập lại. Hành vi này là do cố ý: Các nhà cung cấp muốn ngăn người dùng chạy máy chủ theo cách của họ.
Binarus

1
@Binarus không chỉ điều này, mà thường là một ISP có 2000 người đăng ký không có 2000 IP trên nhóm của họ. Vì không phải mọi khách hàng sẽ hoạt động cùng một lúc, ngay khi một số người dùng ngắt kết nối, một người dùng khác có thể kết nối và lấy cùng một IP.
ThoriumBR

6

DNS và cách thức hoạt động của nó có lẽ đi kèm với sự hiểu lầm, truyền thuyết, mê tín và thần thoại nhiều hơn bất kỳ khía cạnh nào của CNTT.

Ngay cả những người trong chúng ta biết rằng về cơ bản chúng ta đang nói dối (hoặc ít nhất là quá đơn giản hóa) khi chúng ta nói về "sự truyền bá" các thay đổi vẫn có xu hướng sử dụng thuật ngữ này để mô tả một cái gì đó - đồng thời - cực kỳ đơn giản và đơn giản ... nhưng khó giải thích ... và không có gì để làm với công tác tuyên truyền cho mỗi gia nhập , nhưng tất cả mọi thứ để làm với bộ nhớ đệm và bộ nhớ đệm tiêu cực, cả hai đều là một thành phần thiết yếu của cách thức hoạt động hệ thống (và, cho là, làm thế nào nó tránh được sự sụp đổ hoàn toàn dưới trọng lượng riêng của nó) - về cơ bản là từ trong ra ngoài, ngược lại với "lan truyền" thực tế, kéo - không đẩy.

Đối với tất cả những lo lắng và vặn vẹo về các TTL ngắn, chúng có xu hướng hoạt động thường xuyên hơn không, đến mức có thể bạn chỉ muốn thử chúng. Tại $ {day_job}, khi các trang web của chúng tôi di chuyển từ nền tảng "cũ" sang nền tảng "mới", điều đó thường có nghĩa là họ đang di chuyển theo cách mà không có gì trong cơ sở hạ tầng được chia sẻ. Bước đầu tiên của tôi trong quá trình di chuyển như vậy là giảm độ trễ xuống còn 60 giây trước khi cắt để TTL cũ có nhiều bội số của chính nó, cho tôi một sự đảm bảo hợp lý rằng các RR chuyển tiếp có TTL ngắn này sẽ "lan truyền" . " Khi tôi sẵn sàng cắt, tôi cấu hình lại bộ cân bằng cũ để lưu lượng kẹp tóc vào hệ thống mới - trên Internet - sao cho bộ cân bằng không còn cân bằng nhiều hệ thống nội bộ, mà thay vào đó, là "

Sau đó, tôi cắt DNS và xem bộ cân bằng mới và cũ.

Tôi luôn ngạc nhiên khi thấy quá trình chuyển đổi diễn ra nhanh như thế nào. Các tổ chức dường như hầu như luôn luôn là các con nhện tìm kiếm và các trang web "kiểm tra sức khỏe" của bên thứ ba không thể giải thích được về các hồ sơ cũ.

Nhưng có một kịch bản bị phá vỡ có thể dự đoán được: khi cửa sổ trình duyệt của người dùng vẫn mở, họ có xu hướng bám vào địa chỉ đã được phát hiện và thường nó vẫn tồn tại cho đến khi tất cả các cửa sổ trình duyệt của họ bị đóng.

Nhưng trong phần tường thuật trên, bạn tìm thấy giải pháp cho vấn đề: "bộ cân bằng tải" - cụ thể và chính xác hơn là proxy ngược - có thể là hệ thống mà bản ghi DNS được hiển thị của bạn trỏ tới.

Sau đó, proxy ngược lại chuyển tiếp yêu cầu đến đúng địa chỉ IP đích, nó sẽ giải quyết bằng cách sử dụng tên máy chủ "giả" thứ hai với một TTL ngắn, trỏ đến máy chủ back-end thực sự. Bởi vì proxy luôn tôn vinh DNS TTL trên đó Nhập DNS giả, bạn yên tâm về việc chuyển đổi nhanh chóng và đầy đủ.

Mặt trái là bạn có thể định tuyến lưu lượng truy cập thông qua cơ sở hạ tầng bổ sung không cần thiết hoặc trả thêm tiền để vận chuyển qua nhiều ranh giới mạng, một cách dự phòng.

Có những dịch vụ cung cấp loại khả năng này trên phạm vi toàn cầu và dịch vụ mà tôi quen thuộc nhất là CloudFront. (Rất có thể, Cloudflare sẽ phục vụ chính xác cùng một mục đích, vì rất ít thử nghiệm mà tôi đã thực hiện chỉ ra rằng nó cũng hoạt động chính xác và tôi chắc chắn có những mục đích khác.)

Mặc dù chủ yếu được bán trên thị trường dưới dạng CDN, CloudFront là cốt lõi của một mạng lưới các proxy ngược toàn cầu với khả năng tùy chọn lưu trữ các phản hồi. Nếu www.example.comcác điểm tới CloudFront và CloudFront được định cấu hình để chuyển tiếp các yêu cầu này backend.example.comvà bản ghi DNS để backend.example.comsử dụng một TTL ngắn, thì CloudFront sẽ thực hiện đúng, vì nó tôn trọng TTL ngắn đó. Khi bản ghi back-end thay đổi, tất cả lưu lượng sẽ di chuyển theo thời gian TTL chạy xuống.

TTL trên bản ghi phía trước chỉ vào CloudFront và liệu trình duyệt và bộ giải quyết bộ đệm có tôn trọng nó không quan trọng hay không, vì các thay đổi đối với đích phía sau không yêu cầu thay đổi trên www.example.combản ghi ... vì vậy khái niệm "Internet" có liên quan đến mục tiêu chính xác www.example.comlà phù hợp, bất kể hệ thống back-end xảy ra ở đâu.

Điều này, với tôi, giải quyết hoàn toàn vấn đề bằng cách giải phóng trình duyệt mọi nhu cầu "theo dõi" các thay đổi đối với IP của máy chủ gốc.

tl; dr: định tuyến các yêu cầu đến một hệ thống đóng vai trò proxy cho máy chủ web thực, do đó chỉ có cấu hình proxy cần điều chỉnh thay đổi IP máy chủ gốc - không phải DNS đối diện với trình duyệt.

Lưu ý rằng CloudFront cũng giảm thiểu độ trễ bằng một số phép thuật DNS mà nó áp đặt ở phía trước, điều này dẫn đến www.example.comviệc giải quyết vị trí cạnh CloudFront tối ưu nhất dựa trên vị trí của trình duyệt đang truy vấn www.example.com, do đó, có khả năng lưu lượng truy cập đi theo tuyến đường không cần thiết từ trình duyệt đến cạnh đến nguồn gốc ... nhưng phần này là minh bạch và tự động và nằm ngoài phạm vi của câu hỏi.

Và, tất nhiên, bộ nhớ đệm nội dung cũng có thể có giá trị bằng cách giảm tải trên máy chủ gốc hoặc vận chuyển - Tôi đã định cấu hình các trang web trên CloudFront nơi máy chủ gốc nằm trên mạch ADSL và ADSL vốn bị hạn chế về băng thông ngược dòng. Máy chủ gốc nơi CloudFront kết nối để tìm nạp nội dung không cần phải là máy chủ bên trong hệ sinh thái AWS.


Tôi nói về bộ cân bằng như một thực thể duy nhất khi trên thực tế nó có nhiều nút. Khi bộ cân bằng là ELB, một máy phía sau bộ cân bằng hoạt động như một máy chủ ứng dụng giả và thực hiện việc kẹp tóc thực sự cho bộ cân bằng của nền tảng mới, vì ELB không thể tự làm điều này.

² Kiến thức duy nhất của nhà đầu tư mới về nhà đầu tư cũ là cần phải tin tưởng vào X-Forwarded-For của nhà đầu tư cũ và không nên thực hiện bất kỳ giới hạn tỷ lệ dựa trên IP nào trên các địa chỉ nguồn của nhà đầu tư cũ.

Khi proxy là một hoặc nhiều máy chủ mà bạn kiểm soát, bạn có tùy chọn bỏ qua sử dụng DNS ở mặt sau và chỉ cần sử dụng địa chỉ IP trong cấu hình proxy, nhưng kịch bản được lưu trữ / phân phối được thảo luận sau đó cần lớp DNS thứ hai đó .


2
Cảm ơn, như mọi khi, cho một câu trả lời tuyệt vời khác. "Tại $ {day_job}, khi các trang web của chúng tôi chuyển từ nền tảng" cũ "sang nền tảng" mới ", [...]": Đã ở đó, thực hiện điều đó. +1!
gf_

4

Khi tôi thay đổi bản ghi DNS, thường thì địa chỉ IP cũ sẽ được sử dụng trong nhiều tháng. Phải nói rằng, một ví dụ chỉ trong vài giây là những gì Amazon sử dụng để tạo ra dịch vụ dự phòng chẳng hạn.

Thay vì thay đổi DNS, bạn có thể đặt máy chủ proxy / bộ cân bằng tải trước nó.


1
Trong các thử nghiệm của tôi, TTL60 giây dường như hoạt động hầu hết thời gian, nhưng tôi đã có một số khách hàng gặp phải sự chậm trễ khoảng 10-20 phút.
Andrew8

1

Bạn có thể xem xét bằng cách sử dụng DNS động. Điều này được thiết kế cho chính xác kịch bản mà @glglgl đã đề cập trong một nhận xét ở trên. Tôi tin rằng họ sử dụng chỉ số TTL thấp, như đã được chỉ ra trước đó, có thể không hiệu quả 100% vì khách hàng có thể tự do bỏ qua nó. Nhưng nó hoạt động "khá tốt".

Ngay cả khi bạn không thay đổi IP thường xuyên, điều quan trọng là phải giữ cho TTL của bạn hợp lý. Nhiều năm trước, công ty tôi từng làm việc cho các ISP đã thay đổi khiến IP của chúng tôi thay đổi. Thật không may, chúng tôi đã thiết lập TTL của chúng tôi thành một cái gì đó vô lý như một tháng để các bản ghi DNS cũ đã được giữ trong một thời gian dài.


Có rất nhiều máy chủ DNS cấp ISP ngoài kia không tôn vinh TTL. Tôi làm việc trên một sản phẩm chuyển thông tin DNS khoảng hai lần một năm. Chúng tôi có rất nhiều người máy chủ DNS lưu trữ thông tin cũ của chúng tôi trong tối đa vài tuần sau khi chúng tôi thay đổi. Trừ khi bạn kiểm soát phía khách hàng, đừng tin vào việc này.
Michael Gantz
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.