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
?