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

По умолчанию /etc/nsswitch.conf выглядит hosts: files dns

как сказать nslookup, и digт.д. ASK / и т.д. / хосты файл первого вместо спрашивать непосредственно в DNS?

но почему busybox nslookup, wget, и resolveipт.д. работают иначе , чем nslookup, и digт.д.?

Арнаб
источник
как выглядит hosts:запись в /etc/nsswitch.conf?
Кейси
@ casey, /etc/nsswitch.conf выглядит такhosts: files dns
Арнаб
Пожалуйста, добавьте эту ключевую информацию в свой OQ.
Дан
Это явно не проблема 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. Может быть, вы установили какой-то прокси или что-то вроде этого.
Михас
спасибо за комментарий, я не использую никакой необычной конфигурации Firefox, нет, она не работает с Firefox (38.0.1).
Арнаб
3
Я уверен, что это какая-то проблема с браузером. Попробуйте wgetдругой браузер, например, Chrome. Если getentдает ожидаемый результат, все они должны.
Михас
1
@daniel Azuelos, в настройках Firefox нет ничего плохого, он уже используется No Proxy. Так как сказать nslookupи digт. Д. /etc/hostsСначала спросить файл, а не напрямую спросить в DNS? Спасибо за ваш ценный комментарий.
Арнаб
4

Вы можете установить DNSmasq, который будет читать ваши записи / etc / hosts и импортировать их в кеш DNS. Затем все ваши инструменты DNS и приложения DNS-запросов, такие как dig, host и nslookup, получат ответы, полученные из файла / etc / hosts.

Тони Баргански
источник