pingговорить мені, що він не може вирішити якесь ім'я хоста ("ping: невідомий хост domain.company.local") в URL-адресі, але коли я використовую hostабо nslookupна тому ж комп'ютері в командному рядку, роздільна здатність працює добре (тобто це швидко і надійно ).
Що може бути причиною цього?
Більше тестування: Firefox wgetі pingмають ті ж проблеми. Пінгінг IP-адреси працює.
ОС: Linux (Ubuntu 13.04)
РЕДАКТУВАННЯ Мої /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()s, /lib/libnss_mdns4_minimal.so.2що має сенс і.
Але тоді він розмовляє з avahi !?
Що призвело мене до цього форуму: ping не робить запит на dns .
Мій /etc/nsswitch.confтакож містить цей рядок:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Якщо я pingпрацюю адресу, я бачу, що процес також завантажується, /lib/libnss_mdns4_minimal.so.2але тоді він робить запит DNS через порт 53.
Тож зараз я здогадуюсь, що /lib/libnss_mdns4_minimal.so.2якимось чином помічаю, що IP-адреса закінчується на, .localа не на, .comа потім [NOTFOUND=return]спрацьовує.
Як це виправити?
wget.
nslookupабо hostможе дозволити ім'я і все інше в системі не може.
/etc/NetworkManager/NetworkManager.confта прокоментуйте dns=dnsmasqрядок (поставте # перед ним), потім зробіть a sudo restart network-manager. Це вимкне місцевий дозвіл. ( джерело )
/etc/resolv.conf?