ในการตั้งชื่อโฮสต์ ทำใช้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คำสั่งและตรวจสอบผลลัพธ์ของhostnamevs 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 ที่เกี่ยวข้องพยายามที่ล้มเหลวและรายงานว่าhostnameName 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 ด้วยหรือhostnamednsdomainname
วิธีที่แนะนำในการตั้งค่า 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 ของฉัน