localhost trong vùng DNS


15

ISP của chúng tôi cũng lưu trữ DNS bên ngoài của chúng tôi. Theo mặc định, chúng bao gồm một mục cho localhost.

Ví dụ: localhost.example.com. 86400 IN A 127.0.0.1

Khi tôi yêu cầu họ gỡ bỏ, họ cho tôi một khoảng thời gian khó khăn và nói rằng đó chỉ là cách Bind hoạt động.

Tôi đã cố gắng thực hiện một số nghiên cứu về lý do tại sao tôi có thể muốn có nó nhưng tôi không thể tìm thấy nhiều. Tôi đã tìm thấy ít nhất một nơi nghĩ rằng đó là một vectơ tấn công XSS có thể. Nó dường như khá phổ biến vì vậy tôi đã tìm kiếm trên 20 tên miền trang web hàng đầu từ alexa và hầu hết không có mục như vậy nhưng một vài người làm. Một vài người khác có một mục nhưng thay vì chỉ đến 127.0.0.1, họ chỉ đến một địa chỉ IP có thể định tuyến thế giới khác.

Vì vậy, tại sao tôi muốn có locahost trong khu vực cho miền của tôi? Có bất kỳ vấn đề của họ với không có nó? Có loại thực hành tốt nhất liên quan đến điều này? Đây có thực sự là một điều Bind mặc định mà tôi không biết?

Cảm ơn


Câu hỏi hay. Tôi chưa bao giờ nghe nói về điều đó trước đây.
TomTom

Tôi thậm chí có một "loopback" trong tệp vùng ISP của mình. WTF?
David Tonhofer

Câu trả lời:


13

localhost.example.comđôi khi được đưa vào các máy chủ DNS nội bộ để ngăn chặn các yêu cầu "localhost" bị rò rỉ ra internet (đối với trường hợp John Smith gõ http://localhost/vào trình duyệt của anh ấy và vì bất kỳ lý do gì trình giải quyết của anh ấy không tìm trong tệp máy chủ, nối thêm đường dẫn tìm kiếm của anh ấy ( example.com) & bắt đầu hỏi máy chủ tên những gì giải quyết).

Bạn không cần phải có một mục localhost (và nếu ISP của bạn nghĩ rằng đó là "cách BIND hoạt động" thì họ đã nhầm lẫn hoặc ngu ngốc: BIND phục vụ những gì trong tệp vùng và nếu họ xóa localhostdòng thì nó sẽ ngừng phục vụ ghi lại). Như một ví dụ miễn phí, localhost.google.comkhông giải quyết được và tôi đặt cược NS cho tên miền đó đang chạy BIND.

Vectơ XSS là điều tôi chưa bao giờ nghĩ tới, nhưng đó là điều đáng quan tâm: có một localhostmục trong DNS công cộng của bạn có nghĩa là bất kỳ máy bị hack nào cũng có thể là "trong miền của bạn" (bằng cách chạy máy chủ web trên 127.0.0.1) và có khả năng đủ thứ khó chịu Có lẽ là một lý do đủ tốt để thoát khỏi mục.


1
Cá nhân tôi nghĩ rằng đó localhost.some.testchỉ là một nạn nhân khác của việc không có kết thúc đúng. Lý do đằng sau việc có localhost.(lưu ý dấu chấm!) Là rõ ràng, nhưng các dấu chấm thường bị lãng quên trong các vùng DNS. Sau đó, nó bung ra để có cuộc sống bí ẩn của riêng mình.
poige

Xem tools.ietf.org/html/rfc1537 Lỗi cấu hình tệp dữ liệu DNS phổ biến cho thấy mục nhập localhost là chính xác.
BillThor

1
Không, rfc1537 không chỉ định điều đó. Nó chỉ định rằng các đệ quy cần phải có một localhost. khu vực và một khu vực cho đảo ngược. Không nơi nào nói khu vực của bạn cần một mục localhost.
Habbie

@BillThor Các ý kiến ​​về câu trả lời khác này có liên quan đến RFC 1537 và người kế nhiệm của nó (RFC 1912) - Như Habbie đã đề cập đến khu vực localhost. này là điều chúng tôi phải có, nhưng thực tế có một localhost hồ sơ trong từng khu vực chúng tôi phục vụ đã bị loại bỏ ủng hộ. (Câu hỏi này thực sự đưa tôi xuống hố thỏ RFC 5 năm trước, có lẽ tôi sẽ cập nhật câu trả lời của mình với RFC mới và suy nghĩ từ luồng nhận xét đó sau :))
voretaq7

