รวมชื่อโดเมนหรือไม่อยู่ใน / etc / hosts?


15

ฉันกำลังตั้งค่าคลัสเตอร์ VMWare ของโหนด CentOS เป็นวิธีที่ดีที่สุดในการรวมชื่อโดเมนหลังจากเครื่องหรือไม่ ปัญหาที่อาจเกิดขึ้นจากการปล่อยให้มันคืออะไร? โดเมนมีการกำหนดค่าที่ซับซ้อนหรือทำให้มันง่ายขึ้นหรือไม่

ตัวอย่างเช่นถ้าโหนดของฉันเป็น192.168.1.93ฉันควรเปลี่ยน/etc/hostsจาก

127.0.0.1 localhost.localdomain localhost

ถึง

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

หรือ

127.0.0.1 localhost
192.168.1.93 computenode1

หรือ

#127.0.0.1 localhost
192.168.1.93 computenode1

หรือ

192.168.1.93 localhost
192.168.1.93 computenode1

คำตอบ:


24

การใส่ชื่อโดเมน/etc/hostsนั้นเป็นทางเลือกและคุณสามารถเรียกใช้ระบบโดยไม่มีผลกระทบใด ๆ เลย

ข้อเสียเพียงอย่างเดียวของการปล่อยให้มันอยู่คือชื่อโฮสต์ที่ผ่านการรับรองของระบบจะไม่แสดงขึ้นอย่างถูกต้อง ตัวอย่างเช่นhostname -f.

วิธีการตรวจสอบชื่อโฮสต์แบบเต็ม:

  1. ก่อนได้รับชื่อโฮสต์หรือ 'ชื่อย่อ' นี่คือการส่งออกของหรือuname -nhostname
  2. จากนั้นจะได้รับที่อยู่ IP สำหรับชื่อโฮสต์นั้นโดยให้คำปรึกษา/etc/hosts(หรือสิ่งที่คุณมีอยู่/etc/resolv.confและกลับไปยังแหล่งข้อมูลหลังหากไม่พบ/etc/hosts)
  3. /etc/hostsเมื่อมันมีไอพีมันก็ไม่ได้ค้นหาแบบย้อนกลับโดยการให้คำปรึกษาอีกครั้ง
  4. เมื่อมีการบันทึก/etc/hostsรายการแรกจะถูกใช้เป็นชื่อโฮสต์ที่ผ่านการรับรองโดยสมบูรณ์

โดยสรุปหากคุณต้องการให้ชื่อโฮสต์ที่ผ่านการรับรองคุณสามารถทำงานได้:

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

หรือ

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname

1
ฉันไม่ได้พิจารณาประเด็นนั้น การมีชื่อโฮสต์ที่ผ่านการรับรองนั้นไม่มีประโยชน์สำหรับพีซีแบบตั้งโต๊ะและอาจเป็นปัญหาสำหรับแล็ปท็อป ยกตัวอย่างเช่น Apache2 บ่นเมื่อไม่สามารถระบุ FQDN ได้
lgeorget

@lgeorget นอกจากนี้คุณยังสามารถใช้libnss-myhostnameซึ่งดูแลการแก้ไข FQDN ของคุณ แต่ไม่จำเป็นต้องมีรายการใน/etc/hsots
Ulrich Dangel

การกำหนดค่าดังกล่าวข้างต้นทำให้เกิดปัญหาอาจดูนี้การอภิปรายเกี่ยวกับการปฏิบัติในปัจจุบัน Debian ของการตั้งค่าhostsไฟล์และนี้อย่างใดอย่างหนึ่งกับการใช้งาน (หรือขาดมัน) ของlocalhost.localdomainรายการ
JoóÁdám

1
sudoยังบ่นถ้าชื่อโฮสต์ไม่ได้อยู่ใน/etc/hosts:sudo: unable to resolve host <hostname>
x-yuri

3

ตราบใดที่โฮสต์ของคุณเห็นด้วยกับชื่อโดเมนของคุณการระบุหรือไม่ระบุ/etc/hostsจะไม่เปลี่ยนแปลงอะไรเลย การปฏิบัติอื่นคือการให้มันระบุเป็นdomainพารามิเตอร์/etc/resolv.confมา การไม่ระบุว่าสามารถทำให้ชีวิตของคุณง่ายขึ้นหากหนึ่งวันผู้ดูแลระบบเครือข่ายของคุณเปลี่ยนแปลง การระบุว่าจะไม่เปลี่ยนแปลงอะไรเลยเท่าที่ฉันรู้

แน่นอนคุณควรปล่อย127.0.0.1 localhostหรือใน127.0.0.1 localhost localhost.localdomain /etc/hostsแอปพลิเคชั่นบางอย่างอาจเริ่มมีพฤติกรรมที่แปลกประหลาดจริงๆคือlocalhostผูกสิ่งอื่นนอกเหนือจากที่อยู่ลูปแบ็คของคุณเพราะนี่เป็นการตั้งค่าที่ไม่คาดคิดจริงๆ


2

คุณต้องระบุชื่อโดเมนแบบเต็มในตำแหน่งแรกหลังจากที่อยู่ IP

ตามที่เราอ่านในman 5 hosts:

สำหรับแต่ละโฮสต์ควรมีบรรทัดเดียวพร้อมข้อมูลต่อไปนี้:

IP_address canonical_hostname [นามแฝง ... ]

หากไม่ปฏิบัติตามกฎซอฟต์แวร์บางตัวอาจผิดพลาด ตัวอย่างเช่นระบบการจัดการการกำหนดค่าหุ่นกระบอกอาจเริ่มเปลี่ยนชื่อโฮสต์ของคุณไปมาในแต่ละครั้งเพียงเพราะคุณไม่ได้ระบุส่วนของโดเมนหรือเพราะคุณใส่ชื่อแทนโดยไม่มีโดเมนในบรรทัดก่อน FQDN


0

ฉันไม่แน่ใจว่านี่เป็น "ตัวเลือก" จริงๆ (ตามที่ Patrick ระบุไว้ด้านบน) ในที่สุดฉันก็แค่ติดตามปัญหาที่เกิดขึ้นกับสิทธิ์ของ nfs ที่เปลี่ยนเป็นไม่มีใคร: ไม่มีใคร ดูเหมือนว่าสิทธิ์ในการทำงานกับ nfs mounts (ใช้ idmapd) อย่างถูกต้องชื่อโดเมนของเซิร์ฟเวอร์จะต้องตรงกับชื่อโดเมนของลูกค้า จากเอกสารบางอย่างที่ฉันพบ - hostname -fลบชื่อโฮสต์จริงจะต้องเหมือนกันระหว่างไคลเอนต์และเซิร์ฟเวอร์หรือคุณต้องระบุชื่อโดเมนสำหรับลูกค้าใน/etc/idmapd.confซึ่งหมายถึงลูกค้าแต่ละราย

มีกฎอย่างเป็นทางการเกี่ยวกับการระบุชื่อโดเมนหรือไม่ domainnameคำสั่งไม่ได้ดูเหมือนจะหยิบมันขึ้นมาจาก / etc / hosts .. เพื่อวางใน / etc / hosts รบกวนจิตใจผมเพราะมันหมายความว่ามันเก็บไว้ในสถานที่หลายแห่งในระบบแฟ้ม ..

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.