Tên máy chủ - Tất cả chúng là gì?


54

Gần đây tôi đã bị "ép buộc" thực hiện một số công việc sysadmin, trong khi đây không phải là điều mà tôi hoàn toàn thích làm Tôi đã đọc, thử nghiệm và học hỏi nhiều.

Có một khía cạnh cơ bản của cấu hình máy chủ mà tôi không thể nắm bắt được - tên máy chủ .

Ví dụ, trong Ubuntu, người ta nên đặt tên máy chủ như thế này (theo Thư viện Linode ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

Tệp: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

Tôi cho rằng đó platolà một tên tùy ý và đó plato.example.comlà FQDN.

Bây giờ câu hỏi của tôi là:

  • Có bắt buộc không?
  • Để mục đích gì?
  • Nó cần / được sử dụng ở đâu?
  • Tại sao tôi không thể định nghĩa "localhost" làm tên máy chủ cho mọi máy?
  • Tôi có phải thiết lập mục nhập DNS cho plato.example.comFQDN không?
  • Có nên plato.example.comđược sử dụng làm mục nhập DNS ngược cho IP của tôi không?

Ngoài ra, có "thực hành tốt nhất" nào để chọn tên máy chủ không? Tôi đã thấy những người sử dụng chữ cái Hy Lạp, tên hành tinh và thậm chí cả nhân vật thần thoại ... Điều gì xảy ra khi chúng ta hết chữ / hành tinh?

Tôi xin lỗi nếu đây là một câu hỏi ngớ ngẩn nhưng tôi chưa bao giờ quá nhiệt tình với cấu hình mạng.


3
Tôi nghĩ Chris S không có cơ sở ở đây. Câu hỏi - tên máy chủ hệ thống là gì và nó liên quan đến DNS như thế nào - là một tên hợp lệ.
larsks

@Chris S: Tôi hiểu rồi, tin tôi đi. Tôi đã thử đọc nó một lần nhưng toàn bộ điều đó khiến tôi vô cùng bối rối. Tôi không khao khát trở thành một SA, chỉ cố gắng hiểu những điều cơ bản tốt hơn một chút.
Alix Axel

Điều này sẽ đi đến wiki cộng đồng
lynxman

1
@lynxman: Tôi không bận tâm điều đó, nhưng tại sao?
Alix Axel

1
Bởi vì nó rất thú vị :)
lynxman

Câu trả lời:


28

Ngày nay, một hệ thống có thể có nhiều giao diện, mỗi giao diện có nhiều địa chỉ và mỗi địa chỉ thậm chí có thể có nhiều mục DNS được liên kết với nó. Vì vậy, một "tên máy chủ hệ thống" thậm chí có nghĩa là gì?

Nhiều ứng dụng sẽ sử dụng tên máy chủ hệ thống làm định danh mặc định khi chúng giao tiếp ở nơi khác. Ví dụ: nếu bạn đang thu thập các thông báo nhật ký hệ thống tại một máy chủ trung tâm, tất cả các tin nhắn sẽ được gắn thẻ với tên máy chủ của hệ thống ban đầu. Trong một thế giới lý tưởng, bạn có thể sẽ bỏ qua điều này (vì bạn không nhất thiết muốn tin tưởng khách hàng), nhưng hành vi mặc định - nếu bạn đặt tên cho tất cả các hệ thống của mình là "localhost" - sẽ dẫn đến một loạt các thông điệp tường trình mà bạn sẽ không thể liên kết với một hệ thống cụ thể.

Như những người khác đã chỉ ra, tên máy chủ hệ thống cũng là một định danh hữu ích nếu bạn thấy mình truy cập từ xa vào một số hệ thống. Nếu bạn có năm cửa sổ được gắn vào một hệ thống có tên "localhost" thì bạn sẽ khó có thể giữ chúng thẳng.

Theo cách tương tự, chúng tôi cố gắng đặt tên máy chủ của hệ thống khớp với tên máy chủ chúng tôi sử dụng để truy cập quản trị vào hệ thống. Điều này giúp tránh nhầm lẫn khi đề cập đến hệ thống (trong email, cuộc hội thoại, tài liệu, v.v.).

Về DNS:

Bạn muốn có các mục DNS chuyển tiếp và đảo ngược thích hợp cho các ứng dụng của mình để tránh nhầm lẫn. Bạn cần một số mục chuyển tiếp (tên -> địa chỉ IP) để mọi người có thể truy cập ứng dụng của bạn một cách thuận tiện. Có kết quả khớp ngược là hữu ích vì một số lý do - ví dụ: nó giúp bạn xác định chính xác ứng dụng nếu bạn tìm thấy địa chỉ IP tương ứng trong nhật ký.

