nslookup, dig, firefox ігнорування / etc / hosts файлів


10

У моїй поточній установці Debian є щось жахливо. Більшість програм, таких як firefox, nslookup, dig тощо, ігнорують записи у /etc/hostsфайлі, я фактично використовую цей файл для блокування реклами.

приклад

рядок у /etc/hostsфайлі

127.0.0.1 www.winaproduct.com

коли я dig +short www.winaproduct.comце роблю, він повертає відповідну IP-адресу сервера, а не 127.0.0.1.

Відкрито www.winaproduct.comна Firefox, він показує відповідний веб-сайт, але цього не передбачається.

Але немає ніяких проблем з ping, busybox nslookup, busybox ping, і resolveipт.д.

Отже, в чому проблема? І як це виправити? Я думаю, що проблема полягає у вирішенні бібліотеки DNS.

Тимчасове виправлення вгору, настройка dnsmasqі зміна nameserverдо 127.0.0.1в /etc/resolv.conf.

оновлення

Проблема магічно вирішується після встановлення libnss3, як залежність відgoogle-chrome

default /etc/nsswitch.conf виглядає так hosts: files dns

як сказати nslookupі digт. д. запитувати / etc / hosts файл спочатку замість того, щоб запитувати безпосередньо в DNS?

але чому busybox nslookup, wget, і resolveipт.д. працюють інакше , ніж nslookup, і digт.д.?


як виглядає hosts:запис на екрані /etc/nsswitch.conf?
Кейсі

@ casey, /etc/nsswitch.conf виглядає такhosts: files dns
Арнаб

Будь ласка, додайте цю ключову інформацію до свого ОК.
дан

Очевидно, це не проблема DNS. Погляньте на це дуже схоже запитання: unix.stackexchange.com/q/158419/31707 .
дан

Відповіді:


16

nslookup, digта hostє інструментами для запитів серверів імен DNS.

Якщо ваша конфігурація не надана сервером імен (як-от інформація, наведена в /etc/hosts), ці інструменти не показуватимуть їх, оскільки вони безпосередньо запитують сервер імен.

Якщо ви хочете перевірити, чи працює "звичайна" роздільна здатність (тобто спосіб, вказаний у /etc/nsswitch.conf), ви можете використовувати getent:

getent hosts www.winaproduct.com

getent hosts www.winaproduct.comпрацює чудово, але nslookup, digі hostт. д. є лише прикладом, я хочу це на firefox .
Арнаб

1
Якщо він працює з getent, він також повинен працювати з firefox. (Обидва використовують один і той же механізм роздільної здатності.) Якщо це дійсно не працює, перевірте наявність "незвичайної" конфігурації у firefox. Можливо, ви встановили якийсь проксі або щось подібне.
michas

дякую за коментар, я не використовую будь-яку незвичайну конфігурацію firefox, ні вона не працює з firefox (38.0.1).
Арнаб

3
Я впевнений, що це певна проблема браузера. Спробуйте wgetабо якийсь інший веб-переглядач, наприклад, хром. Якщо getentдає очікуваний результат, усі вони повинні.
michas

1
@daniel Azuelos, в налаштуваннях firefox немає нічого поганого, воно вже використовується No Proxy. Тож як сказати nslookupі digт. Д., /etc/hostsСпочатку запитайте файл, а не безпосередньо DNS ?. Дякуємо за ваш цінний коментар.
Арнаб

4

Ви можете встановити DNSmasq, який буде читати записи / etc / hosts та імпортувати їх у свій кеш DNS. Тоді всі ваші інструменти DNS та додатки запитів DNS, такі як dig, хост та nslookup, отримають відповіді, що походять з файлу / etc / hosts.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.