Mục đích của / etc / hosts là gì?


21

Theo tôi hiểu, hoststệp là một trong một số phương tiện hệ thống hỗ trợ giải quyết các nút mạng trong mạng máy tính. Nhưng những gì nên được bên trong nó? Khi tôi cài đặt Ubuntu theo mặc định

127.0.0.1 localhost 

sẽ ở đó. Tại sao?

  • Làm thế nào để /etc/hostshoạt động trong trường hợp các hệ thống JVM như Cassandra?
  • Khi nào DNS thay thế, tôi đoán không phải trên một máy tính?


/etc/hostsChứa của tôi 127.0.0.2 mycouchdb bookmarkdb myothercouchapp127.0.0.3 myapachi websitetôi sử dụng những thứ này để giúp tôi phát triển trên máy cục bộ. Tôi có 3 dịch vụ nghe trên cổng 80. Tôi không muốn đưa chúng vào DNS, vì chúng chỉ là cục bộ.
ctrl-alt-delor

Bạn đã thử man 5 hostschưa
Tái lập Monica - M. Schröder

Có phải Linux không có trang dành cho người này, nơi nó được giải thích chi tiết? Đây là câu hỏi cơ bản nhất.
Cướp

Câu trả lời:


45

Tệp /etc/hostsbắt đầu từ DARPA ngày xưa dưới dạng tệp phân giải cho tất cả các máy chủ được kết nối với internet (trước khi DNS tồn tại). Nó có mức độ ưu tiên tối đa, có nghĩa là tệp này được ưu tiên trước bất kỳ hệ thống tên nào khác. 1

Tuy nhiên, là một tệp duy nhất, nó không có tỷ lệ tốt: kích thước của tệp sẽ trở nên quá lớn rất sớm. Đó là lý do tại sao hệ thống DNS được phát triển, một hệ thống tên phân tán phân cấp. Nó cho phép bất kỳ máy chủ nào tìm thấy địa chỉ số của một số máy chủ khác một cách hiệu quả.

Các rất khái niệm cũ của /etc/hoststập tin là rất đơn giản, chỉ là một địa chỉ và tên máy chủ:

127.0.0.1      localhost

cho mỗi dòng. Đó là một danh sách đơn giản của các cặp máy chủ địa chỉ. 2

Việc sử dụng chính hiện nay của nó là bỏ qua độ phân giải DNS. Một kết quả tìm thấy trong /etc/hoststệp sẽ được sử dụng trước bất kỳ mục nhập DNS nào. Trong thực tế, nếu tên được tìm kiếm (như localhost) được tìm thấy trong tệp, không có độ phân giải DNS nào được thực hiện cả.


1 Vâng, thứ tự phân giải tên thực sự được xác định trong /etc/nsswitch.conf, thường có mục này:

hosts:          files dns

có nghĩa là "thử tệp ( /etc/hosts); và nếu thất bại, hãy thử DNS."

Nhưng thứ tự đó có thể được thay đổi hoặc mở rộng.


2 (trong thời hiện tại) Tệp máy chủ chứa các dòng văn bản bao gồm địa chỉ IP trong trường văn bản đầu tiên theo sau là một hoặc nhiều tên máy chủ. Mỗi trường được phân tách bằng khoảng trắng - các tab thường được ưa thích vì lý do lịch sử, nhưng không gian cũng được sử dụng. Dòng bình luận có thể được bao gồm; chúng được chỉ định bởi một octothorpe (#) ở vị trí đầu tiên của các dòng như vậy. Các dòng trống hoàn toàn trong tệp bị bỏ qua. Ví dụ: một tệp máy chủ điển hình có thể chứa các mục sau:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Ví dụ này chứa các mục nhập cho các địa chỉ loopback của hệ thống và tên máy chủ của chúng, dòng đầu tiên là một nội dung mặc định điển hình của tệp máy chủ. Dòng thứ hai có một số tên bổ sung (có lẽ chỉ hợp lệ trong các hệ thống cục bộ). Ví dụ minh họa rằng một địa chỉ IP có thể có nhiều tên máy chủ (localhost và loopback) và tên máy chủ có thể được ánh xạ tới cả địa chỉ IP IPv4 và IPv6, như được hiển thị trên các dòng đầu tiên và thứ hai. Một tên ( mycomputer.lan) có thể phân giải thành nhiều địa chỉ ( 192.168.0.8 10.0.0.27). Tuy nhiên, trong trường hợp đó, cái nào được sử dụng phụ thuộc vào các tuyến (và mức độ ưu tiên của chúng) được đặt cho máy tính.

Một số HĐH cũ không có cách nào để báo cáo danh sách các địa chỉ cho một tên cụ thể.


5

Sử dụng tệp / etc / hosts để đặt tên người có thể đọc được cho hệ thống cục bộ trong môi trường máy tính để bàn là hoàn toàn hợp lý. Các tập tin máy chủ là tuyệt vời để sử dụng trong một mạng gia đình hoặc thậm chí trong một môi trường kinh doanh nhỏ. Đây không thể là khía cạnh công khai như địa chỉ internet - sau đó bạn cần DNS. Nếu mạng cục bộ đủ lớn hoặc đơn giản là cắt trong các mạng con khác nhau hoặc bất kỳ lý do hữu ích nào khác, DNS sẽ được ưu tiên.

Tệp & DNS máy chủ cục bộ được quản lý với mức độ ưu tiên khác nhau nên không bao giờ có bất kỳ xung đột nào.


4
Tôi sẽ không đồng ý về các xung đột, tôi đã gặp phải một số vấn đề khó gỡ lỗi vì /etc/hostscác mục nhập do nhóm A cung cấp bên trái mà trong tương lai khiến các hoạt động của nhóm B (nhóm của tôi) thất bại , và chúng tôi đã kết thúc thiết lập một cái gì đó để khử trùng các nội dung của/etc/hosts
thrig

xung đột trong tập tin có thể tồn tại ngoài khóa học nhưng sau đó là lỗi của chủ sở hữu máy :)
francois P

