ฉันพบข้อผิดพลาด“ ชื่อโฮสต์: ชื่อหรือบริการที่ไม่รู้จัก” เมื่อตรวจสอบ IP ของชื่อโฮสต์


13

ฉันใช้ Ubuntu 14.04 ในบริการคลาวด์ของ บริษัท ของฉัน (อินสแตนซ์ของฉันมี IP ที่ยืดหยุ่น) ฉันต้องการตรวจสอบที่อยู่ IP ของอินสแตนซ์ที่ฉันใช้งานโดยบรรทัดคำสั่ง แต่มันไม่ทำงาน

root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known

ฉันไม่เข้าใจเหตุผลว่าทำไม 

ฉันพยายาม ping ไปที่ ubuntu14-graphite แต่มันบอกว่า:

unknown host ubuntu14-graphite.

นั่นหมายความว่าโฮสต์ของฉันไม่มีอยู่จริงเหรอ?

ฉันมีเซิร์ฟเวอร์อื่น (ไม่ใช่อินสแตนซ์ระบบคลาวด์ แต่เป็นเซิร์ฟเวอร์จริง) ในเซิร์ฟเวอร์นี้ฉันติดตั้ง CentOS 6.7 ฉันจะตรวจสอบ IP /etc/hostsชื่อโฮสต์และมันทำงานแม้ว่าจะมีอะไรพิเศษใน

นี่คือผลลัพธ์ของcat /etc/hosts:

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
ff02::3     ip6-allhosts

คำตอบ:


15

หมายความว่า "ระบบ" (ฉันใช้คำนั้นในความหมายทั่วไปที่คลุมเครือ) ไม่ทราบว่าชื่อนั้นubuntu14-graphite ตรงกับโฮสต์และที่อยู่ IP ของคุณ (ความจริงที่ว่าเป็นเป็นโฮสต์ของคุณชื่อไม่เพียงพอที่จะทำให้เกิดขึ้น.) นี้เกือบแน่นอนหมายความว่าคุณไม่ได้มีเส้นสำหรับubuntu14-graphite คุณใน/etc/hostsไฟล์และมันไม่ได้อยู่ในบริการการตั้งชื่อของคุณ (เช่น DNS หรือ NIS) ดังนั้นวิธีที่จะแก้ไขได้คือการเพิ่มubuntu14-graphite(และอยู่ IP) /etc/hostsเพื่อคุณ หากคุณกำลังใช้ระบบการตั้งชื่อที่ซับซ้อน (กระจาย) เช่น DNS หรือ NIS (หรืออาจเป็น ActiveDirectory?) ทางออกสุดท้ายคือการเพิ่มโฮสต์ของคุณลงในบริการนั้น
_____________
† ...

