Định dạng / etc / hosts trên Linux (khác với Windows?)


22

Dán bên dưới câu hỏi này là một mẫu của một /etc/hoststệp từ Linux (CentOS) và máy Windows. Tệp Linux có hai mục được gắn thẻ sau địa chỉ IP (đó là localhost.localdomain localhost) và Windows chỉ có một. Nếu tôi muốn chỉnh sửa tệp máy chủ trong Windows để có tên máy (etest) thay vì localhost, tôi chỉ cần thay thế từ localhost bằng tên máy tôi muốn. Máy không cần phải là một phần của một miền.

Trong một máy Linux, hai mục localhost.localdomainlocalhostdường như chỉ ra rằng tôi sẽ cần máy đó là một phần của miền. Điều này có đúng không?

Tôi có thể chỉ cần chỉnh sửa cả hai mục để etestnó sẽ đọc:

127.0.0.1       etest etest

hoặc có yêu cầu tôi thay thế một mục nhập bằng một tên miền không?

Ngoài ra, vui lòng cho tôi biết dòng thứ hai của /etc/hoststệp trên máy Linux dùng để làm gì.

::1     localhost6.localdomain6 localhost6

hosts tập tin trên máy Linux:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

hosts tập tin trên máy windows:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost

Tôi đã đăng một câu hỏi tương tự gần đây, nhưng nó không thu hút nhiều sự quan tâm. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Điều này được viết tốt hơn, mặc dù.
Faheem Mitha

Câu trả lời:


13

Bạn luôn muốn địa chỉ 127.0.0.1 giải quyết trước tiên với localhost. Nếu có một tên miền bạn cũng có thể sử dụng tên miền đó, nhưng sau đó hãy chắc chắn rằng localhost được liệt kê thứ hai. Nếu bạn muốn thêm bí danh cho máy của mình sẽ tìm kiếm địa chỉ loopback, bạn có thể tiếp tục thêm chúng dưới dạng các giá trị được phân tách bằng dấu cách trên dòng đó. Chỉ định tên miền ở đây là tùy chọn, nhưng không xóa "localhost" khỏi các tùy chọn.


5
Ngoài ra ":: 1" là ipv6 tương đương với 127.0.0.1 (dành cho ipv4).
XQYZ

Điều này có nghĩa là có một dòng như thế này thay vì một dòng tôi đã đăng với câu hỏi của tôi sẽ khôn ngoan hơn? Tôi đã bao gồm một bí danh được phân tách bằng dấu cách (etest tên máy chủ của tôi) để nguyên localhost.localdomain localhost. Nếu không, xin vui lòng gửi một ví dụ về những gì bạn đề xuất là mục lý tưởng để bao gồm tên máy chủ của tôi và có các mục localhost trong tệp máy chủ.
Thomas

1
127.0.0.1 localhost.localdomain localhost etest
Thomas

1
@Thomas: Ví dụ của bạn là như nó phải vậy. Đi với điều đó, và nếu bạn cần thêm nhiều bí danh để thử nghiệm (ví dụ với tên máy chủ ảo trong apache), bạn có thể tiếp tục gắn chúng vào dòng.
Caleb

22

Định dạng của /etc/hoststrên Linux và Windows là giống nhau:

IP address        hostname [hostalias]...

trong đó dấu ngoặc là cách thông thường để chỉ ra rằng một cái gì đó là tùy chọn (không thực sự nhập chúng) và dấu chấm ( ...) có nghĩa là có thể có nhiều hơn một.

Bạn không cần phải biến máy chủ thành một phần của tên miền. Hãy thử nó và xem. Nhưng nó sẽ là một ý tưởng tốt để sử dụng .localdomainnếu bạn không có một tên miền thực. Nó có thể làm cho độ phân giải tên máy chủ nhanh hơn một chút do ndotstùy chọn trong /etc/resolv.conf.

Lưu ý rằng theo nghĩa này, tên miền có nghĩa là miền DNS (như google.comhoặc stackexchange.com), không phải tên miền Windows hoặc bất cứ thứ gì tương tự.

Điểm mấu bắt đầu với ::1là cho IPv6 . ::1giống như 127.0.0.1theo sơ đồ địa chỉ mới. Chạy ifconfig lovà bạn sẽ thấy nó có hai địa chỉ. Lưu ý các mục bắt đầu với inet6.

$ ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
...

Xem trang chủ của máy chủ (5) để biết thêm chi tiết.


(...) Có nghĩa là có thể có nhiều hơn một: Các phần mở rộng được phân cách bằng dấu cách hoặc dấu phẩy hoặc cả hai?
Guy

1
không gian. Tôi cho là chính xác hơn, nó hostname [hostalias[,hostalias]*].
Mikel

6

Tôi không thể nói Windows có thể khác với Linux như thế nào, nhưng định dạng của định nghĩa của máy cục bộ ảnh hưởng đến kết quả bạn sẽ nhận được từ lệnh 'tên máy chủ'.

Định dạng tôi thấy hoạt động ổn định nhất là đây:

127.0.0.1 etest.mydomain.com etest localhost

Điều quan trọng tôi đã tìm thấy là có FQDN trước và các bí danh, theo bất kỳ thứ tự nào, sau nó.

Nếu bạn thử nghiệm sắp xếp lại tên sau địa chỉ IP và sau đó sử dụng các lệnh 'hostname -s' (tên ngắn) và 'hostname -f' (tên miền đủ điều kiện hoặc FQDN), bạn sẽ thấy ý tôi là gì. Nó sẽ trông giống như thế này:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

'Tên máy chủ' tự nó sẽ trả về bất kỳ tên nào bạn đã nhập cho máy chủ lưu trữ trong /etc/conf.d/hostname hoặc / etc / hostname (vị trí của tệp thay đổi theo phân phối, nhưng nên được tìm thấy trong / etc ở đâu đó).

Nếu bạn thay đổi thứ tự của các tên bạn có thể thấy rằng "hostname -f" cung cấp cho bạn các phản hồi như "localhost" hoặc "hostname: system system". Sự sắp xếp duy nhất tôi thấy rằng hoạt động chính xác là đặt FQDN trước.

Tôi luôn đặt dòng địa chỉ IPv6 cục bộ (:: 1) theo cùng một cách, nghĩa là:

::1 etest.mydomain.com etest localhost

Tôi biết một số bản phân phối đặt tên IPv6 thành một cái gì đó như ip6-localhost. Tôi chưa thực sự sử dụng IPv6, vì vậy không thể nhận xét về cài đặt tốt nhất cho dòng này là gì. Tôi chỉ có thể nói rằng trong một mạng IPv4, nó hoạt động để có cả hai dòng có cùng tên.


0

Giữ tập tin máy chủ Slaves như

127.0.0.1 localhost

Giữ tập tin máy chủ chính như

<private ip> master
<private ip> slave1
<private ip> slave2

Làm việc 100%


Hãy làm rõ câu trả lời của bạn và sử dụng định dạng thích hợp. Bạn không cần phải đặt tên của bạn trong câu trả lời của bạn.
Lambert
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.