Điều gì xác định tên máy chủ Linux?


13

Trong vài năm tôi đã sử dụng Linux làm hệ thống chính của mình, cụ thể là Fedora, tôi luôn thấy tên máy chủ của mình được đặt thành "localhost", ngoại trừ khi tôi kết nối với một số mạng và nó trở thành IP của tôi. Hôm nay tôi đã trải nghiệm những hành vi sau đây mà tôi gặp khó khăn trong việc hiểu.

Tôi đã thiết lập cài đặt Ubuntu trên một phân vùng khác của máy tính xách tay của mình, đặt tên máy tính / tên máy chủ trong quá trình cài đặt Ubuntu. Khi tôi khởi động lại vào Fedora, Fedora đã cập nhật tên máy chủ của tôi thành tên tôi đặt trong bản cài đặt Ubuntu.

Tôi luôn nghĩ rằng tên máy chủ được cấu hình và lưu trữ trên phân vùng cài đặt distro và thực sự nội dung của / etc / hostname trên Fedora vẫn đọc "localhost.localdomain", nhưng chạy hostnamelệnh sẽ hiển thị tên máy chủ mới. Cả hai cài đặt đều chia sẻ một phân vùng khởi động efi, nhưng nếu không thì rời rạc. Tôi đang tự hỏi từ đâu và tại sao cài đặt Fedora đang đọc tên máy chủ mới?


Mục nhập của bạn hosts:trong /etc/nsswitch.conf là gì?
cutrightjm

@cutrightjmhosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
fedora

Câu trả lời:


12

Các hostnamechương trình thực hiện một syscall uname, như có thể thấy từ chạy:

strace hostname
...
uname({sysname="Linux", nodename="my.hostname.com", ...}) = 0
...

Từ trang người đàn ông không có tòa nhà, nó cho biết tòa nhà lấy cấu trúc sau từ kernel:

  struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* Operating system release (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

Vì vậy, tên miền đến từ hệ thống NIS / YP, nếu chúng tôi tin nhận xét. Vì vậy, nhiều khả năng, có thể có một dịch vụ NIS / YP trên mạng của bạn đang truy ngược lại tên bạn được đặt bởi HĐH ubfox.


5
Điều này không đúng, xem hostname(1)trang hướng dẫn giải thích cách đặt tên máy chủ và trả về. Mặc dù có sự giống nhau về tên, tên miền NIS / YP không liên quan gì đến tên miền FQDN / DNS được trình giải quyết trả về. Nếu bạn chưa cấu hình NIS / YP thì tên miền NIS / YP sẽ không được đặt.
bodgit

Có phải "gật đầu" là lĩnh vực bạn quan tâm? Sẽ phù hợp với lỗ mũi unix để vẫn coi mạng IP là một điều tùy chọn và triển khai được xác định :)
rackandboneman

5

Có hai khái niệm độc lập (!) Của tên máy chủ trên hệ thống linux.

Có bất cứ điều gì mà kernel xem xét tên máy chủ cục bộ (được xử lý bởi các cuộc gọi hệ thống gethostname / uname và sethostname) không phụ thuộc vào bất kỳ kết nối mạng nào - những cơ chế này vẫn tồn tại nếu bạn xây dựng kernel không có khả năng kết nối mạng TCP / IP.

Có một hoặc nhiều tên máy chủ thực sự được kết nối với TCP / IP (hoặc ngăn xếp mạng khác - không phải tất cả các mạng trên thế giới đều là địa chỉ IP!) Và các địa chỉ này được xử lý trong không gian người dùng bởi các chức năng của thư viện trình phân giải (một phần của libc), sẽ xác định tên đó bằng cách giải thích các nguồn (tệp cục bộ / etc / hosts, DNS, NIS ....) theo các quy tắc bạn cung cấp cho chúng trong các tệp cấu hình phù hợp (/etc/nsswitch.conf, / etc /host.conf v.v ...).


3

Có lẽ Ubuntu đã kết nối với internet thông qua bộ định tuyến gia đình của bạn trong quá trình cài đặt. Để làm điều này, nó đã báo cáo tên máy chủ của mình cho bộ định tuyến và thu được một IP cục bộ tạm thời.

Khi bạn khởi động lại vào Fedora, nó sẽ kết nối với cùng một bộ định tuyến để lấy địa chỉ IP của nó, nhưng hợp đồng thuê cũ được tạo cho Ubuntu vẫn còn hiệu lực. Vì nó là cùng một máy có cùng card mạng và cùng địa chỉ MAC phần cứng, nên nó sẽ sử dụng lại cùng một hợp đồng thuê.

Tôi đoán là bộ định tuyến sẽ gửi tên máy chủ lưu trữ mà hợp đồng thuê IP đã được đăng ký và Fedora chọn nó.

Thật không may, tôi không có bằng chứng hoặc trích dẫn để hỗ trợ câu trả lời của mình, tôi chỉ có thể nói với kinh nghiệm cá nhân về việc cài đặt Ubuntu trong khởi động kép với Windows. Trước đó, Ubuntu đã từ chối đặt cùng tên máy chủ trong quá trình cài đặt như tên tôi đã sử dụng trong Windows, vì nó tuyên bố rằng tên này đã có mặt trong mạng. Có khả năng chúng ta có một cái gì đó tương tự xảy ra ở đây.

Để xác minh xem những gì tôi đoán cũng áp dụng cho tình huống của bạn, hãy thử thu hồi hợp đồng thuê IP của bạn trong giao diện cấu hình của bộ định tuyến và sau đó khởi động lại Fedora. Nếu nó không còn lấy tên máy chủ của Ubuntu nữa thì tôi đã đúng.


Thực sự có khả năng máy khách DHCP gửi tên máy chủ đến máy chủ hoặc đọc tên máy chủ từ máy chủ. Hầu hết mọi thứ đều làm đầu tiên (mặc dù khi tên máy chủ được đặt thành "localhost", nó không có khả năng có tác dụng nhiều :). Đọc một hostname từ máy chủ DHCP là tốt với khách hàng Linux DHCP, nhưng hiểu biết của tôi là hỗ trợ này không phải luôn luôn được kích hoạt ( ví dụ ). Thật thú vị khi biết rằng một Fedora gần đây hơn dường như làm điều này.
nguồnjedi
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.