如何在 CentOS 7.0 上設置完全限定的主機名?
如何在 CentOS 7.0 上設置完全限定的主機名?
我在網上看過一些文章,例如使用:
$ sudo hostnamectl set-hostname nodename.domainname
但是,執行 domainname 不會返回任何內容:
$ domainname (none)
還:
$ hostname nodename.domainname
然而,
$ hostname -f hostname: Name or service not known $ hostname -d hostname: Name or service not known
一些調試輸出:
$ cat /etc/hostname nodename.domainname $ grep ^hosts /etc/nsswitch.conf hosts: files dns
要設置主機名 ,請使用
hostnamectl
,但只能使用主機名,如下所示:hostnamectl set-hostname nodename
設置**(DNS) 域名**編輯
/etc/hosts
文件並確保:
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
那裡有一條線- 沒有其他帶有 的行
<some IP> <hostname>
,這包括帶有127.0.0.1
和::1
(IPv6) 地址的行。請注意,除非您使用 NIS,否則執行命令
(none)
時的輸出正確。domainname
要檢查您的 DNS 域名是否設置正確,請使用
dnsdomainname
命令並檢查hostname
vshostname -f
(FQDN) 的輸出。NIS 與 DNS 域
當我第一次遇到這個問題時,我感到很困惑。似乎該
domainname
命令早於 Internet 的普及。它不是 DNS 域名,而是顯示或設置系統的NIS(網路資訊服務)又名 YP(黃頁)域名(一組由主 NIS 伺服器提供服務的電腦)。此命令僅顯示getdomainname(2)
標準庫函式返回的名稱。(nisdomainname
並且ypdomainname
是此命令的替代名稱。)顯示 FQDN 或 DNS 域名
要檢查DNS (Internet) 域名,您應該執行
dnsdomainname
命令或hostname
使用-d, --domain
選項。(請注意,該dnsdomainname
命令不能用於設置 DNS 域名 - 它僅用於顯示它。)要顯示系統的FQDN(Fully Qualified Domain Name),請
hostname
使用-f, --fqdn, --long
選項執行(同樣,此命令不能用於設置域名部分)。上述命令使用系統的解析器(由
gethostbyname(3)
標準庫中的函式實現,由 POSIX 指定)來確定 DNS 域名和 FQDN。名稱解析
在現代作業系統(例如 RHEL 7)中,
hosts
條目 in/etc/nsswitch.conf
用於解析主機名。在您的 CentOS 7 機器中,此行配置為(CentOS 7 的預設設置):hosts: files dns
這意味著當解析器函式查找主機名或 IP 地址時,它們首先檢查文件中的條目,
/etc/hosts
然後嘗試./etc/resolv.conf
在執行
hostname -f
以獲取主機的 FQDN 時,解析器函式會嘗試獲取系統主機名的 FQDN。如果主機未在/etc/hosts
文件中或相關 DNS 伺服器中列出,則嘗試失敗並hostname
報告Name or service not known
.當
hostname -d
執行獲取域名時,進行相同的操作,通過從FQDN中剝離主機名部分和第一個點來確定域名部分。配置域名
- 更新相關的 DNS 名稱伺服器
就我而言,我已經在本地 LAN 的 DNS 伺服器中為我的新 CentOS 7 機器添加了一個條目,因此當我使用or選項
/etc/hosts
執行時在文件中找不到 FQDN時,本地 DNS 服務能夠完全解析我的新主機名的 FQDN。hostname``-d``-f
2. 使用/etc/hosts
文件如果尚未配置 DNS 伺服器,則可以在
/etc/hosts
文件中指定完全限定的域名。執行此操作的最常見方法是指定係統的主 IP 地址,後跟其 FQDN 和短主機名。例如,172.22.0.9 nodename.domainname nodename
摘自
hostname
手冊頁您不能使用
hostname
或更改 FQDNdnsdomainname
。設置 FQDN 的推薦方法是使主機名成為使用
/etc/hosts,
DNS 或 NIS 的完全限定名稱的別名。例如,如果主機名是“ursula”,則可能有一行/etc/hosts
內容如下:127.0.1.1 ursula.example.com ursula
從技術上講:FQDN 是 getaddrinfo(3) 為 gethostname(2) 返回的主機名返回的名稱。DNS 域名是第一個點之後的部分。
因此,這取決於解析器的配置(通常在 中
/etc/host.conf
)如何更改它。通常在 DNS 或 NIS 之前解析 hosts 文件,因此最常見的是更改/etc/hosts
.