การจับคู่ชื่อโฮสต์และที่อยู่ IP ใน / etc / hosts


14

ในเครื่อง linux ของฉันเมื่อฉันรันhostnameมันจะแสดงmongodbแต่เมื่อฉันรันhost mongodbมันจะแสดง:

mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)

/etc/hostsไฟล์ของฉัน:

192.168.10.10   mongodb
192.168.10.10   localhost
127.0.0.1       localhost
#127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
  • คำถามแรกของฉันคือเนื่องจาก/etc/hostsการจับคู่จาก IP กับชื่อโฮสต์ทำไมเครื่องนี้ไม่สามารถแก้ไขชื่อโฮสต์mongodbเป็น IP 192.168.10.10 ได้ เมื่อฉันเรียกใช้host localhostจะสามารถแก้ไขและแสดง:

    localhost has address 127.0.0.1
    
  • คำถามอื่นของฉัน: ตาม/etc/hostsไฟล์ชื่อโฮสต์localhostควรได้รับการแก้ไขเป็น 192.168.10.10 แทนที่อยู่ IP วนลูปแบ็ค 127.0.0.1 ใครสามารถอธิบายสิ่งนี้ให้ฉันได้บ้าง

คำตอบ:


30

host(และnslookup) สาธารณูปโภคอย่างชัดเจน DNS เซิร์ฟเวอร์แบบสอบถามและไม่ปรึกษา/etc/hostsไฟล์ในการกำหนดค่าเริ่มต้นระบบ หากคุณไปยังtracerouteหรือpingที่อยู่นั้นคุณจะเห็นว่าแก้ไขได้อย่างถูกต้อง

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

192.168.10.10   localhost
127.0.0.1       localhost

.. รายการที่สองอาจมีการแทนที่ครั้งแรก


5
/etc/hostsไม่ได้มีการใด ๆ ที่มีผลในการแก้ปัญหา DNS เมื่อสอบถาม DNS เซิร์ฟเวอร์โดยตรงซึ่งเป็นสิ่งที่hostไม่ อย่างไรก็ตามเครื่องมือระบบสาธารณูปโภคจำนวนมากและใช้localhostนิยามคาดหวังว่ามันจะเป็นที่อยู่ย้อนกลับและการแก้ปัญหาชื่อระบบการใช้งาน (ซึ่งมีลักษณะที่/etc/hostsก่อนที่จะสอบถาม DNS) ชื่อแก้ไขมากกว่าอย่างเคร่งครัดจะ DNS ซึ่งอาจไม่เป็นปัจจุบัน
DopeGhoti

1
ฉันยังสามารถแบ่งปันประสบการณ์ที่มีปัญหาในไฟล์เกี่ยวกับ/etc/hosts localhostในอดีตเราได้ใช้ซอฟต์แวร์บางอย่างที่จะแทรก a 127.0.0.2 localhostในไฟล์ hosts และเป็นlocalhostรายการสุดท้ายที่ทำให้มันเป็นหนึ่งในผลทำให้ซอฟต์แวร์และปัญหาใบอนุญาตทุกชนิด ดังนั้นคำแนะนำของฉันคือให้127.0.0.1 localhostเป็นรายการแรกใน/etc/hostsไฟล์ของคุณและตรวจสอบให้แน่ใจว่าไม่มีlocalhostรายการอื่นในไฟล์นั้น และฉันก็จะตรวจสอบสิ่งใด ๆ ของ ipv6 เช่นกัน
รอน

5
เพื่อให้มีความเชื่องช้าทั้งคู่ทำการค้นหา ns ซึ่งอาจเป็นการค้นหา dns หากเป็นวิธีที่คุณกำหนดค่าการค้นหาโฮสต์ใน nsswitch.conf
symcbean

1
@symcbean - สิ่งที่คุณพูดถูกต้อง ฉันจะไม่เรียกว่าอวดความรู้เรื่องนั้น
DarkHeart

2
ข้อยกเว้นที่เห็นได้ชัดเจนที่น่าสังเกตคือถ้าคุณ/etc/resolv.confชี้ไปยังเซิร์ฟเวอร์ DNS ที่ทำงานโดยตรงบนอุปกรณ์ของคุณ (เช่นแคชdnsmasq) และเซิร์ฟเวอร์ดังกล่าวกำลังปรึกษากับเครื่องของคุณ/etc/hostsก่อนทำการสอบถามเซิร์ฟเวอร์ภายนอก จากนั้นทางอ้อมคำสั่งเช่นhostนั้นจะได้รับผลกระทบจากคุณ/etc/hosts- นี่เป็นการตั้งค่าที่ผิดปกติ แต่สิ่งหนึ่งที่ฉันเคยเห็นมาพร้อมกับอุปกรณ์และประสบการณ์ของคนที่ใช้ระบบดังกล่าวอาจขัดแย้งกับคำตอบนี้ถ้ามีคนไม่รู้จัก .
mtraceur

9

นอกจากคำตอบของ DopeGhoti แล้วเพื่อทดสอบการแก้ไขของคุณรวมถึงการ/etc/hostsมีลำดับความสำคัญคุณสามารถใช้getent hosts <some_hostname>คำสั่ง


-3

ฉันมีปัญหาที่คล้ายกันกับ / etc / โฮสต์ที่มีช่องว่างหลายช่องระหว่าง IP และชื่อโฮสต์แทนที่จะใช้ TAB หลังจากเปลี่ยนเป็น TAB ชื่อโฮสต์สามารถแก้ไขได้โดย ping

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

ดูเพิ่มเติมได้ที่/superuser//a/938366/467479


5
เรื่องนี้ทำให้ฉันประหลาดใจ manpage สำหรับhostsพูดว่า: Fields of the entry are separated by any number of blanks and/or tab characters. บางทีในกรณีของคุณมีตัวละครที่ไม่สามารถพิมพ์ได้ระหว่าง IP และชื่อโฮสต์?
dr_

ไม่มีอักขระที่พิมพ์ไม่ได้แน่นอน ฉันตรวจสอบเรื่องนี้ก่อนโพสต์ที่นี่;)
Thomas Lauria

ฉันไม่ได้มีอักขระแท็บผมใช้ SLES 11.x และหลังจากติดตั้งจากดีวีดีของฉัน / etc / ไฟล์โฮสต์มี127.0.0.1ผู้ติดตาม 7 localhostช่องว่างตามมาด้วย ดังนั้นฉันจะลังเลเล็กน้อยที่จะปักหมุดปัญหาโดยเฉพาะกับอักขระช่องว่างหลาย ๆ ตัวและสรุปด้วยการใช้อักขระแท็บเป็นวิธีแก้ปัญหา
รอน

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

โชคไม่ดีที่ฉันจำไม่ได้ว่าเครื่องไหน (และ distro) ฉันพบปัญหา ... - ฉันคิดว่ามันเป็น Ubuntu 15.05 จากvirtualboximages.com/ฉันจะประเมินมัน
โทมั
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.