ฉันมีปัญหาที่แปลกประหลาดมากดังต่อไปนี้กับการใช้ Avahi บน DreamPlug (ซึ่งเป็นคอมพิวเตอร์ปลั๊กที่ใช้ Ubuntu Jaunty)
หลังจากใช้เวลาหลายวันไปกับสิ่งนี้ฉันคิดว่าฉันพยายาม จำกัด ปัญหาให้แคบลง
DreamPlug ทำหน้าที่เป็นจุดเชื่อมต่อ WiFi และมีชื่อโฮสต์plugและที่อยู่ IP 192.168.1.1(ซึ่งตั้งค่าทั้งใน/etc/hostsและ/etc/hostname) และเรียกใช้ lighttpd
ตอนนี้ Mac ของฉันทำงานได้ทันทีด้วยการเข้าถึงhttp://plug.localChrome แต่ถ้าฉันลองและโหลดhttp://plug.localบน iPad มันจะไม่ทำงาน นั่นคือมันไม่ทำงานจนกว่าฉันจะโหลดเพจบนเดสก์ท็อป
ด้วยเหตุผลบางอย่าง iPads จะไม่สามารถแก้ไขชื่อโฮสต์จนกว่าชื่อโฮสต์จะได้รับการแก้ไขครั้งแรกใน Mac ... ซึ่งแปลกเพราะไม่มีการเชื่อมต่อระหว่าง iPads และ Mac อื่น ๆ นอกเหนือจากความจริงที่ว่าพวกเขาเชื่อมต่อกับ จุดเชื่อมต่อเดียวกัน (DreamPlug)
ดังนั้นเพื่อชี้แจงอีกครั้ง: Safari บน iPad จะหยุด (จนกว่าจะรายงานว่าการเรียกดูล้มเหลว) เมื่อเข้าถึงhttp://plug.localเว้นแต่ว่าฉันเข้าถึงhttp://plug.localบน Mac, ทำงานping plug.local, ทำssh root@plug.localหรือโดยทั่วไปทำสิ่งอื่นใดที่ช่วยแก้ชื่อโฮสต์ให้ตรงจุดที่ iPad แก้ไขทันที ชื่อโฮสต์และเริ่มทำงานอย่างถูกต้อง
ถ้าความเข้าใจของฉันถูกต้องเมื่อ iPads plug.localเชื่อมต่อพวกเขาออกอากาศการร้องขอความละเอียด ไม่ว่าจะด้วยเหตุผลใดก็ตามคำขอนี้จะถูกเพิกเฉยจาก DreamPlug (หรือไม่เคยได้รับ) อย่างไรก็ตาม Mac จะจัดการออกอากาศตามคำขอ มันเป็นกระบอกเสียงที่ร้องขอความละเอียดและ brodcasts DreamPlug กลับผล->plug.local 192.168.1.1จากนั้น iPads จะได้รับผลนี้ (ซึ่งถูกกำหนดไว้สำหรับ Mac จริงๆ) และสามารถแก้ไขได้สำเร็จ
ฉันยินดีที่จะจัดหาavahi-daemon.confไฟล์การกำหนดค่าของฉันหรืออื่น ๆ ตามที่ร้องขอ
อัปเดต:ตอนนี้ฉันสามารถใช้ Wireshark ได้แล้วและพบว่า iPads ถ่ายทอดการร้องขอไปยังเครือข่ายอย่างแน่นอน
ฉันจับทั้งแพ็คเก็ตที่ DID ส่งผลให้เกิดการตอบสนองจาก Avahi รวมถึงที่ไม่ได้ทำ
ความแตกต่างเพียงอย่างเดียวคือความล้มเหลวที่ระบุประเภท RR เพิ่มเติมOPT... ฉันไม่รู้เลยว่าOPTบันทึกคืออะไร เป็นไปได้ไหมว่า Avahi ไม่ชอบการสืบค้น DNS ที่OPTแนบ RR ด้วยเหตุผลบางอย่าง?
นี่คือภาพหน้าจอสองภาพที่นำมาจาก Wireshark อันแรกแสดงคำขอ mDNS "ดี" ซึ่งส่งมาจากคอมพิวเตอร์เดสก์ท็อป (ในกรณีนี้คืออุปกรณ์ที่เรียกว่าrunway.local) แบบสอบถามนี้ใช้งานได้ดีและเซิร์ฟเวอร์ (ที่192.168.1.1) ตอบกลับได้ทันที:

นี่คือตัวอย่างของการตอบสนองที่ส่งคืนจากrunway.local:

ในขณะเดียวกันที่นี่เป็นแบบสอบถาม DNS ที่สองที่ได้จัดส่งจาก iPad runway.localสำหรับชื่อโฮสต์เดียวกัน ในกรณีนี้ดูเหมือนว่าคำขอจะถูกเพิกเฉย (ในกรณีใด ๆ จะไม่ได้รับการตอบสนองใด ๆ จากการสืบค้น DNS นี้):

พยายามติดตามสิ่งที่อยู่ในคำขอ iPad ที่ทำให้เกิดปัญหาปรากฏว่าแพ็กเก็ตสองชุดนั้นเกือบจะเหมือนกันความแตกต่างเพียงอย่างเดียวระหว่างการค้นหา mDNS ที่ส่งจากเดสก์ท็อป (ใช้ OS X) และ iPad คือการผนวก iPad OPTระเบียนทรัพยากรไปด้านล่างของคำขอของ DNS
คำถามคืออะไรความสำคัญของการบันทึกทรัพยากร - และมันคืออะไร - หรือเป็นอย่างอื่น - ที่รับผิดชอบสำหรับการร้องขอ DNS นี้จะถูกละเว้นโดย Avahi
การปรับปรุงนี่อาจเป็นความก้าวหน้าที่ฉันกำลังมองหา:
ฉันใช้ avahi-daemon พร้อมกับ --debug flag และฉันสังเกตเห็นว่ามีจำนวนมาก ข้อความ สิ่งนี้นำฉันมาที่หน้านี้: http://avahi.org/ticket/284ซึ่งดูเหมือนว่านี่เป็นปัญหาที่ทราบแล้ว (แม้ว่าเป็นปัญหาที่ควรแก้ไข)
โดยเฉพาะ:
tcpdump ทำให้ฉันเชื่อว่านี่เป็นเพราะ Mac OS 10.6 ที่ใช้ RFC2671 เพื่อเพิ่มข้อมูลในส่วนข้อมูลเพิ่มเติมของการสืบค้น DNS โดยเฉพาะมันคือการจัดหา 'ขนาดบรรจุ UDP' (ในกรณีของฉัน, 1440) เป็นคำแนะนำสำหรับขนาดแพ็คเก็ตตอบสนองสูงสุด [... ] Avahi พิจารณาแบบสอบถามที่มีส่วนข้อมูลเพิ่มเติมที่ไม่ว่างเปล่าซึ่งจะตรวจสอบว่า AVAHI_DNS_FIELD_ARCOUNT! = 0 ก่อนที่จะสร้างข้อความแพ็คเก็ตแบบสอบถามไม่ถูกต้อง
plugบน SSH และดำเนินการคำสั่งping 224.0.0.251ซึ่งเป็นที่อยู่มัลติคาสต์ mDNS ฉันได้รับผลconnect: Network is unreachable- ไม่แน่ใจว่าสิ่งนี้ควรจะเกิดขึ้น แต่อาจมีประโยชน์สำหรับทุกคนที่สามารถช่วยได้