เซิร์ฟเวอร์ ubuntu ไม่ได้แก้ไขชื่อโฮสต์ LAN


14

บิตติดอยู่ที่นี่

ฉันมี 2 เครื่องที่ไม่สามารถแก้ไขชื่อโฮสต์ LAN ได้เว้นแต่จะมีรายการเฉพาะใน / etc / hosts

แต่เครื่องอื่น ๆ บน LAN สามารถแก้ไขชื่อโฮสต์ได้

LAN ของฉัน:

  • 1 x เราเตอร์ของซิสโก้ใช้งาน DD-WRT v24-sp2 พร้อมเปิดใช้งาน DNSMasq ฉันกำหนดค่านี้ด้วยชื่อโฮสต์และ IP บน LAN ของฉัน
  • 1 x Kubuntu 12.10 (แก้ไขชื่อโฮสต์ทั้งหมดได้อย่างถูกต้องตราบใดที่พวกเขาป้อนลงใน DNSMasq บนเราเตอร์)
  • 2 x NAS (แก้ไขชื่อทั้งหมดได้อย่างถูกต้อง)

  • 1 x Ubuntu Server 12.04 (ไม่สามารถแก้ไขชื่อโฮสต์ในเครื่องได้เว้นแต่ว่าจะใส่ไว้ใน / etc / hosts)

  • 1 x XBMCLive (ธรรมะ) (เหมือนกัน - ไม่แก้ไขจนกว่าจะมีรายการอยู่ใน / etc / hosts)

ฉันจะรับ 2 รายการสุดท้ายเพื่อใช้รายการ DNSMasq บนเราเตอร์ได้อย่างไร แต่ละเครื่องถูกตั้งค่าให้ใช้เราเตอร์เป็นเซิร์ฟเวอร์ชื่อและทุกหน่วยแก้ไขที่อยู่ภายนอกอย่างถูกต้อง

ขอบคุณ

ข้อมูลเพิ่มเติมบางส่วน:

ขณะที่อยู่บนเซิร์ฟเวอร์ถ้าฉัน ping พีซีเครื่องอื่น (wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

ถ้าฉันผนวก. local

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

และโดยตรง

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       

ฉันไม่รู้คำตอบและฉันไม่รู้ว่ามันจะมีประโยชน์หรือไม่ แต่ในกรณีที่คุณไม่รู้ ... ฉันค้นพบว่าถ้าฉันต่อท้าย ".local" หลังจากชื่อเครื่อง โดยไม่ต้องกำหนดค่าใด ๆ ที่จำเป็น จริงๆแล้วมันช่วยฉันได้เพราะฉันกำลังระบุที่อยู่ แต่ต้องการเปลี่ยนแปลงรายการเมื่อฉันจะเพิ่มหรือลบระบบปฏิบัติการที่ฉันใช้สำหรับการทดสอบ ฯลฯ แต่ด้วยการระบุชื่อเครื่องฉันไม่จำเป็นต้องกังวลอีกต่อไป หากคุณรู้ว่าสิ่งนี้มาจากไหนรู้สึกอิสระที่จะบอกฉัน :)
มาร์ตี้ทอด

1
สวัสดี Marty ขอบคุณสำหรับคำตอบของคุณ ฉันได้เพิ่มข้อมูลเพิ่มเติมลงในปัญหาเพื่อแสดงว่าเกิดอะไรขึ้นกับ. local
teracow

คำตอบ:


15

เกี่ยวกับผลลัพธ์ปัจจุบันของคุณ

ping wstation
PING wstation.local.domain

ระบุอย่างชัดเจนว่าพีซีของคุณต่อท้าย.local.domainแบบสอบถามที่ไม่ใช่ FQDN นี่เป็นสิ่งที่กำหนดค่าไม่ถูกต้องหรืออย่างน้อยก็ผิดในการตั้งค่าของคุณ (เว้นแต่คุณจะใช้.local.domainคำต่อท้ายตามวัตถุประสงค์)

การระบุชื่อและระยะเวลา

