Để đặ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:
- Có một dòng
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>ở đó
- 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.1và ::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. ( nisdomainnamevà ypdomainnamelà 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.
hostname -flệnh không hoạt động trên CentOS vm của tôi.