Để đặ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.1
và ::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 domainname
lệ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 dnsdomainname
lệnh và kiểm tra đầu ra của hostname
vs 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ư domainname
lệ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. ( nisdomainname
và ypdomainname
là 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 dnsdomainname
lệnh hoặc hostname
với các -d, --domain
tùy chọn. (Lưu ý rằng dnsdomainname
lệ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 hostname
với các -f, --fqdn, --long
tù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, hosts
mụ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/hosts
tệp hoặc bởi máy chủ DNS có liên quan, lần thử sẽ thất bại và hostname
bá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/hosts
tệp khi tôi chạy hostname
với -d
hoặc -f
tù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/hosts
tậ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/hosts
tệ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ừ hostname
trang người đàn ông
Bạn không thể thay đổi FQDN bằng hostname
hoặ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 -f
lệnh không hoạt động trên CentOS vm của tôi.