ฉันมี VM ที่ใช้ Debian Wheezy ซึ่งการค้นหาชื่อโฮสต์บางรายการใช้เวลาหลายวินาทีจึงจะเสร็จสมบูรณ์แม้ว่าตัวแก้ไขจะตอบกลับทันที การค้นหาด้วยอย่างแปลกประหลาดgetaddrinfo()
นั้นได้รับผลกระทบ แต่gethostbyname()
ไม่ใช่
ฉันได้เปลี่ยนไปใช้เครื่องมือแก้ปัญหาของ Google เพื่อไม่รวมความเป็นไปได้ที่คนในท้องถิ่นจะเสียดังนั้น/etc/resolv.conf
ลักษณะของฉัน:
search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
ฉันnsswitch.conf
มีสาย:
hosts: files dns
และฉัน/etc/hosts
ไม่มีสิ่งผิดปกติ
ถ้าฉันลองtelnet webserver 80
มันแฮงค์หลายวินาทีก่อนที่จะได้รับการแก้ไขชื่อ ltrace
ส่งออก [1] แสดงให้เห็นว่าการแขวนอยู่ในgetaddrinfo()
โทร:
getaddrinfo("ifconfig.me", "telnet", { AI_CANONNAME, 0, SOCK_STREAM, 0, 0, NULL, '\000', NULL }, 0x7fffb4ffc160) = 0 <5.020621>
อย่างไรก็ตามtcpdump
พบว่าเนมเซิร์ฟเวอร์ตอบกลับทันทีและเป็นเพียงการตอบกลับครั้งที่สองที่ไม่ถูกtelnet
บล็อก คำตอบมีลักษณะเหมือนกัน:
05:52:58.609731 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:52:58.609786 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:52:58.612188 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)
[...five second pause...]
05:53:03.613811 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:53:03.616424 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)
05:53:03.616547 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:53:03.618907 IP 8.8.4.4.53 > 192.168.1.75.43017: 26090 0/1/0 (76)
ฉันได้ตรวจสอบบันทึกไฟร์วอลล์ของโฮสต์และไม่มีการปิดกั้นพอร์ต 53
สาเหตุใดที่การเพิกเฉยการตอบ DNS ครั้งแรก
[1] ฉันได้เพิ่มคู่สายให้ฉันltrace.conf
เพื่อให้ฉันสามารถมองเห็นภายในaddrinfo
struct