pingमुझे बताता है कि यह URL में कुछ होस्टनाम ("पिंग: अज्ञात होस्ट domain.company.local") को हल नहीं कर सकता है, लेकिन जब मैं कमांड लाइन पर एक ही कंप्यूटर का उपयोग करता हूं hostया nslookupकरता हूं , तो संकल्प ठीक काम करता है (यानी यह तेज और विश्वसनीय है) )।
ऐसा किसके कारण हो सकता है?
अधिक परीक्षण: फ़ायरफ़ॉक्स, wgetऔर pingएक ही समस्या है। IP पते को पिंग करना काम करता है।
OS: लिनक्स (Ubuntu 13.04)
EDIT माई /etc/resolv.confरीड्स:
nameserver 127.0.1.1
search domain.company.local
netstat रिपोर्ट:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
इसलिए इस पोर्ट पर कुछ चल रहा है ( nslookupयह भी रिपोर्ट करता है 127.0.1.1कि इसे DNS सर्वर के रूप में उपयोग किया जाता है)।
कोई नहीं है /etc/*inetd.conf, इसलिए मुझे यकीन नहीं है कि कौन सा एप्लिकेशन इस पोर्ट की सेवा करता है।
ऐसा लगता है कि dnsmasqइसका उपयोग किया जाता है:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces
--pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1
--conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec
--enable-dbus=org.freedesktop.NetworkManager.dnsmasq
--conf-dir=/etc/NetworkManager/dnsmasq.d
सभी कॉन्फिग फाइल और फोल्डर खाली हैं। चूंकि nslookupयह कहता है कि यह 127.0.1.1#53मेरे अनुमान का उपयोग करता है, इसलिए यह dnsmasqबिना विन्यास के भी काम करता है। लेकिन यह कैसे पता है कि किस मूल DNS को क्वेरी करना है?
EDIT2,dnsmasq जैसा कि harrymc द्वारा सुझाया गया है, अक्षम करने से मदद नहीं मिली। तो मैं भाग गया strace pingजिसने मुझे यह अजीब आउटपुट दिया (सिर्फ दिलचस्प हिस्से):
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
read(4, "127.0.0.1\tlocalhost\n#127.0.1.1\ta"..., 4096) = 613
...
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\f\0\0\0\0\0\0"..., 832) = 832
...
mmap(NULL, 2105560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f7829b00000
...
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f782a4f8000
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "RESOLVE-HOSTNAME-IPV4 domain.com"..., 44) = 44
read(4, "-15 Timeout reached\n", 4096) = 20
तो pingऐसा लग रहा है /etc/hostsजिसमें समझ में आता है। फिर यह लोड करता है और mmap()एस /lib/libnss_mdns4_minimal.so.2जो समझ में आता है।
लेकिन फिर यह अवही से बात करता है !?
जो मुझे इस मंच पोस्ट की ओर ले गया: पिंग एक डीएनएस अनुरोध नहीं करता है ।
मेरी /etc/nsswitch.confभी यह पंक्ति है:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
यदि मैं pingएक कामकाजी पता है, तो मैं देखता हूं कि प्रक्रिया भी लोड होती है, /lib/libnss_mdns4_minimal.so.2लेकिन फिर, यह पोर्ट 53 के माध्यम से एक DNS क्वेरी करता है।
इसलिए मेरा अनुमान अब यह /lib/libnss_mdns4_minimal.so.2है कि किसी भी तरह से यह सूचित किया जाता है कि आईपी पता के साथ समाप्त होता है .localऔर नहीं .comऔर फिर [NOTFOUND=return]ट्रिगर होता है।
मैं यह कैसे तय करुं?
wget।
nslookupया hostनहीं।
/etc/NetworkManager/NetworkManager.confऔर टिप्पणी करें dns=dnsmasq(इसके सामने एक # डालें) फिर a sudo restart network-manager। यह स्थानीय रिज़ॉल्वर को बंद कर देगा। ( स्रोत )
/etc/resolv.conf?