สิ่งสำคัญสิ่งหนึ่งที่คนจำนวนมากไม่รู้ก็คือชื่อเต็มควรลงท้ายด้วยจุด ( .) หากคุณไม่ใช้งานเครื่องจะพยายามแก้ไขภายในโดเมนการค้นหาในท้องถิ่น (เช่น mydomain.tld) ดังนั้นในกรณีที่แบบสอบถามสำหรับที่จะกลายเป็นmypc.local mypc.local.mydomain.tldเพื่อป้องกันสิ่งนี้ให้ค้นหาด้วยจุด

การกำหนดค่าของ Resolver

การกำหนดค่าตัวแก้ไขมีความสำคัญอย่างยิ่งที่นี่ ใน Ubuntu (และ Debian) มีการกำหนดค่าในไฟล์/etc/network/interfaces(สมมติว่าคุณไม่ได้ใช้งาน NetworkManager):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

การแก้ไขชื่อใน Linux สามารถทำได้ด้วยวิธีอื่น ไม่ใช่เฉพาะที่เซิร์ฟเวอร์ DNS ในพื้นที่กำลังทำการสอบถามทั้งหมดนี้ ดู/etc/nsswitch.confไฟล์ของคุณเพื่อดูการhostsกำหนดค่าการแก้ไข:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

ซึ่งหมายความว่ามีการลองไฟล์ก่อน (นี่คือ/etc/hostsไฟล์) จากนั้น mDNS และหลังจากนั้นจะสอบถามเซิร์ฟเวอร์ DNS จริง mDNS ถูกใช้งานโดยใช้ Avahi ใน Linux และเรียกว่า Bonjour บนอุปกรณ์ Apple มันใช้.localส่วนต่อท้ายเป็นค่าเริ่มต้นและทำงานผ่านข้อความออกอากาศ ARP ใช้งานได้ดี แต่สำหรับ DNS แล้ว

ระบบทั้งหมดเหล่านี้อาจสร้างความสับสนและมากยิ่งขึ้นเมื่อใช้.localในการตั้งค่า DNS ปกติผสมกับอุปกรณ์ mDNS ฉันเดาว่านี่เป็นสาเหตุที่คุณสับสนในขณะนี้ว่าทำไมอุปกรณ์ตัวหนึ่งถึงใช้งานได้และอุปกรณ์ตัวอื่นไม่ได้: พวกเขาไม่ได้ใช้วิธีการแก้ไขแบบเดียวกันทั้งหมด

เพื่อเรียงลำดับสิ่งต่างๆ

  • หลีกเลี่ยงการใช้ถ้าหาก.localคุณไม่ต้องการพึ่งพา mDNS อย่างสมบูรณ์ จากคำถามของคุณฉันเข้าใจว่าคุณต้องการเก็บสิ่งต่าง ๆ ไว้ในที่ส่วนกลางดังนั้นแนวทางของฉันที่นี่คือหลีกเลี่ยง
  • กำหนดค่าเซิร์ฟเวอร์ DNS ท้องถิ่นของคุณ (อุปกรณ์ DD-WRT ในกรณีของคุณ) my.homeในการใช้ชื่อโดเมนที่พิเศษเช่น สำหรับ dnsmasq นี่เป็นการตั้งค่าเดียว แต่ในการตั้งค่าปกติควรกำหนดค่าไว้ทั้งเซิร์ฟเวอร์ DNS และเซิร์ฟเวอร์ DHCP (ตามที่มีการประกาศผ่าน DHCP)
  • กำหนดค่าพีซีทั้งหมดให้มีชื่อโฮสต์ที่เรียบง่ายและไม่เหมือนใคร พวกเขาใช้สิ่งนี้ในคำขอของพวกเขาสำหรับ DHCP และสิ่งนี้ถูกใช้ใน dnsmasq ที่ทำงานบนเราเตอร์ของคุณเพื่อแก้ไขพวกเขา อีกวิธีหนึ่งคือกำหนดค่าด้วยตนเองเพื่อไม่ต้องพึ่งพา DHCP
  • ลบการกำหนดค่าที่เหลือใด ๆ/etc/resolv.confในกรณีที่คุณเล่นซอกับมันในอดีต
  • กำหนดค่าพีซีในเครือข่ายของคุณเพื่อใช้my.homeเป็นโดเมนการค้นหาในเครื่อง สิ่งนี้สามารถทำได้ผ่าน DHCP โดยอัตโนมัติหรือหากใช้ที่อยู่คงที่ผ่าน/etc/network/interfacesไฟล์หรือใน Network Manager:

    ป้อนคำอธิบายรูปภาพที่นี่

  • ขณะนี้ทั้งการแก้ไขชื่อแบบง่าย ( ping hostname) และชื่อเต็ม ( ping hostname.my.home) ควรใช้งานได้แล้ว

