Điểm:-1

Bản ghi DNS có nhiều IP + giới hạn UDP 512 byte

lá cờ kr

Tôi có một bản ghi DNS (ví dụ: test.example.com) trỏ đến một IP duy nhất:

test.example.com TRONG 192.0.2.1

Làm việc tốt. Bây giờ tôi có +30 IP trả lời cho nó, ví dụ:

teste.example.com TRONG 192.0.2.1
teste.example.com TRONG 192.0.2.2
(...)
teste.example.com TRONG 192.0.2.31

Và bây giờ nó không ổn định (lỗi "không thể tìm thấy máy chủ"). sử dụng đào Tôi nhận được cảnh báo "Đã cắt bớt, đang thử lại ở chế độ TCP".Sau một số tìm kiếm trên Google, tôi phát hiện ra rằng truy vấn nhiều IP phải có không quá 512 byte để đảm bảo rằng UDP sẽ được sử dụng và tránh truy vấn bổ sung (hoặc sự cố với ứng dụng khách hoặc nhà cung cấp dns không tcp, dns sw cũ, vân vân).

Vì vậy, làm cách nào để biết tôi có thể có bao nhiêu IP v4 trong một mục nhập dns để đảm bảo câu trả lời UDP tối đa là 512 byte?

hoặc

Có thể định cấu hình Liên kết ISC để chỉ trả về một IP trong truy vấn nhiều IP không? Tôi biết rằng IP có thể được quay vòng với rrset-order { thứ tự theo chu kỳ; };.

Thích:

> test.example.com
Máy chủ: x.x.x.x
Địa chỉ: x.x.x.x:53

Tên: test.example.com
Địa chỉ: 192.0.2.6

Vì vậy, chỉ có một trong số họ? Cảm ơn.

