ฉันใช้ RHEL 5.7 และhostname
คำสั่งนั้นให้ชื่อโฮสต์ที่ถูกต้องกับฉัน
แต่hostname -s
และกลับ:hostname -f
Unknown host
ทำไม?
/etc/hostname
คืออะไร?
hostname -f
ใช้ DNS คุณมีรายการ DNS ย้อนกลับสำหรับ IP ของคุณหรือไม่
ฉันใช้ RHEL 5.7 และhostname
คำสั่งนั้นให้ชื่อโฮสต์ที่ถูกต้องกับฉัน
แต่hostname -s
และกลับ:hostname -f
Unknown host
ทำไม?
/etc/hostname
คืออะไร?
hostname -f
ใช้ DNS คุณมีรายการ DNS ย้อนกลับสำหรับ IP ของคุณหรือไม่
คำตอบ:
(คัดลอกมาจากคำตอบของฉันเกี่ยวกับ SF )
hostname
คำสั่งส่งกลับผลลัพธ์ที่ได้จาก DNS /etc/hosts
และ
hostname
เทียบเท่ากับuname -n
และเป็น "ชื่อโฮสต์" จริงหรือ "ชื่อโหนด" ของกล่อง อาร์กิวเมนต์
อื่นทั้งหมดhostname
ใช้ชื่อโหนดนี้เพื่อค้นหาข้อมูล
ดังนั้นก่อนที่จะไปเพิ่มเติมฉันควรอธิบาย/etc/hosts
รูปแบบไฟล์
ฟิลด์แรกนั้นค่อนข้างชัดเจนคือที่อยู่ IP ของชื่อโฮสต์ทั้งหมดในบรรทัดควรแก้ไข ฟิลด์ที่สองคือชื่อโฮสต์หลักสำหรับ IP นั้น ฟิลด์ที่เหลือเป็นนามแฝง
ดังนั้นหากคุณเรียกใช้hostname -f
มันจะพยายามแก้ไข IP สำหรับชื่อโหนดของคุณก่อน ขึ้นอยู่กับว่าคุณมีhosts:
รายการที่กำหนดค่าใน/etc/nsswitch.conf
วิธีนี้จะแตกต่างกันไป
/etc/resolv.conf
จนกว่าจะได้รับ IP กลับมาจาก DNS /etc/hosts
เพื่อค้นหาบรรทัดที่ชื่อโฮสต์หลักหรือชื่อแทนเป็นชื่อโหนดปัจจุบันของคุณ ( uname -n
) จากนั้นส่งคืนที่อยู่ IP ในบรรทัดนั้น เมื่อมี IP แล้วจะลองค้นหาแบบย้อนกลับบน IP นั้น อีกครั้งก็จะใช้ DNS nsswitch.conf
สำหรับนี้และไฟล์โฮสต์ของคุณขึ้นอยู่กับคุณ ในกรณีที่ใช้ไฟล์โฮสต์ไฟล์นั้นจะส่งคืนรายการหลัก (ซึ่งเป็นฟิลด์แรกหลังจาก IP ในไฟล์)
hostname -a
จะทำงานกับไฟล์โฮสต์ได้เนื่องจากทำการค้นหาแบบย้อนกลับใน DNS ให้ผลลัพธ์ 1 รายการเท่านั้น ด้วยไฟล์ hosts จะส่งคืน alises ในบรรทัดที่ตรงกัน (ซึ่งเป็นทุกอย่างหลังจากรายการแรกคือชื่อโฮสต์หลัก)
ดังนั้นโดยย่อเหตุผลที่เป็นไปได้สำหรับปัญหาของคุณคือคุณไม่มีรายการ/etc/hosts
ที่มีชื่อโฮสต์ของคุณ ( uname -n
)
ตัวอย่าง
ถ้าชื่อโหนดของคุณคือ 'foobar' และคุณมีรายการ/etc/hosts
เช่นนี้:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
จากนั้นคุณจะได้รับผลลัพธ์คำสั่งต่อไปนี้:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost