Có phải một hệ thống máy tính (Linux) chỉ có một tên máy chủ?


15

hostname được sử dụng để hiển thị tên DNS của hệ thống và để hiển thị hoặc đặt tên máy chủ hoặc tên miền NIS của nó.

Có phải một hệ thống máy tính (Linux) chỉ có một tên máy chủ?

Trong lưu trữ ảo, một số tên máy chủ có thể được phân giải thành các thư mục gốc khác nhau trong một máy chủ web. Nếu một hệ thống máy tính (Linux) chỉ có thể có một tên máy chủ thì làm sao lưu trữ ảo được?

Cảm ơn.


Bản ghi DNS A hoặc AAA trỏ đến cùng một địa chỉ IP cho nhiều tên miền. Tên máy chủ của máy không nhất thiết phải quan trọng.
RubberStamp

(1) Đầu ra của hostnametừng được sử dụng trong việc phân giải tên máy chủ thành địa chỉ IP? (2) A có nghĩa là địa chỉ IPv4, AAAA IPv6. AAA là gì?
Tim

dịch vụ mDNS, chẳng hạn như avahiphụ thuộc vào tên máy chủ. Trong trường hợp đó, hostname.localsẽ giải quyết đến địa chỉ IP cục bộ của máy. Tôi thấy ai đó đã viết một câu trả lời mở rộng bình luận đầu tiên của tôi ... quá đồng thời cho các thông báo trình duyệt của tôi.
RubberStamp

AAA là một lỗi đánh máy ngắn 'A'
RubberStamp

Máy chủ ảo không liên quan gì đến tên máy chủ. Nó hoàn toàn phụ thuộc vào hành vi máy chủ web. Máy chủ phản hồi khác nhau với trường Máy chủ khác nhau của tiêu đề yêu cầu HTTP. Tôi không nghĩ rằng máy chủ web thông thường sẽ làm bất cứ điều gì liên quan đến DNS hoặc tên máy chủ để cung cấp chức năng máy chủ ảo.
炸鱼 薯条

Câu trả lời:


26

Có và không. Có hai điều khác biệt được gọi là tên máy chủ.

Tên máy chủ "nội bộ" về cơ bản là một chuỗi được giữ bởi kernel. Đây là lệnh được trả về bởi hostnamelệnh (hoặc lệnh gethostname()gọi) và nó là duy nhất trong một hệ thống (*) .

Nó chủ yếu được sử dụng khi một chương trình muốn xuất một số định danh cho hệ thống mà nó đang chạy. Ví dụ, \htrong Bash's PS1mở rộng đến tên máy chủ. Tương tự, các tệp nhật ký kiểu syslog cũng bao gồm tên máy chủ trên các mục nhật ký.

