Làm cách nào để đặt tên máy chủ đủ điều kiện trên CentOS 7.0?


19

Làm cách nào để đặt tên máy chủ đủ điều kiện trên CentOS 7.0?

Tôi đã thấy một vài bài viết trực tuyến ví dụ bằng cách sử dụng:

$ sudo hostnamectl set-hostname nodename.domainname

Tuy nhiên, chạy tên miền không trả về gì:

$ domainname
(none)

Cũng thế:

$ hostname
nodename.domainname

Tuy nhiên,

$ hostname -f
hostname: Name or service not known
$ hostname -d
hostname: Name or service not known

Một số đầu ra gỡ lỗi:

$ cat /etc/hostname
nodename.domainname

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns

Câu trả lời:


30

Để đặt tên máy chủ, hãy sử dụng hostnamectl, nhưng chỉ với tên máy chủ, như thế này:

hostnamectl set-hostname nodename


Để đặt tệp chỉnh sửa tên miền (DNS)/etc/hosts và đảm bảo rằng:

  1. Có một dòng <machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>ở đó
  2. KHÔNG có dòng nào khác với <some IP> <hostname>và dòng này bao gồm các dòng có địa chỉ 127.0.0.1::1(IPv6).

Lưu ý rằng trừ khi bạn đang sử dụng NIS, (none)là đầu ra chính xác khi chạy domainnamelệnh.

Để kiểm tra xem tên miền DNS của bạn có được đặt chính xác hay không, hãy sử dụng dnsdomainnamelệnh và kiểm tra đầu ra của hostnamevs hostname -f(FQDN).


NIS so với tên miền DNS

Vấn đề này làm tôi bối rối khi lần đầu tiên tôi bắt gặp nó. Có vẻ như domainnamelệnh này có trước sự phổ biến của Internet. Thay vì tên miền DNS, nó hiển thị hoặc đặt tên miền NIS (Dịch vụ thông tin mạng) hay còn gọi là tên miền YP (Trang vàng) (một nhóm máy tính có dịch vụ được cung cấp bởi máy chủ NIS chính). Lệnh này chỉ đơn giản hiển thị tên được trả về bởi getdomainname(2)chức năng thư viện tiêu chuẩn. ( nisdomainnameypdomainnamelà tên thay thế cho lệnh này.)

Hiển thị tên miền FQDN hoặc DNS

Để kiểm tra tên miền DNS (Internet), bạn nên chạy dnsdomainnamelệnh hoặc hostnamevới các -d, --domaintùy chọn. (Lưu ý rằng dnsdomainnamelệnh không thể được sử dụng để đặt tên miền DNS - nó chỉ được sử dụng để hiển thị tên đó.)

Để hiển thị FQDN (Tên miền đủ điều kiện) của hệ thống, hãy chạy hostnamevới các -f, --fqdn, --longtùy chọn (tương tự, lệnh này không thể được sử dụng để đặt phần tên miền).

Các lệnh trên sử dụng trình phân giải của hệ thống (được thực hiện bởi gethostbyname(3)chức năng từ thư viện chuẩn, như được chỉ định bởi POSIX) để xác định tên miền DNS và FQDN.

Độ phân giải tên

Trong các hệ điều hành hiện đại như RHEL 7, hostsmục nhập /etc/nsswitch.confđược sử dụng để phân giải tên máy chủ. Trong máy CentOS 7 của bạn, dòng này được định cấu hình là (mặc định cho CentOS 7):

hosts:      files dns

Điều này có nghĩa là khi các hàm phân giải tìm kiếm tên máy chủ hoặc địa chỉ IP, trước tiên chúng sẽ kiểm tra một mục trong /etc/hosts tệp và tiếp theo thử (các) máy chủ DNS được liệt kê trong /etc/resolv.conf.

Khi chạy hostname -fđể lấy FQDN của máy chủ, các hàm phân giải sẽ cố lấy FQDN cho tên máy chủ của hệ thống. Nếu máy chủ không được liệt kê trong /etc/hoststệp hoặc bởi máy chủ DNS có liên quan, lần thử sẽ thất bại và hostnamebáo cáo điều đó Name or service not known.

