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
?