Có nên sử dụng FQDN trong / etc / hostname thay vì tên máy chủ không?


10

Khi tôi đọc trong trang man, nên đặt tên máy chủ (không có tên miền) /etc/hostname. Ví dụ: máy chủ lưu trữ thay vì host.domainsub.domaintld. Nhưng, như tôi biết, một số phần mềm dựa trên có FQDNtrong /etc/hostname.

Những gì nên chỉ định trong máy /etc/hostname Debian / Ubuntu?

Nếu không phải là FQDN, FQDN nên được chỉ định ở đâu?

Tôi biết, câu hỏi hơi cũ, nhưng không tìm thấy câu trả lời rõ ràng. Một số người nói tên máy chủ, một số - FQDN. Cảm ơn.


1
Bạn đang tìm những người đang nói rằng bạn đặt FQDN ở đâu trong tập tin / etc / hostname? Tập tin đó chỉ dành cho tên máy chủ của hệ thống.
Terrance

Khi đọc tài liệu về nó trên internet đã gặp ở đâu đó. Và nơi nào nên chỉ định FQDN của mình?
Bulat M.

@Terrance, thực sự tôi muốn nhận được câu trả lời từ những người có kinh nghiệm trong lĩnh vực này để họ chỉ cho bạn cách làm "đúng" ngay từ đầu. Viết như một câu trả lời. Và phải làm gì trong các bản phân phối không có / etc / hostname?
Bulat M.

Câu trả lời:


6

Trong tệp / etc / hostname bạn chỉ sử dụng tên máy chủ. FQDN bạn có thể đặt trên: / etc / hosts có thể trông như sau:

127.0.1.1        thishost.mydomain.org    thishost

Theo hướng dẫn của tập tin máy chủ.

http://man7.org/linux/man-pages/man5/hosts.5.html


1
CỐ ĐỊNH: Cảm ơn, tuy nhiên, cần phải biết về ưu và nhược điểm của việc chỉ định / không chỉ định FQDN trong / etc / hostname. Tôi biết về giải pháp của bạn: đó là một sơ khai cho các chương trình muốn giải quyết FQDN thành một cái gì đó (không quan trọng với địa chỉ nào) để hoạt động.
Bulat M.

11

Trả lời sửa đổi:

Bản thân máy chủ không xử lý FQDN thực tế. Điều đó được xử lý bởi DNS . FQDN (Tên miền đủ điều kiện) được xử lý bằng cách dịch DNS tên thành địa chỉ IP. Sử dụng /etc/hoststệp, về cơ bản bạn sẽ ghi đè máy chủ DNS. Trước tiên, máy tính sẽ nhìn vào /etc/hoststệp để xem liệu một mục nhập được xác định cho tên máy chủ đến địa chỉ IP. Các mục trong /etc/hostshình như sau:

127.0.0.1 localhost
127.0.1.1 terrance-ubuntu.local terrance-ubuntu

Những mục này không phải là distro cụ thể. Tất cả các hệ điều hành sử dụng cùng một định dạng cho các dòng này. Chỉ cần vị trí của hoststập tin thay đổi. Linux, thông thường nó nằm trong /etc/thư mục, trong đó Windows thường nằm trong C:\Windows\System32\drivers\etc\thư mục.

Phá vỡ dòng đó, bạn có thể thấy rằng tôi đang gán cả hai terrance-ubuntu.local, chính FQDN của tôi để ghi đè DNS để các ứng dụng biết không rời khỏi máy tính của tôi và terrance-ubuntumột lần nữa là tên máy chủ để các ứng dụng biết không rời khỏi máy tính của tôi hoặc 127.0.0.1 ( localhost ). Việc chỉ định tên máy chủ của hệ thống của tôi 127.0.1.1không có tác dụng đối với các máy tính còn lại tìm thấy máy chủ của tôi trên mạng. Nếu DNS hoạt động bình thường, họ sẽ thấy tên máy chủ của tôi là 10.0.0.100. Lý do sử dụng 127.0.1.1là để các ứng dụng của tôi tìm thấy hệ thống của tôi nhanh hơn vì nó sẽ biết rằng hệ thống của tôi không ở đâu đó trên mạng của tôi. Tên máy chủ thực tế của tôi với tên .locallà FQDN của tôi,.local thực sự là Miền của tôi mà tôi thiết lập qua bộ định tuyến cũng là một máy chủ DNS khác trên mạng của tôi.

Bây giờ, giả sử rằng các dịch vụ DNS trên mạng cục bộ không gán tên máy chủ hoặc FQDN cho địa chỉ IP, nhưng bạn biết địa chỉ IP của máy chủ trên mạng cục bộ là gì. Sau đó, bạn sẽ chỉ định máy chủ đó trong /etc/hoststệp của mình để không cần nhập địa chỉ IP của máy chủ mỗi khi bạn muốn truy cập. Máy chủ có thể là máy chủ công cụ, máy in hoặc một số hệ thống được kết nối mạng khác. Thêm mục như bạn thường làm vào /etc/hoststập tin.

Tôi sẽ sử dụng máy in kết nối mạng của tôi chẳng hạn. Nó có IP tĩnh 10.0.0.253. Tôi không biết tên của nó mặc dù. Đối với điều này, tôi muốn gọi nó hp_printer. Tôi sẽ ping IP và tên máy chủ cho nó, sau đó thêm vào /etc/hosts.