Lưu ý rằng ở đây tôi đang nói về "ứng dụng" chứ không phải "hệ thống", bởi vì - đặc biệt là với các máy chủ web - thông thường có nhiều địa chỉ IP trên một hệ thống, được liên kết với các tên máy chủ và dịch vụ khác nhau.

Cố gắng duy trì ánh xạ tên cho ip trong /etc/hoststệp của bạn một cách nhanh chóng trở nên khó khăn khi bạn quản lý số lượng hệ thống ngày càng tăng. Thật dễ dàng để tệp máy chủ cục bộ không đồng bộ với DNS, có thể dẫn đến nhầm lẫn và trong một số trường hợp bị trục trặc (ví dụ, vì một cái gì đó cố gắng liên kết với một địa chỉ IP không còn tồn tại trên hệ thống).


Cảm ơn bạn đã trả lời, tôi vẫn bối rối nếu tôi nên (hoặc cần) duy trì tệp / etc / hosts thay vì chỉ dựa vào các mục DNS.
Alix Axel

8
Tôi thường bỏ qua /etc/hostsủng hộ DNS. Điều này làm giảm số lượng địa điểm tôi đã nhận để duy trì thông tin về tên -> ánh xạ địa chỉ. Trên phần lớn các hệ thống tôi duy trì, /etc/hostschỉ chứa mục duy nhất cho localhost.
larsks

Khi bạn xử lý các cụm - như ganeti hoặc cụm Linux-HA / Corosync - / etc / hosts được sử dụng để nói chuyện giữa các thành viên của cụm. Thật tệ khi nó chỉ dựa vào DNS vì dịch vụ DNS của bạn có thể nằm trên các cụm đó và được di chuyển hoặc ngoại tuyến trong khi thay đổi nút, vì vậy / etc / hosts và tên máy chủ chính xác sẽ giúp bạn có thời gian tuyệt vời.
coredump

Vì vậy, liên quan đến "duy nhất", chúng ta khá "cố gắng" là "duy nhất" hơn "phải" là duy nhất, đúng không? Bởi vì có rất nhiều máy chủ ngoài kia và tất cả chúng đều nằm trong cùng một phạm vi, nên thực sự "độc nhất" là không thể. Sự hiểu biết này có đúng không?
shenkwen

10

Bạn có thể đặt mọi tên máy chủ thành "localhost", nhưng sẽ rất tiện lợi khi có alix@plato ~ $trong dấu nhắc lệnh của bạn khi bạn quản lý các máy qua ssh. Quản lý máy chủ từ xa có thể trở nên rất khó hiểu nếu bạn không.

Có một FQDN chính xác rất quan trọng khi bạn lưu trữ máy chủ web hoặc máy chủ thư. Những loại ứng dụng máy chủ này muốn biết "ai" họ đang chạy.

Để chọn một chương trình đặt tên tốt, tôi giới thiệu cho bạn câu hỏi rất phổ biến này .

Một FQDN chỉ trở nên hữu ích khi nó có ý nghĩa với một máy tính khác. Có ba cấp độ này:

  • Một máy tính trên mạng cục bộ của bạn có một mục trong tệp máy chủ của nó trỏ đến máy đó
  • Bạn có một máy chủ DNS đang chạy trên mạng cục bộ của mình và mọi máy tính cục bộ sử dụng nó làm máy chủ DNS hiện đều biết plato theo tên.
  • Bạn đăng ký một tên miền và bây giờ cả thế giới đều biết máy mà plato.alixaxel.com chỉ vào máy nào.

Khi gửi email hoặc phục vụ các trang web ra thế giới bên ngoài, cái thứ ba là cái bạn muốn có. Đối với hầu hết các trường hợp khác, bạn có thể thực hiện với DNS cục bộ hoặc thậm chí chỉnh sửa tệp máy chủ.

Trong trường hợp đó, bạn chỉ có thể tạo một tên miền (plato.alixnetwork có thể tốt như một FQDN) để sử dụng trong mạng cục bộ của bạn. Giá trị gia tăng duy nhất của việc có phần "alixnetwork" (tên miền) là sự tiện lợi khi bạn có một mạng cục bộ khác mà bạn muốn phân biệt.


Cảm ơn kenny, tôi đoán nghi ngờ chính của tôi là tại sao điều quan trọng đối với một máy chủ web / mail để có một FQDN thích hợp. Ngoài ra, cái gì tạo thành một FQDN "thích hợp"? Tôi có nên chỉ cần đặt trước tên máy chủ cho tên miền và trỏ nó đến địa chỉ IP công cộng? Tôi có ấn tượng rằng tôi sẽ tạo các mục DNS A / AAAA bằng tên máy chủ, phải không?
Alix Axel

Nó phụ thuộc vào những gì bạn muốn đạt được. Nếu bạn không gửi email hoặc phục vụ các trang web đến thế giới bằng plato, thực sự không cần phải tạo bản ghi DNS toàn cầu cho máy đó.
Kenny Rasschaert