Ron Maupin avatar
lá cờ us
Bạn có thể sử dụng TCP cho DNS. Không có lý do gì để gắn bó với UDP nếu bạn đang gặp sự cố. _[RFC 7766, Truyền tải DNS qua TCP - Yêu cầu triển khai](https://datatracker.ietf.org/doc/html/rfc7766)_ giải thích và cho biết: "_Do đó, tài liệu này cập nhật các thông số kỹ thuật giao thức DNS cốt lõi để hỗ trợ cho Từ đó trở đi, TCP là một phần BẮT BUỘC của quá trình triển khai giao thức DNS đầy đủ._"
Arvy avatar
lá cờ kr
Có, trong tình huống bình thường, nhưng những người bị ảnh hưởng trong trường hợp này đang sử dụng bộ định tuyến không hỗ trợ TCP DNS hoặc bộ định tuyến có lỗi. Tôi nhận ra điều này vì những người bị ảnh hưởng đang sử dụng bộ định tuyến cũ của nhà cung cấp địa phương, chỉ có wifi/có dây. Sử dụng 3G/4G họ không bị ảnh hưởng.
Ron Maupin avatar
lá cờ us
Tôi sẽ đề nghị đó là một vấn đề để người dùng sửa. Ví dụ: nếu bạn có một trang web vì lý do chính đáng là chỉ có HTTPS, bạn có cố gắng sử dụng HTTP cho những người dùng có trình duyệt cũ không thể sử dụng HTTPS đúng cách không? Tại một thời điểm nào đó, bạn phải ngừng hỗ trợ các ứng dụng và công nghệ lỗi thời, và bạn không bao giờ nên chấp nhận các sản phẩm có lỗi.
Điểm:2
lá cờ cn

Và bây giờ nó không ổn định (lỗi "không thể tìm thấy máy chủ")

Từ đâu/như thế nào?

Tất cả các trình phân giải được thiết lập đúng cách, như bạn đã nhận thấy, sẽ nhận được cờ Truncate trong truy vấn đầu tiên của chúng qua UDP, sau đó sẽ chuyển qua TCP và mọi thứ sẽ ổn.

Tất nhiên, bạn nhớ là DNS hơn UDP TCP (trái ngược với một huyền thoại phổ biến), vì vậy bạn cần đảm bảo rằng máy chủ tên có thẩm quyền của bạn có thể được truy vấn qua TCP và tất cả sẽ ổn.

Sau một số tìm kiếm trên Google, tôi phát hiện ra rằng một truy vấn nhiều IP phải có không quá 512 byte để đảm bảo rằng UDP sẽ được sử dụng

Nó phụ thuộc. Đôi khi bạn có thể vượt quá 1000. Nhưng quan trọng nhất, mọi thứ dự phòng cho TCP nên không phải là vấn đề (có thể chỉ là một chút mất hiệu suất).

và tránh một truy vấn bổ sung (hoặc các vấn đề với máy khách hoặc nhà cung cấp dns không có tcp, dns sw cũ, v.v.).

"máy khách hoặc nhà cung cấp dns không có tcp" không nên tồn tại vì nó vô nghĩa và trái với thông số kỹ thuật DNS được viết... hơn 40 năm trước! Hay bạn có bằng chứng cụ thể về những trường hợp đó?

Đừng cố đi vòng quanh những thứ như thế. Nếu những phần mềm này tồn tại thì chúng đã bị hỏng và sẽ có RẤT NHIỀU vấn đề khác, chẳng hạn như đối với các miền được bảo mật DNSSEC.

Vì vậy, làm cách nào để biết tôi có thể có bao nhiêu IP v4 trong một mục nhập dns để đảm bảo câu trả lời UDP tối đa là 512 byte?

Điều này không thể trả lời chung chung (vì phụ thuộc vào tên) nhưng quan trọng nhất, việc cố gắng tối ưu hóa mọi thứ theo cách đó là vô ích.

Dù sao bạn có thể thực hiện tính toán một cách dễ dàng:

  • gói UDP có tiêu đề 8 byte trước dữ liệu (RFC 768)
  • một gói DNS, xem RFC 1035, có tiêu đề (12 byte), sau đó là câu hỏi (số lượng byte thay đổi, xem sau), sau đó là câu trả lời (xem sau) và chúng tôi sẽ xem xét phần bổ sung và quyền hạn để trống.

Vì vậy, chúng tôi đã có 512-8-12 = 492 byte cho câu hỏi DNS + câu trả lời.

Trong câu trả lời, một Một bản ghi sẽ là tên (độ dài thay đổi) + loại (2 byte) + lớp (2 byte) + TTL (4 byte) + độ dài (2 byte) và sau đó là dữ liệu. Vì Một dữ liệu là 4 byte (địa chỉ IPv4).

Câu hỏi là tên (độ dài thay đổi) + loại (2 byte) + lớp (2 byte).

Tên trong gói DNS có hai thuộc tính sau:

  • chúng được mã hóa dưới dạng danh sách các nhãn có tiền tố theo độ dài
  • có thể được nén để một tên hoặc một phần của tên chỉ xuất hiện một lần.

Ví dụ ví dụ.com được mã hóa trong DNS dưới dạng 7,e,x,a,m,p,l,e,3,c,o,m,0 trong đó mỗi độ dài là một byte, nhưng nếu sau này cần dùng tên thì nó sẽ được thay thế bằng một con trỏ chỉ sử dụng 2 byte.

Nếu chúng ta lấy tên đó:

  • kích thước của phần tên trong câu hỏi sẽ là: 13 byte, vì vậy tổng kích thước của câu hỏi: 13 + 2 + 2 = 17
  • trong câu trả lời, mỗi tên có thể là một con trỏ 2 byte tham chiếu đến tên trong câu hỏi, vì vậy mỗi bản ghi trong câu trả lời sẽ có độ dài 2 byte cho tên và sau đó là phần còn lại ở trên, vì vậy 16 byte.

Do đó, gói DNS đầy đủ sẽ có kích thước 12 (tiêu đề) + 17 (câu hỏi) + x nhân 16 trong đó x là số lượng Một Hồ sơ.

Vì vậy chúng ta phải giải quyết: 512 = 8 + 12 + 17 + 16x cho x, mang lại x=29 hoặc là. Hãy nhớ rằng đây là trường hợp tốt nhất (không có bản ghi bổ sung/quyền hạn và nén tên được sử dụng đầy đủ) và cho một tên cụ thể (nhưng nếu sử dụng nén thì tên đó chỉ xuất hiện đầy đủ một lần trong câu hỏi, vì vậy chỉ kích thước đó thay đổi).

[Ngoài ra, nhân tiện, đừng để bị mắc kẹt trong Internet cũ của thế kỷ trước; ngày nay IPv6 phải là tiêu chuẩn; tất nhiên bạn đặt thậm chí ít hơn AAAA các loại bản ghi trong gói DNS có kích thước cố định so với gói IPv4 :-)]

Có thể định cấu hình Liên kết ISC để chỉ trả về một IP trong truy vấn nhiều IP không?

Tôi không nghĩ như vậy và nếu nó tồn tại thì liên kết sẽ chọn IP nào để trả về như thế nào? Nếu bạn ở đây, bạn chỉ cần liệt kê một IP trong tệp vùng. Hoặc nếu bạn thực sự gắn bó với ý tưởng này (nhưng một lần nữa, bạn luôn buông lỏng điều này sẽ không ngăn được các vấn đề khác vì khách hàng đang gặp lỗi nên dù sao bạn cũng đang cố gắng chiến đấu với một ngọn đồi vô tận), bạn có thể thử dnsdist đó là một loại dao của quân đội Thụy Sĩ và cho phép tinh chỉnh.