5
ว้าว! คำตอบที่ยอดเยี่ยม gertvdijk! ครอบคลุมมาก มากเสียจนฉันต้องใช้เวลาพอสมควรในการทำความเข้าใจสิ่งที่คุณพูด ฉันสามารถพูดได้ว่าฉันทดสอบ ping ด้วยจุดหลังชื่อโฮสต์และทำงานได้อย่างถูกต้อง ฉันไม่ได้ใช้ DHCP บน LAN นี้สำหรับเครื่องถาวร ฉันไม่เคยกำหนดค่าการตั้งค่าท้องถิ่นในเครื่องใด ๆ เพราะฉันไม่เข้าใจว่ามันเกี่ยวกับอะไร ฉันจะตรวจสอบเรื่องนี้เพิ่มเติมตามคำแนะนำของคุณและกลับไปหาคุณ
teracow

ขอบคุณสำหรับคำตอบที่ครอบคลุมนี้ ผมเปลี่ยน /etc/nsswitch.conf ของฉันเพื่อที่ DNS จะพยายามมาก่อน files mdns4_minimal [NOTFOUND=return] dns mdns4mDNS ตอนนี้ทุกอย่างทำงานเหมือนฉันคาดหวังกับเครื่อง (host.foo.local) ที่ระบุชื่อ host.foo.local ก่อนการเปลี่ยนแปลงนี้ping hostnameจะใช้งานได้ แต่ping hostname.foo.localล้มเหลว ฉันสับสนมากเมื่อdig hostnameล้มเหลว & dig hostname.foo.localกลับผลลัพธ์ตรงข้ามกับที่ฉันคาดไว้ ตอนนี้ฉันสามารถ ping FQDN ได้ตามที่คาดไว้ มีข้อเสียที่จะมีการกำหนดคำสั่งด้วยวิธีนี้หรือไม่?
TafT


0

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

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

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


3
ฉันขอโทษที่ไม่ถูกต้อง ไฟล์โฮสต์จะทำงานกับช่องว่างหรือแท็บ นอกจากนี้ 127.0.0.1 ควรมี localhost ก่อนตามด้วย localhost.localdomain - และชื่อโฮสต์เครื่องของคุณขึ้นอยู่กับการตั้งค่าของคุณ (การตั้งค่าบางอย่าง Ubuntu / Debian ให้คุณใส่ชื่อโฮสต์ของคุณในบรรทัด 127.0.1.1) ฉันไม่แนะนำให้ติดตั้งที่อยู่. local ในไฟล์โฮสต์แม้ว่าจะขัดแย้งกับ mDNS / Avahi
The Dude

1
หากคุณมีเครื่อง Windows ในโดเมนของคุณดูเหมือนว่าจะใช้ unicast DNS ซึ่งไม่สามารถทำงานร่วมกับการใช้ Avahi หรือ Zeroconf mDNS นอกจากนี้ให้ตรวจสอบ /etc/nsswitch.conf ของคุณเพื่อดูว่ามีการประกันตัวหลังจาก mdns4_minimal [NOTFOUND = return] หรือทำการค้นหา mdns4 แบบเต็ม (เลื่อนกลับมา) นอกจากนี้อย่ากำหนดค่าเซิร์ฟเวอร์ DNS ใด ๆ เพื่อใช้โดเมน. local เนื่องจากตัวแก้ไข mDNS / sd-DNS จะปิดบังการค้นหาโดเมนนั้น สำหรับ DNS TLD ภายในของคุณให้ใช้ .lan, .work, .home ฯลฯ (แต่ไม่ใช่ TLD ใหม่ตัวใดตัวหนึ่งเช่น. biz, .xyz, .web และอื่น ๆ ) ขอให้โชคดีและยินดีต้อนรับสู่โลกแห่งความสนุกสนานของการแก้ไข DNS
เพื่อน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.