"Bạn đăng ký một tên miền và bây giờ cả thế giới đều biết máy mà plato.alixaxel.com chỉ vào máy nào." - Tôi không hiểu điều này. Cả thế giới không biết cái tên mà plato.alixaxel.com chỉ đến bằng cách kiểm tra độ phân giải DNS của "alixaxel.com"? Nó có liên quan gì đến việc thiết lập FQDN trong một máy ngẫu nhiên?
shenkwen

8

Một cái nhìn tổng quan cơ bản. Tên máy chủ chỉ là con trỏ; bạn có thể chỉ định một tên cụ thể làm tên máy chủ được máy tham chiếu, nhưng nó có thể có nhiều tên. Một số dịch vụ, thư đáng chú ý và HTTP dựa vào tên miền để biết nơi dịch vụ nên được đặt và cách truy cập chúng.

Cách đây rất lâu, tất cả các tên này (một lần nữa, chỉ là con trỏ tới địa chỉ IP) đã được theo dõi trong một tệp được gọi hosts. Khi hệ thống phát triển, họ không thể giữ tệp được đồng bộ hóa trên tất cả các máy tính có liên quan tham gia vào các mạng được kết nối khác nhau. Vì vậy, hệ thống DNS đã được phát minh. Khi bạn thực hiện tra cứu tên, nó vẫn kiểm tra tệp máy chủ trước, sau đó là hệ thống DNS. Windows cũng có thể kiểm tra các hệ thống khác như WINS hoặc NetBIOS.

Khi bạn đặt một mục trong một hoststệp, bạn không gán nó vào máy tính. Việc gán tên máy chủ là tên máy tính được sử dụng được thực hiện trong các tệp cấu hình (trên các hệ thống * nix) và Thuộc tính hệ thống trong các hệ thống Windows (hệ thống Windows cũng có thể có các hậu tố cụ thể của NIC).

Các mục trong hoststệp, như hệ thống DNS, chỉ là ánh xạ từ tên máy chủ đến địa chỉ IP. Để sử dụng tên máy chủ 'localhost' (không có gì đặc biệt về nó, đó là tên máy chủ giống như tất cả các phần còn lại), nó phải được ánh xạ tới giao diện loopback (vì vậy nó sẽ luôn trỏ đến máy tính cục bộ). Để đảm bảo điều này hoạt động, tất cả các máy tính đều đi kèm với ánh xạ mặc định này trong hoststệp của chúng , nhưng nó có khả năng bị xóa, nếu bạn không muốn sử dụng tên máy chủ đó.

Hơn nữa, như những người khác đã lưu ý, việc gán tên máy chủ cho máy tính là rất hữu ích. Khi được kết nối với máy tính, bạn có thể để nó hiển thị tên máy chủ của nó khi bạn đăng nhập, hoặc như lời nhắc của bạn hoặc bất kỳ số lượng địa điểm nào khác. Điều này giúp xác định máy tính mà bạn kết nối dễ dàng hơn. Nếu bạn thiết lập tên máy chủ đó trong DNS hoặc đặt nó trong tất cả các hoststệp, bạn sẽ có thể kết nối với máy tính bằng cách tham chiếu tên máy chủ của nó thay vì phải biết địa chỉ IP của nó mọi lúc. (Thậm chí hữu ích hơn nếu máy tính đang sử dụng DHCP, vì địa chỉ có thể thay đổi. Nếu máy tính cập nhật DNS thì bản ghi DNS sẽ trỏ đến địa chỉ IP mới; bạn vẫn có thể kết nối mà không cần biết địa chỉ IP mới vì bạn biết tên DNS ).

Có nhiều cách sử dụng khác của cả hai hostsvà DNS, nhưng tôi nghi ngờ bạn có nhiều câu hỏi hơn câu trả lời nếu bạn đọc tất cả điều này.


4
+1 để dành thời gian viết lên một câu trả lời hay mặc dù cảm giác thất vọng ban đầu của bạn với câu hỏi.
Kenny Rasschaert

Giải thích tuyệt vời! Nếu sự hiểu biết của tôi là chính xác, việc đặt FQDN /etc/hostslà không cần thiết, có tên máy chủ trong mục nhập DNS sẽ đạt được kết quả tương tự, phải không?
Alix Axel

2
@Alix, chính xác, nếu mục nhập nằm trong DNS (và DNS hoạt động bình thường) thì việc có nó trong hoststệp sẽ là dư thừa. Ngoài ra, mục trong hoststệp sẽ ghi đè DNS (đôi khi hữu ích để kiểm tra, gây phiền nhiễu khi bạn quên nó). Lưu ý rằng đây là tất cả liên quan đến hồ sơ A và AAAA, có những loại hồ sơ khác cho tên máy chủ lưu trữ, nhưng tôi đã để chúng ra cho rõ ràng.
Chris S