มีการถกเถียงกันว่าคำถามใดเกี่ยวกับที่อยู่ IP ที่คุณควรเชื่อมโยงกับชื่อโฮสต์ของคุณ ทุกคนตกลงว่าควรเป็นที่อยู่ที่ "ทำงาน" สำหรับโฮสต์ของคุณ เช่นคำสั่งเช่นควรจะประสบความสำเร็จ บางคนแนะนำให้ใช้ที่อยู่ลูปแบ็ค ที่อยู่ Loopback มักจะอยู่ในรูปแบบ 127 .BCD ; ค่าทั่วไปคือ 127.0.0.1 และ 127.0.1.1 คนอื่น ๆ แนะนำให้ใช้ที่อยู่ LAN ซึ่งอาจดูเหมือน 192.168 .CD (แต่อาจเป็นเกือบทุกอย่าง) - แต่คุณไม่ควรใส่ที่อยู่ที่กำหนดแบบไดนามิกในไฟล์โฮสต์ของคุณ (และหากคุณใช้ DHCP กับ DNS ดังนั้น ควรป้อนที่อยู่ที่กำหนดแบบไดนามิกลงในระเบียน DNS ของคุณโดยอัตโนมัติ ใช้คำสั่งเช่นและ เพื่อดูว่ามีการใช้ที่อยู่ใดping A.B.C.Difconfighostname -I


ขอบคุณคำตอบของคุณ ฉันแก้ไขคำถามของฉันเพราะฉันสังเกตเห็นอีกกรณีหนึ่งที่เกี่ยวข้องกับเซิร์ฟเวอร์ CentOS ของฉันซึ่งไม่มีอะไรนอกจาก 127.0.0.1 localhost แต่ฉันยังสามารถตรวจสอบ IP ของโฮสต์ได้
The One

บางทีชื่อและที่อยู่ของเซิร์ฟเวอร์ CentOS อาจถูกป้อนเข้าสู่ระบบ DNS (หรือใช้บริการชื่ออะไรก็ได้)
G-Man กล่าวว่า 'Reinstate Monica'

ในระบบ CentOS จะไม่มีการติดตั้ง bind และ bind-utils ดังนั้นฉันสับสนจริงๆ
The One

@TheOne Ubuntu ปฏิบัติhostnameแตกต่างกันไปตามระบบ RH .. ใส่ลง127.0.1.1 ubuntu14-graphiteใน/etc/hostsไฟล์และตรวจสอบ .. หมายเหตุ127.0.1.1ไม่ใช่127.0.0.1(ซึ่งคุณสามารถเก็บไว้สำหรับ localhost ได้เช่นเดียวกับ localhost เนื่องจาก127.0.0.0/8เป็น loopback block คุณสามารถใช้ที่อยู่ใดก็ได้แม้ว่าบางระบบจะมีที่อยู่ที่ จำกัด ไว้ล่วงหน้า )
heemayl

@ heemayl ดังนั้นโดยใส่ 127.0.1.1 ubuntu14-graphite บน / etc / hosts จากนั้นตรวจสอบ IP ว่าฉันไม่ได้รับ IP ที่ถูกต้อง มันไม่สมเหตุสมผลใช่ไหม
The One

1

วิธีที่แท้จริงในการตรวจสอบที่อยู่ IP ของเครื่องคือการใช้ifconfigคำสั่ง

โปรดทราบว่าขึ้นอยู่กับการตั้งค่าระบบคลาวด์จริงอินสแตนซ์เซิร์ฟเวอร์อาจไม่ทราบถึง IP สาธารณะและรู้จัก VLAN IP เท่านั้น สำหรับรายละเอียดเกี่ยวกับเรื่องนี้คุณต้องดูเอกสารประกอบการของผู้ให้บริการของคุณ


Nope; ip a s. ดูserverfault.com/q/458628/89813 - ifconfig เลิกใช้แล้วบน Linux
Reinstate Monica - M. Schröder

0

เพิ่มmyhostnameเข้าสู่การให้บริการในhosts/etc/nsswitch.conf

กล่าวอีกนัยหนึ่งเปลี่ยนบรรทัดนี้ใน/etc/nsswitch.conf:

hosts:      files dns

สำหรับสิ่งนี้:

hosts:      files dns myhostname

โดยปกติชื่อโฮสต์จะได้รับการแก้ไขโดยใช้/etc/hostsไฟล์และ dns ชื่อโฮสต์ของระบบสามารถแก้ไขได้ด้วยการแจ้งให้ Name Service Switch ทำเช่นนั้น (เนื่องจากการเปลี่ยนแปลงการกำหนดค่านี้จะทำ)

สิ่งนี้จะอธิบายว่าทำไมคุณไม่เห็นอะไรเป็นพิเศษเกี่ยวกับ/etc/hostsไฟล์ในระบบที่คุณสามารถแก้ไขชื่อโฮสต์ได้

ข้อมูลเพิ่มเติมเกี่ยวกับmyhostnameธงที่นี่


0

ในความคิดของฉันมันขึ้นอยู่กับรุ่นของคำสั่งชื่อโฮสต์ (แพ็คเกจเครื่องมือสุทธิ)

ดู: https://bugzilla.redhat.com/show_bug.cgi?id=319981

  • ตัวอย่างใน "openSuse Leap 42.3":
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

    # hostname -i
    hostname: Name or service not known
  • บน Lubuntu 17.10
  $ hostname -V
  hostname 3.18

hostname -i - ให้ข้อมูลฉันเกี่ยวกับ IPv6 และ IPv4


รายงานข้อผิดพลาดที่เกี่ยวกับไม่hostname -s hostname -iสิ่งนี้ไม่เกี่ยวข้องกับเวอร์ชันของhostnameแต่เกี่ยวข้องกับว่าชื่อโฮสต์ที่ระบุโดยhostnameแก้ไขได้หรือไม่
Stephen Kitt

-2

ไปที่ etc / hosts.save ตรวจสอบชื่อโฮสต์ของคุณที่นั่น แล้วแก้ไขในการเขียนมีชื่อโฮสต์และชื่อโฮสต์ในของคุณ/etc/hosts hosts.saveตรวจสอบที่อยู่ IP ด้วย ตัวอย่าง:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
การตั้งค่า localhost IP ใน/etc/hostsจะไม่ให้ที่อยู่ IP จริงแก่พวกเขา ฉันก็ล้มเหลวที่จะดูว่าทำไมคุณถึงกำลังมองหาที่/etc/hosts.saveซึ่งเป็นวิชาเทคนิคและไม่เกี่ยวข้องมาก
Julie Pelletier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.