(* Mặc dù như nhận xét của Stephen Kitt, không gian tên có thể được sử dụng để hiển thị các tên máy chủ khác nhau cho các quy trình trên cùng một hệ thống.

Sau đó, cũng có tên DNS được sử dụng bởi các hệ thống khác để tìm địa chỉ IP của người khác. Có thể có nhiều hơn một tên DNS trỏ đến cùng một địa chỉ IP và cùng một máy chủ.

Tên máy chủ nội bộ và tên DNS không cần giống nhau. Giả sử ai đó có máy chủ web mà họ đã quyết định gọi orange(*) , bằng địa chỉ IP 192.0.2.9. Nó có thể phục vụ hai tên miền khác nhau và DNS sẽ được thiết lập để có www.example.orgwww.example.comcả hai đều hướng đến 192.0.2.9, trong khi tên máy chủ nội bộ của hệ thống có thể orange.example.orghoặc chỉ orange. Trong trường hợp đó, thiết lập DNS thường sẽ có một tra cứu ngược về 192.0.2.9điểm trở lại tên orange.example.org, nhưng không có gì để buộc điều đó.

(* bởi vì họ thích đặt tên máy chủ của mình theo tên trái cây. Ai đó có thể sử dụng webserver1hoặc như vậy, nhưng vấn đề là không cần đặt tên theo một trong các tên miền thực tế.)

Ngoài ra, lưu trữ ảo yêu cầu trình duyệt cho máy chủ web biết tên của trang web mà nó đã cố truy cập. Nếu không, máy chủ sẽ không biết trang web ảo nào mà khách hàng đã cố truy cập. HTTP có Hosttiêu đề cho điều đó.


Điều làm cho sự khác biệt giữa tên DNS và tên máy chủ nội bộ là giao thức mDNS (được thực hiện bởi daemon avahi ) và các giao thức khám phá khác. mDNS cho phép các máy chủ có thể truy vấn tất cả các máy chủ khác trên cùng một mạng để biết thông tin tên và để tên máy chủ của chúng hiển thị trên các máy chủ khác mà không cần thiết lập chúng trong DNS.


Cảm ơn. (1) "thiết lập DNS thường sẽ có 192.0.2.9 điểm trở lại tên cam.example.org" Không giải quyết được địa chỉ IP cho một tên máy chủ nhất định, tại sao lại ngược lại? (2) Đầu ra của hostnametừng được sử dụng trong việc phân giải tên máy chủ thành địa chỉ IP?
Tim

(2) ... Khi thiết lập mạng wifi cục bộ trong nhà của bạn từ ISP bằng bộ định tuyến và modem, các máy trong mạng có thể được xác định bằng các đầu ra của hostnamelệnh, đúng không? Bộ định tuyến có hoạt động như một DNS để giải quyết các đầu ra của hostnamecác địa chỉ IP riêng trong mạng không?
Tim

2
như đối với (1), cũng có các tra cứu ngược lấy địa chỉ IP và trả lại tên. (Đối với một hệ thống với một tên duy nhất và một địa chỉ duy nhất, bạn sẽ muốn có cả hai quyết tâm khác, chỉ vì lợi ích rõ ràng của)
ilkkachu

3
Mạng nhỏ có thể được sử dụng mDNS. Dù tốt hay xấu, nó cho phép chủ sở hữu hệ thống chọn tên máy chủ của riêng họ, có thể truy cập bởi các hệ thống khác trên mạng cục bộ mà không cần phải đăng ký với máy chủ DNS.
Đánh dấu Plotnick

2
Trong nhiều mạng gia đình, bộ định tuyến cục bộ hoạt động như một trình phân giải DNS. Các máy chủ gửi tên máy chủ của họ khi họ yêu cầu một địa chỉ bằng DHCP và bộ định tuyến ghi nhớ tên đó và giải quyết nó cho tất cả các máy chủ trên mạng. Như Mark và RubberStamp đã đề cập, cũng có Bonjour (được triển khai trong Avahi) cho phép khám phá dịch vụ trên mạng LAN (đặc biệt là máy in). Cũng lưu ý rằng các máy chủ có thể có nhiều địa chỉ IP và tên máy chủ hiện được đặt tên để các quy trình có thể thấy các tên máy chủ khác nhau trên cùng một máy chủ.
Stephen Kitt

7

Có phải một hệ thống máy tính (Linux) chỉ có một tên máy chủ?

Không.

[Tôi sẽ hoàn toàn phớt lờ rằng bất kỳ ai cũng có thể đặt cho máy chủ của bạn bất kỳ tên nào họ thích bằng cách có bản ghi DNS trỏ đến địa chỉ của nó hoặc bạn có thể có nhiều bí danh cho nó /etc/hostshoặc bất kỳ cân nhắc triết học nào về tên thực sự là gì]

Trên hệ thống linux, tên máy chủ chỉ đơn giản là tài nguyên theo quy trình ("không gian tên UTS") được kế thừa bởi các con của nó theo mặc định, nhưng có thể được tách rời khỏi bằng unshare(2)hoặc clone(2)sử dụng CLONE_NEWUTScờ. Bạn nên nhìn vào namespaces(7)trang web.

Giống như pids, số cổng, điểm gắn kết, v.v., tên máy chủ không còn là định danh toàn cầu và nó có thể được ảo hóa giống như không gian địa chỉ (bộ nhớ ảo) hoặc bảng mô tả tệp của một quá trình.

Trong lưu trữ ảo, một số tên máy chủ có thể được phân giải thành các thư mục gốc khác nhau trong một máy chủ web. Nếu một hệ thống máy tính (Linux) chỉ có thể có một tên máy chủ thì làm sao lưu trữ ảo được?

Lưu trữ ảo là một cái gì đó hoàn toàn khác và thường được thực hiện bằng cách định cấu hình bản ghi DNS ký tự đại diện (ví dụ: *.foo.com=> 13.13.13.13) với một máy chủ web đang chạy 13.13.13.13và phục vụ các thư mục / tài nguyên khác nhau dựa trên giá trị của Host:tiêu đề http [1] ; hầu hết các máy chủ web có thể phục vụ các tài nguyên khác nhau dựa trên bất kỳ tiêu đề http nào , không chỉ Host:). Trong tất cả điều này, hệ điều hành của hệ thống mà máy chủ web đang chạy không có phần.

[1] hoặc trên giá trị của chỉ thị tên máy chủ trong trường hợp https, cho phép cùng một máy chủ web sử dụng các chứng chỉ khác nhau cho các máy chủ ảo khác nhau.


Tôi phải không đồng ý với bạn về điều này. Đối với lưu trữ ảo, chúng tôi thường có một bộ hồ sơ cname cụ thể chỉ đến máy chủ duy nhất. Chúng tôi không sử dụng bản ghi DNS ký tự đại diện vì chúng tôi có nhiều hệ thống trong miền cần máy chủ ảo. Không bao gồm các không gian tên UTS (dù sao nó được sử dụng rộng rãi như thế nào?), Bạn có hostnamectl báo cáo một tên máy chủ duy nhất cho một máy chủ nhất định. DNS và hostnamectl là trực giao và ít liên quan đến nhau.
doneal24

1
@ DougO'Neal Bạn không đồng ý với điều gì? Bản ghi DNS ký tự đại diện đó được sử dụng theo cách tôi mô tả? Chúng cực kỳ được sử dụng như thế (xin lỗi vì chơi chữ), cho dù bạn có thích hay không. Đó là thông tin uts được ảo hóa trên mỗi tiến trình trong linux? Đó chỉ đơn giản là cách nó được. Đối với ý tưởng rằng các không gian tên chỉ được sử dụng / được sử dụng bởi các giải pháp container hóa / ảo hóa đóng hộp (như được đề xuất trong câu trả lời khác), xin lỗi nhưng đó là "chỉ các cô gái chơi với búp bê" hoặc "truyền tay chỉ được sử dụng trong xe tải nặng" chất lượng ;-)
Chú Billy

1

Bạn thường đặt một tên máy chủ duy nhất trong / etc / hostname. Và, bạn đặt nhiều tên miền trong / etc / hosts.

Các không gian tên UTS cho phép một hệ thống duy nhất xuất hiện để có các tên miền và máy chủ khác nhau cho các quy trình khác nhau. Để biết thêm thông tin: https://en.wikipedia.org/wiki/Linux_namespaces . Vì vậy, hoàn toàn có thể có nhiều tên máy chủ và tên miền cho cùng một hệ thống. Ví dụ, container docker bên trong cùng một máy chủ có tên máy chủ khác với hệ thống máy chủ.

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.