2
Tôi cũng không đồng ý với việc không bao giờ có bất kỳ xung đột nào. Tôi đã phải gỡ lỗi rất lạ do các mục máy chủ cũ mâu thuẫn với các thay đổi DNS.
Rui F Ribeiro

@thrig: Có lẽ vấn đề là các nhóm của bạn quá lớn để sử dụng / etc / hosts hiệu quả. Hoạt động hoàn hảo cho 5 máy (hiện tại) trên mạng gia đình của tôi.
jamesqf

Chà, hệ thống không nghĩ rằng có xung đột, Nó có hướng dẫn rõ ràng về mức độ ưu tiên của mọi thứ: p
StarWeaver

3

trong linux, tôi dám nói rằng phải luôn có ít nhất 127.0.0.1 localhosttrong tệp /etc/hosts cũng như địa chỉ IPv6 tương ứng cho localhost .

Nó chỉ đơn giản là phân giải tên máy chủ thành một địa chỉ IPv4 hoặc IPv6 số. Khi bạn cố gắng kết nối tới (a) unix.stackexchange.com ở một nơi nào đó trên trái đất có khả năng không ở gần bạn hoặc (b) myotherpc trên mạng cục bộ trong nhà của bạn, thì đó là /etc/hostshoặc một số máy chủ tên miền (DNS) đang thực hiện độ phân giải máy chủ, vì vậy khi bạn nhập unix.stackexchage.com , với tư cách là con người, bạn không cần phải nhớ 185.53.179.7 vì đó là điều mà máy tính thực sự cần biết.

Như đã chỉ ra, trong linux /etc/nsswitchthường có định nghĩa độ phân giải tên máy chủ, nghĩa là kiểm tra DNS trước khi kiểm tra NIS sau đó kiểm tra tệp cuối cùng /etc/hostsnếu không tìm thấy máy chủ

Cách bạn quản lý kiểm tra đơn hàng và những gì / ở đâu / ai quản lý dịch vụ DNS hoặc NIS tùy thuộc vào bạn hoặc bạn có thể ghi đè mọi thứ bằng cách sửa đổi / etc / nsswitch để chỉ đăng nhập /etc/hostsvà không bao giờ kiểm tra với DNS hoặc NIS hoặc ...

Đối với một mạng gia đình đơn giản gồm vài máy tính, giả sử từ 2 đến N, quản trị viên chỉ cần chỉnh sửa /etc/hoststrên mọi máy tính là chính xác, sẽ dễ dàng hơn, nhanh hơn, rẻ hơn so với thiết lập Máy chủ tên miền hoặc một số dịch vụ khác để có một vị trí chính hoặc thẩm quyền để giải quyết tên máy chủ đến địa chỉ IP.

cho tìm kiếm web linux lịch sử và lý do đằng sau localhost. Nhiều thứ trong linux dựa vào tên localhost phân giải thành 127.0.0.1 và nếu điều đó không xảy ra sẽ gây ra vấn đề và định nghĩa localhost này sẽ / sẽ xảy ra trong một tệp hệ thống cục bộ như / etc / hosts.

/etc/hoststheo mặc định thường là tiếng nói cuối cùng và điều cuối cùng để hệ điều hành linux quay trở lại để phân giải tên máy chủ. trong Windows XP và 7, tệp tương ứng là C:\Windows\System32\drivers\etc\lmhosts tôi không biết về windows 8 hoặc 10.


Một cách sử dụng điển hình của tệp máy chủ, đặc biệt là trong Windows, là chuyển hướng nỗ lực của chương trình để 'gọi về nhà' sang một thiết bị null. Tôi nghĩ rằng điều này có thể là để cản trở việc kiểm tra tính hợp pháp.
Laurence Payne

Tôi vẫn chưa tìm thấy trình chỉnh sửa trên iPhone cho phép tôi chỉnh sửa / etc / hosts ... vì vậy tôi chạy DNS trên lan của mình
ivanivan
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.