Tái bút: cũng nên nhớ rằng DNS có phần mở rộng để cho phép một bên chỉ định kích thước bộ đệm (UDP) mà nó có thể nhận. Xem RFC 6891. Gần đây đào sử dụng 1232 như mặc định ở đó. Bạn có thể quan tâm nói chung để xem xét https://kb.isc.org/docs/aa-01219 hoặc ngày cờ DNS năm 2020 tại https://dnsflagday.net/2020/ đó là chính xác về điều này.

Arvy avatar
lá cờ kr
Cảm ơn vì câu trả lời! Vì một số lý do, một số người đang gặp sự cố khi giải quyết câu trả lời DNS 31 IP... Tôi hiện đang điều tra gói DNS bằng WireShark, nó trả về 572 byte...`112402 2022-03-09 18:28:09 ,664371 8.8.8.8 192.168.0.3 DNS 572 Phản hồi truy vấn tiêu chuẩn 0x0003 A xxxxxxxx A` (...danh sách dài các IP).
Patrick Mevzek avatar
lá cờ cn
31 IP chắc chắn không phải là trường hợp thường xuyên, nhưng một lần nữa, không phải là mối lo ngại đối với bất kỳ máy khách DNS thông thường nào. Hỏi "một số" người đó xem họ sử dụng nhà cung cấp DNS đệ quy nào, nếu mọi thứ thay đổi bằng cách buộc TCP (`+tcp` trong `dig`) hoặc bằng cách chơi với `+bufsize` (xem câu trả lời đã chỉnh sửa của tôi ở cuối về điều đó)
Arvy avatar
lá cờ kr
Vâng, tôi hiểu lời giải thích của bạn và tôi có thể thấy hoàn hảo những gì bạn đã nói trong WireShark. Tôi đồng ý về UDP+TCP, nhưng tôi nhận ra sự cố ở một số bộ định tuyến (ví dụ: D-Link 510), ngay cả những bộ định tuyến hiện đại, đang gặp sự cố khi giải quyết DNS 31 IP đó (*lưu ý*: bộ giải DNS nội bộ, ủy quyền). Một `ping` đơn giản trong Windows đôi khi không thành công hoặc chỉ ping (tôi đồng ý, vô nghĩa)... nếu tôi giảm số lượng IP, sẽ không bao giờ bị lỗi.
Arvy avatar
lá cờ kr
Nếu tôi `nslookup` tới bộ định tuyến (192.168.0.1), nó sẽ trả về "máy chủ không thành công" cho mục nhập 31 IP. Nếu tôi thay đổi `máy chủ 8.8.8.8` thì hoạt động tốt. Chà, tôi sẽ giảm bớt để tránh điều này, thậm chí tôi không biết tại sao. Cảm ơn sự giúp đỡ quý báu của bạn.
Patrick Mevzek avatar
lá cờ cn
"Nếu tôi tra cứu bộ định tuyến (192.168.0.1), nó sẽ trả về "máy chủ bị lỗi" cho mục nhập 31 IP. Nếu tôi thay đổi máy chủ 8.8.8.8 thì hoạt động tốt." Tôi nghĩ điều đó cho thấy rất rõ vấn đề là...vì vậy bạn có thể thử phá vỡ nó (thậm chí bạn có thể cấu trúc lại hệ thống của mình để không phụ thuộc vào hơn 30 địa chỉ IP, xem ví dụ về anycast) hoặc chỉ giải thích cho mọi người rằng họ có hệ thống bị hỏng và họ nên sửa nó (hoặc sử dụng bộ giải quyết công khai thay vì bộ giải quyết cục bộ)
Arvy avatar
lá cờ kr
Vâng, giải thích với mọi người là không thể, tôi đã giảm xuống còn 20 IP và có vẻ như bây giờ nó hoạt động tốt. Có lẽ tôi sẽ tạo 2 mục nhập DNS, với 15 IP mỗi mục, sau đó "cân bằng tải" các mục nhập theo chương trình (vì chúng sẽ được tải trong các trang web PHP). Cảm ơn!
Patrick Mevzek avatar
lá cờ cn
Cuộc đua xuống đáy không bao giờ là điều mà cá nhân tôi khuyên dùng. Trên thực tế, điều này không giúp ích gì cho Internet trên toàn cầu cũng như những khách hàng đó, bởi vì nếu họ gặp vấn đề này thì rất nhiều thứ khác có thể bị hỏng đối với họ hoặc chậm bất thường, v.v.
Arvy avatar
lá cờ kr
Đồng ý, nhưng tôi không có lựa chọn nào khác, những người bị ảnh hưởng đang sử dụng bộ định tuyến cũ do một số nhà cung cấp internet lớn cung cấp, vì vậy, vì tôi ở Brazil nên chúng ta đang nói về hàng triệu bộ định tuyến :( "test.example.com" của tôi trong thế giới thực, là một dịch vụ phát trực tuyến âm thanh cho hơn 200.000 người dùng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.