terrance@terrance-ubuntu:~$ ping -c 2 10.0.0.253
PING 10.0.0.253 (10.0.0.253) 56(84) bytes of data.
64 bytes from 10.0.0.253: icmp_seq=1 ttl=255 time=0.326 ms
64 bytes from 10.0.0.253: icmp_seq=2 ttl=255 time=0.334 ms

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
ping: unknown host hp_printer

terrance@terrance-ubuntu:~$ sudo vi /etc/hosts
10.0.0.253 hp_printer.local hp_printer

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
PING hp_printer.local (10.0.0.253) 56(84) bytes of data.
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=1 ttl=255 time=0.334 ms
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=2 ttl=255 time=0.303 ms

Bây giờ, tôi cũng có thể truy cập trang web để thiết lập máy in của mình với tên tôi đã đặt cho nó thay vì địa chỉ IP có thể dễ nhớ hơn:

nhập mô tả hình ảnh ở đây

Tệp /etc/resolv.conf của bạn cũng được DNS sử dụng để giúp tìm tên máy chủ. Đây là tập tin cấu hình cho trình phân giải. Nó cung cấp miền tìm kiếm để bạn không phải chỉ định FQDN của mình mọi lúc khi bạn tìm kiếm máy chủ lưu trữ. Nó cũng cung cấp địa chỉ IP cho DNS hoặc máy chủ tên của mạng cục bộ của bạn. Các searchdòng dưới đây cho thấy tên localđó là tên miền của tôi.

terrance@terrance-ubuntu:~$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.1
search local

Hy vọng rằng điều này sẽ giúp hiểu rõ hơn về cách thức hoạt động của DNS và FQDN.


tại sao bạn ánh xạ FQDN trong / etc / hosts thành 127.0.1.1?
Bulat M.

1
@BulatM. Xin vui lòng xem câu trả lời sửa đổi của tôi.
Terrance

bạn có thể giải thích sự khác biệt giữa từ khóa tìm kiếm và tên miền trong /etc/resolv.conf không? Tôi đang đọc trang man của decv.conf, vẫn chưa rõ lắm.
Bulat M.

Và có thể bao gồm cả hai? Bạn có thể trình bày trường hợp hợp lệ hữu ích trong câu trả lời? Cảm ơn.
Bulat M.

1
@BulatM. Nhấp vào các liên kết trong câu trả lời của tôi và chúng đưa bạn đến nhiều thông tin hơn về mọi thứ. Giống như en.wikipedia.org/wiki/Resolv.conf cung cấp nhiều thông tin hơn. Tôi ở đây để giúp đỡ, không phải để dạy cho bạn. Tôi không được trả tiền, vì đây là tất cả tình nguyện, vì vậy xin vui lòng thực hiện một số nghiên cứu của riêng bạn.
Terrance

4

Các manpage củahostname(1) thảo luận này (đoạn in đậm được nhấn mạnh của tôi):

FQDN
   FQDN (Tên miền đủ điều kiện) của hệ thống là tên mà
   các phân giải (3) lợi nhuận cho tên máy chủ, chẳng hạn như, ursula.example.com .
   Nó thường là tên máy chủ theo sau là tên miền DNS (phần
   sau dấu chấm đầu tiên). Bạn có thể kiểm tra FQDN bằng tên máy chủ --fqdn   hoặc
   tên miền sử dụng dnsdomainname .

   Bạn không thể thay đổi FQDN bằng tên máy chủ hoặc dnsdomainname .

   Phương pháp thiết lập FQDN được đề xuất là đặt tên máy chủ thành
   một bí danh cho tên đủ điều kiện bằng cách sử dụng / etc / hosts, DNS hoặc NIS.
   Ví dụ: nếu tên máy chủ là "ursula", người ta có thể có một dòng trong
   / etc / hosts mà đọc

          127.0.1.1 ursula.example.com ursula

   Về mặt kỹ thuật: FQDN là tên getaddrinfo (3) trả về cho máy chủ
   tên được trả về bởi gethostname (2). Tên miền DNS là một phần sau
   dấu chấm đầu tiên.

   Do đó, nó phụ thuộc vào cấu hình của trình phân giải (thường là trong
   /etc/host.conf) làm thế nào bạn có thể thay đổi nó. Thông thường tệp máy chủ được phân tích cú pháp
   trước DNS hoặc NIS, do đó, thông thường nhất là thay đổi FQDN trong
   / etc / host.

Và nếu bạn đặt FQDN làm tên máy chủ trong khi cài đặt, nó chỉ ghi thành phần nắm tay vào /etc/hostnamevà giữ FQDN /etc/hosts.

Vì vậy, trong trường hợp này, chỉ cần để trình cài đặt làm những gì nó làm.


Có phải (bao gồm 127.0.1.1 ursula.example.com ursula trong / etc / hosts) Debian \ Ubuntu cụ thể hoặc có thể được áp dụng tốt như nhau cho bất kỳ distr nào khác không?
Bulat M.

1
Dunno về các distro khác. Bạn có thể làm tương tự trong Arch và Cent OS. Câu hỏi về các bản phát hành khác nên được hỏi tại Unix & Linux .
muru
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.