Khi hostname -dđược chạy để lấy tên miền, các hoạt động tương tự được thực hiện và phần tên miền được xác định bằng cách tước phần tên máy chủ và dấu chấm đầu tiên từ FQDN.

Định cấu hình tên miền

1. Cập nhật máy chủ tên DNS có liên quan

Trong trường hợp của tôi, tôi đã thêm một mục nhập cho máy CentOS 7 mới của mình vào máy chủ DNS cho mạng LAN cục bộ để khi không tìm thấy FQDN trong /etc/hoststệp khi tôi chạy hostnamevới -dhoặc -ftùy chọn, các dịch vụ DNS cục bộ có thể giải quyết hoàn toàn FQDN cho tên máy chủ mới của tôi.

2. Sử dụng /etc/hoststập tin

Nếu máy chủ DNS chưa được định cấu hình, tên miền đủ điều kiện có thể được chỉ định trong /etc/hoststệp. Cách phổ biến nhất để làm điều này là chỉ định địa chỉ IP chính của hệ thống theo sau là FQDN và tên máy chủ ngắn của nó. Ví dụ,

172.22.0.9  nodename.domainname nodename

Trích từ hostnametrang người đàn ông

Bạn không thể thay đổi FQDN bằng hostnamehoặc dnsdomainname.

Phương pháp được đề xuất để thiết lập FQDN là đặt tên máy chủ thành bí danh cho tên đủ điều kiện bằ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đó đọc:

27.0.1.1    ursula.example.com ursula

Về mặt kỹ thuật: FQDN là tên getaddrinfo (3) trả về cho tên máy chủ được trả về bởi gethostname (2). Tên miền DNS là 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à /etc/host.conf) cách 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 /etc/hosts.


Cảm ơn câu trả lời của bạn. Tôi đã cập nhật câu hỏi - tiếc là hostname -flệnh không hoạt động trên CentOS vm của tôi.
Chris Snow

@SHC Bạn có thể chỉnh sửa câu hỏi của mình để bao gồm nội dung /etc/hostnamevà đầu ra của grep ^hosts: /etc/nsswitch.confkhông? Tôi không biết nhiều về Trình quản lý mạng nhưng tôi cũng nhận thấy rằng phần của tôi /etc/NetworkManager/NetworkManager.confchứa một dòng trong [keyfile]phần của nó : hostname=<nodename>.
Anthony G - công lý cho Monica

1
@SHC Tôi đã nghiên cứu vấn đề này và đã sửa đổi triệt để câu trả lời của tôi; bây giờ nó nên giải quyết câu hỏi của bạn toàn diện hơn.
Anthony G - công lý cho Monica

Các lede cho câu trả lời này là không phù hợp với cơ thể. hostnamectl set-hostname nodename.domainnamekhông không thiết lập tên miền DNS (và nó không phải là nó đặt tên miền NIS hoặc là).
nguồn

@sourcejedi Hiện tại tôi không có thời gian nhưng tôi sẽ cố gắng làm rõ câu trả lời của mình khi có cơ hội.
Anthony G - công lý cho Monica

1

Trên Centos7, sử dụng nmtui để đặt tên máy chủ và cung cấp định dạng gật đầu.domainname / FQDN sẽ cho kết quả phù hợp. tên máy chủ [d / f / s] đều cung cấp kết quả mong đợi chính xác. Nó không được lưu trữ trong /etc/resolv.conf HOẶC / etc / hosts. Nhưng FQDN được ghi vào / etc / hostname dưới dạng một mục nhập dòng đơn.


0

Đối với tôi, tệp / etc / hostname chứa FQDN thay vì tên máy chủ (ví dụ: tên máy chủ thay vì tên máy chủ.example.com). Khi tôi xóa tên miền khỏi tên máy chủ trong / etc / hostname, lệnh 'hostname -f' hoạt động bình thường.

Tôi nghĩ rằng điều này đã được giới thiệu khi tôi cài đặt CentOS 7 VM. Tôi chỉ nên nhập tên máy chủ, không phải tên miền đủ điều kiện.

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.