ฉันมีปัญหาที่แปลกประหลาดมากดังต่อไปนี้กับการใช้ Avahi บน DreamPlug (ซึ่งเป็นคอมพิวเตอร์ปลั๊กที่ใช้ Ubuntu Jaunty)
หลังจากใช้เวลาหลายวันไปกับสิ่งนี้ฉันคิดว่าฉันพยายาม จำกัด ปัญหาให้แคบลง
DreamPlug ทำหน้าที่เป็นจุดเชื่อมต่อ WiFi และมีชื่อโฮสต์plug
และที่อยู่ IP 192.168.1.1
(ซึ่งตั้งค่าทั้งใน/etc/hosts
และ/etc/hostname
) และเรียกใช้ lighttpd
ตอนนี้ Mac ของฉันทำงานได้ทันทีด้วยการเข้าถึงhttp://plug.local
Chrome แต่ถ้าฉันลองและโหลด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
- ไม่แน่ใจว่าสิ่งนี้ควรจะเกิดขึ้น แต่อาจมีประโยชน์สำหรับทุกคนที่สามารถช่วยได้