ทำไมพวกเขาถึงเปลี่ยนแปลงสิ่งนี้ฉันไม่รู้ แต่มันทำให้ฉันคลั่งไปพักหนึ่ง
ฉันไม่รู้ว่าทำไมสิ่งต่าง ๆ ถึงทำงานกับโฮสต์ได้ แต่ไม่ใช่ ping แต่ฉันคิดว่ามันเกี่ยวข้องกับธรรมชาติของอรรถประโยชน์ทั้งสองนี้ Ping เป็นยูทิลิตี้การวินิจฉัยที่ใช้งานง่าย (แม้ว่าจะมีประโยชน์มาก) สำหรับการทิ้งแพ็กเก็ตบนสายที่ควรจะสะท้อนกลับมาหาคุณ ฟังก์ชันการค้นหาชื่อโฮสต์เป็นเพียงผลข้างเคียงของงานและส่งมอบให้กับตัวแก้ไขแบบเรียกซ้ำของระบบ (ฉันเชื่อว่า - ฉันยังไม่ได้ตรวจสอบโดยการตรวจสอบไลบรารีที่เชื่อมโยงหรือสิ่งอื่นใด) งานหลักของโฮสต์คือการแก้ปัญหาชื่อ DNS ดังนั้นจึงใช้ตัวแก้ไขแบบเรียกซ้ำ
ตัวแก้ปัญหาแบบเรียกซ้ำของ Apple คือ mDNSResponder ด้วยเหตุผลบางอย่างรุ่นของ mDNSR การตอบกลับใน Lion ต้องใช้ตัวเลือกบรรทัดคำสั่ง "-AlwaysAppendSearchDomains" เพื่อให้ทำงานเหมือนใน Snow Leopard (อย่างน้อย)
นี่เป็นวิธีที่รวดเร็วในการแก้ไข:
sudo sed -i .orig '/ProgramArguments/,/<\/array>/ {
s/\(<string>-launchd<\/string>\)/\1\
<string>-AlwaysAppendSearchDomains<\/string>/
}' /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
(ควรมีอักขระแท็บสองตัวที่จุดเริ่มต้นของบรรทัดที่สองถึงครั้งสุดท้ายด้านบน แต่ฉันไม่สามารถหาวิธีที่จะให้ตัวแก้ไขเล็ก ๆ นี้แทรกแท็บได้ดังนั้นฉันจึงเพิ่มช่องว่าง 16 ช่องทั้งสองควรทำงาน แต่แท็บ พอดีกับระยะห่างของไฟล์ต้นฉบับดีกว่า)
สิ่งนี้จะเพิ่มอาร์กิวเมนต์ "-AlwaysAppendSearchDomains" ลงในไฟล์ plist เริ่มต้น mDNSResponder (และบันทึกสำเนาสำรอง) แต่เนื่องจากถูกควบคุมโดย launchd ระบบจะต้องบอกให้รีสตาร์ท mDNSResponder
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
ตอนนี้ถ้าคุณตรวจสอบกระบวนการ mDNSR ที่กำลังรันอยู่คุณควรเห็นว่ามันกำลังทำงานอยู่พร้อมกับอาร์กิวเมนต์ใหม่ของคุณ:
ps auxww | grep mDNSResponder
(Props ถึงhttp://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.htmlและhttp://kavassalis.com/2011/07/wtf-bug -in-os-x-10-7 /ที่ฉันพบคำตอบสำหรับปัญหานี้)