Cảm ơn Chris, điều này làm cho mọi thứ rõ ràng hơn nhiều.
Alix Axel

5

Bao giờ máy chủ nên được đặt một cái tên có ý nghĩa. Tên máy chủ có thể phục vụ nhiều mục đích:

1- Nó giúp bạn nhận ra bạn đang làm việc ở đâu.

2- Sử dụng tên được định cấu hình trong /etc/hostsvà / hoặc bản ghi DNS dễ hơn ghi nhớ nhiều địa chỉ IP.

3- Localhost là tên dành riêng để chỉ máy hiện tại (địa chỉ 127.0.0.1).

4- Bản ghi DNS rất hữu ích để làm cho máy chủ của bạn có thể truy cập công khai.

Chọn một tên phù hợp cho mỗi máy chủ giúp bạn quản lý nhiều. Ngoài ra, nó giúp khách hàng của bạn truy cập vào máy chủ của bạn.


2

Cũng như một lưu ý phụ: Làm việc chính xác về phía trước và đảo ngược độ phân giải DNS là nền tảng tuyệt đối của mọi cài đặt CNTT trên hành tinh này. Đừng bao giờ đánh giá thấp sự cần thiết của DNS được duy trì tốt và độ phân giải tên máy chủ phù hợp!


Tôi không thể hiểu tại sao nó quan trọng. Tôi có một máy chủ linode lưu trữ nhiều trang web. Không hiểu mục đích của việc đặt tên máy chủ, tôi chỉ để nguyên như vậy, đó là "ubfox". Máy chủ này đã hoạt động được vài năm và tôi không bao giờ cảm thấy bất kỳ sự bất tiện nào. Tôi không đặt câu hỏi cho câu trả lời của bạn, tôi chỉ đang cố gắng để hiểu tại sao tên máy chủ lại quan trọng. Trong trường hợp của tôi, khi nào tôi muốn rằng tôi đã đặt đúng tên máy chủ?
shenkwen

1
@shenkwen - nếu bạn thành thật chỉ có một máy chủ, bạn có thể đặt tên cho nó bất cứ điều gì trái tim bạn mong muốn, và rõ ràng nó không thành vấn đề. Ngay khi số lượng máy chủ trở nên lớn hơn 1, bạn có vấn đề mới cần quản lý và đặt tên đúng là một công cụ quan trọng.
mfinni

1

Tuyên bố miễn trừ trách nhiệm: câu hỏi chính là về các hệ thống Linux, vì vậy hãy bỏ qua câu trả lời này nếu bạn không quan tâm đến vấn đề Windows.

Dù sao, trong các hệ thống Windows, ngoài tất cả các điểm được đề cập trong các câu trả lời khác, tên máy chủ thực sự được sử dụng bởi chính HĐH, cho mục đích kết nối và xác thực; đặc biệt:

  • Mỗi hệ thống, dù là thành viên tên miền, được yêu cầu phải có một tên duy nhất trong cùng một mạng (nghĩa là trong cùng một mạng con IP), nếu không, xung đột đặt tên sẽ xảy ra và các dịch vụ mạng khác nhau (chủ yếu là chia sẻ tệp và in) sẽ không công việc.
  • Tất cả các hệ thống là thành viên của cùng một miền Active Directory được yêu cầu phải có một tên duy nhất, bất kể ranh giới mạng.
  • Trong môi trường miền, tên máy chủ của hệ thống đóng vai trò là hiệu trưởng bảo mật và có thể được sử dụng để xác thực từ xa (chỉ cần nghĩ về nó như một tài khoản người dùng cho máy); nó có thể được gán quyền và quyền truy cập và có thể được đặt trong các nhóm cho mục đích bảo mật. Điều này tác động đến tất cả các quy trình chạy trên hệ thống bằng tài khoản người dùng LocalSystemNetworkServicengười dùng tích hợp, có thể xác thực với các hệ thống khác bằng thông tin đăng nhập của hệ thống mà họ đang chạy; điều này cho phép một quá trình chạy như NetworkServicetrên SystemA truy cập vào thư mục dùng chung trên SystemB bằng cách cấp quyền trên thư mục cho tài khoản người dùng của SystemA.

-1

Nhiều trang web và / hoặc được cho là 'quản trị viên' hiện đang nói rằng thuộc tính 'tên máy chủ' chứa FQDN của phiên bản HĐH, 'phá vỡ' bất kỳ độ phân giải nào nối thêm 'tên miền' vào nó:

tên máy chủ
system1.domain1.org

ping hostname
- không thể giải quyết system1.domain1.org.domain1.org


Bạn có thể cung cấp một nguồn tham khảo cho tuyên bố của bạn?
Dave M
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.