मेरे पास एक VM रनिंग डेबियन व्हीज़ी है जिस पर कुछ होस्टनाम लुकअप को पूरा होने में कई सेकंड लगते हैं, भले ही रिज़ॉल्वर तुरंत जवाब दे। अजीब तरह से, लुकअप 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 उत्तर को अनदेखा करने का क्या कारण है?
[१] मैंने अपने साथ कुछ पंक्तियाँ जोड़ी हैं ltrace.confताकि मैं addrinfoसंरचना के अंदर देख सकूँ ।