3

Giả sử rằng độ phân giải tên nội bộ của bạn đang xử lý đúng độ phân giải tên, mọi yêu cầu DNS cho localhost sẽ không bao giờ được gửi đến nhà cung cấp DNS bên ngoài của bạn và vì vậy đây hoàn toàn không phải là vấn đề.

Một lý do tại sao một người nào đó sẽ làm điều này, mà tôi có thể nghĩ ra khỏi đỉnh đầu của tôi, là nếu ai đó đã từng sử dụng một công cụ soạn thảo web có rất nhiều tài liệu tham khảo tuyệt đối đến http: // localhost , nhưng điều đó giả định rằng bạn ISP cũng đã lưu trữ trên các hộp DNS của họ và là một cú sút xa.

Tuy nhiên, RFC 1537 không chỉ định:

Đã có nhiều cuộc thảo luận về việc có hay không thêm tên miền cục bộ vào nó. Kết luận là "localhost." sẽ là giải pháp tốt nhất; lý do được đưa ra là:

  • Bản thân "localhost" được sử dụng và dự kiến ​​sẽ hoạt động trên một số hệ thống.

  • dịch 127.0.0.1 sang "localhost.my_domain" có thể khiến một số phần mềm tự kết nối với chính nó bằng giao diện loopback khi không muốn.

Lưu ý rằng tất cả các tên miền có chứa máy chủ nên có một bản ghi "localhost".

Vì vậy, nói đúng ra có vẻ như ISP của bạn là chính xác để bao gồm localhost, nhưng không chính xác để sử dụng tên đủ điều kiện.


5
Có vẻ như RFC-1537 đã bị RFC-1912 lỗi thời, nó sẽ xóa Note that ...ngôn ngữ (Tôi đoán là để đáp ứng với các vấn đề XSS tiềm năng mà chúng ta sẽ bắt đầu nhận ra vào năm 1996 :) 1537 Giải thích tại sao nó lại ở trong các mẫu BIND.
voretaq7

bạn có nghĩa là nên có một mục như thế này trong khu vực ví dụ.com: localhost. 86400 IN A 127.0.0.1; lưu ý khoảng thời gian
matthew

3
4.1 của 1912 thực sự khá rõ ràng về nó: ietf.org/rfc/rfc1912.txt
Maximus Minimus

5 năm trôi qua nhưng đáng để làm rõ: 4.1 của RFC 1912 rõ ràng là localhost khu vực đó nên tồn tại trên máy chủ (vì vậy nếu nhận được yêu cầu chỉ là "localhost" thì nó sẽ không chuyển chuỗi này sang máy chủ tiếp theo), đó là một khác xa so với bao gồm localhosttrong example.comkhu vực nói (tạo localhost.example.com), điều này cũng rõ ràng không kém khi nói rằng bạn không nên làm vì có thể có tác dụng phụ ngoài ý muốn. Kỳ vọng là "localhost" sẽ là một miền đặc biệt, kỳ diệu, đủ điều kiện theo đúng nghĩa của nó.
voretaq7

0

Tôi không chắc chắn điểm sẽ là gì ... Theo mặc định, địa chỉ bên ngoài sẽ bị quá tải bởi tệp máy chủ, gần như luôn ánh xạ localhost thành 127.0.0.1.

Tuy nhiên, một tệp vùng BIND mặc định bao gồm một vùng localhost. Không bao giờ thực sự nghĩ về nó.


Đây không phải là vùng localhost (trừ khi cấu hình sai của vùng đó). Nó cũng không phải là 'localhost.' và nói chung sẽ không bị quá tải bởi tệp máy chủ cục bộ.
matthew
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.