ในการตั้งชื่อโฮสต์ ทำใช้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
vs hostname -f
(FQDN)
NIS กับโดเมน DNS
ปัญหานี้ทำให้ฉันสับสนเมื่อฉันเจอมันครั้งแรก ดูเหมือนว่าdomainname
คำสั่งจะมาก่อนความนิยมของอินเทอร์เน็ต แทนที่จะเป็นชื่อโดเมน DNS จะแสดงหรือตั้งค่าชื่อโดเมนNIS (บริการข้อมูลเครือข่าย)หรือที่รู้จักในชื่อ YP (สมุดหน้าเหลือง) (กลุ่มคอมพิวเตอร์ที่มีบริการโดยเซิร์ฟเวอร์ NIS หลัก) คำสั่งนี้จะแสดงชื่อที่ส่งคืนโดยgetdomainname(2)
ฟังก์ชันไลบรารีมาตรฐาน ( nisdomainname
และypdomainname
เป็นชื่อทางเลือกสำหรับคำสั่งนี้)
แสดงชื่อโดเมน FQDN หรือ DNS
ในการตรวจสอบชื่อโดเมน DNS (อินเทอร์เน็ต) คุณควรรันdnsdomainname
คำสั่งหรือhostname
ด้วย-d, --domain
ตัวเลือกต่างๆ (โปรดทราบว่าdnsdomainname
ไม่สามารถใช้คำสั่งเพื่อตั้งชื่อโดเมน DNS ได้ - ใช้เพื่อแสดงเท่านั้น)
ในการแสดงFQDN (ชื่อโดเมนที่ผ่านการรับรองโดยสมบูรณ์)ของระบบให้รันhostname
ด้วย-f, --fqdn, --long
ตัวเลือก (เช่นเดียวกันคำสั่งนี้ไม่สามารถใช้เพื่อตั้งค่าส่วนของชื่อโดเมน)
คำสั่งข้างต้นใช้โปรแกรมแก้ไขของระบบ (นำมาใช้โดยgethostbyname(3)
ฟังก์ชั่นจากไลบรารีมาตรฐานตามที่ระบุโดย POSIX) เพื่อกำหนดชื่อโดเมน DNS และ FQDN
การแก้ไขชื่อ
ในระบบปฏิบัติการที่ทันสมัยเช่น RHEL 7 hosts
รายการ/etc/nsswitch.conf
จะถูกใช้เพื่อแก้ไขชื่อโฮสต์ ในเครื่อง CentOS 7 ของคุณบรรทัดนี้ได้รับการกำหนดค่าเป็น (ค่าเริ่มต้นสำหรับ CentOS 7):
hosts: files dns
ซึ่งหมายความว่าเมื่อฟังก์ชั่นการแก้ไขค้นหาชื่อโฮสต์หรือที่อยู่ IP พวกเขาจะตรวจสอบรายการใน/etc/hosts
ไฟล์ก่อนแล้วจึงลองเซิร์ฟเวอร์ DNSที่อยู่ในรายการ/etc/resolv.conf
ถัดไป
เมื่อทำงานhostname -f
เพื่อรับ FQDN ของโฮสต์ฟังก์ชันตัวแก้ปัญหาพยายามรับ FQDN สำหรับชื่อโฮสต์ของระบบ ถ้าโฮสต์ที่ไม่ได้ระบุไว้ใน/etc/hosts
ไฟล์หรือเซิร์ฟเวอร์ DNS ที่เกี่ยวข้องพยายามที่ล้มเหลวและรายงานว่าhostname
Name or service not known
เมื่อhostname -d
มีการเรียกใช้เพื่อรับชื่อโดเมนการดำเนินการเดียวกันจะดำเนินการและส่วนชื่อโดเมนจะถูกกำหนดโดยการแยกส่วนชื่อโฮสต์และจุดแรกจาก FQDN
กำหนดค่าชื่อโดเมน
1. อัปเดตเซิร์ฟเวอร์ชื่อ DNS ที่เกี่ยวข้อง
ในกรณีของฉันฉันได้เพิ่มรายการสำหรับเครื่อง CentOS 7 ใหม่ของฉันในเซิร์ฟเวอร์ DNS สำหรับ LAN ในพื้นที่ของฉันดังนั้นเมื่อ FQDN ไม่พบใน/etc/hosts
ไฟล์เมื่อฉันวิ่งhostname
ด้วย-d
หรือ-f
ตัวเลือกบริการ DNS ท้องถิ่นสามารถ แก้ไข FQDN สำหรับชื่อโฮสต์ใหม่ของฉันอย่างสมบูรณ์
2. ใช้/etc/hosts
ไฟล์
หากไม่ได้กำหนดค่าเซิร์ฟเวอร์ DNS คุณสามารถระบุชื่อโดเมนแบบเต็มได้ใน/etc/hosts
ไฟล์ วิธีทั่วไปในการทำเช่นนี้คือการระบุที่อยู่ IP หลักของระบบตามด้วย FQDN และชื่อโฮสต์แบบสั้น เช่น,
172.22.0.9 nodename.domainname nodename
ตัดตอนมาจากhostname
หน้าคน
คุณไม่สามารถเปลี่ยน FQDN ด้วยหรือhostname
dnsdomainname
วิธีที่แนะนำในการตั้งค่า FQDN คือการทำให้ชื่อโฮสต์เป็นชื่อแทนสำหรับชื่อแบบเต็มโดยใช้/etc/hosts,
DNS หรือ NIS ตัวอย่างเช่นหากชื่อโฮสต์คือ "ursula" อาจมีบรรทัด/etc/hosts
ที่อ่าน:
27.0.1.1 ursula.example.com ursula
ในทางเทคนิค: FQDN เป็นชื่อ getaddrinfo (3) ส่งคืนสำหรับชื่อโฮสต์ที่ส่งคืนโดย gethostname (2) ชื่อโดเมน DNS เป็นส่วนหลังจุดแรก
ดังนั้นจึงขึ้นอยู่กับการกำหนดค่าของตัวแก้ไข (โดยปกติ
/etc/host.conf
) วิธีที่คุณสามารถเปลี่ยนได้ โดยปกติไฟล์โฮสต์ก่อนที่จะแยก DNS หรือ NIS ดังนั้นมันเป็นเรื่องธรรมดามากที่สุดในการเปลี่ยน FQDN
/etc/hosts
ใน
hostname -f
คำสั่งไม่ทำงานบน CentOS vm ของฉัน