Почему Chromium обходит / etc / hosts и dnsmasq?

51

Я использую hostsblock вместе с dnsmasq на Arch Linux для блокировки некоторых веб-сайтов, один из которых - facebook.comи www.facebook.com.

Я знаю, что все работает правильно, потому что простой пинг facebook.com(или www.facebook.com) возвращает 127.0.0.1. Кроме того, если я получаю доступ к этим веб-сайтам из Midori, возвращается пустая страница (это ожидаемое поведение, поскольку я также использую демон kwakd для возврата пустых страниц на localhost).

Кажется, только Chromium обходит мой блок-лист. Доступ к facebook.com с него заставляет меня перейти прямо на главную страницу Facebook.

После очистки всего (Ctrl + Shift + Delete) с начала времени и перезапуска Chromium, я получаю желаемое поведение (= не могу получить доступ к Facebook).

Хотя через некоторое время (я не совсем уверен, что вызывает это), Chromium снова игнорирует мой локальный DNS dnsmasq и успешно получает доступ к домашней странице facebook.

Я читал кое-что о кешировании и предварительной загрузке DNS-запросов Chromium, но я не уверен, как это отключить.

Вопрос: почему Chromium обходит мой локальный DNS и что я могу сделать, чтобы остановить его?

thiagowfx
источник
2
Ты используешь прокси? Когда вы используете прокси, запросы DNS выполняются на прокси.
Зоредаче
Нет, я не использую прокси, хост-блок не требует.
thiagowfx
Я попробовал методы ответов ниже, но почему-то Chromium все еще получает IP-адреса ... Есть ли в Chromium какие-то аппаратные адреса?
Джеремия

Ответы:

41

Большинство ссылок на эту тему старые. Если у вас старая версия Chromium, следуйте ответу edvinas.me .

Для текущих версий Chromium (на момент написания этого поста: 33-я), вот что вы должны сделать:

  1. Перейти к chrome://settings
  2. Нажмите «Показать дополнительные настройки ...»
  3. Снимите флажок Предсказывать сетевые действия для улучшения производительности загрузки страницы .
  4. Проверьте, действительно ли предварительная загрузка DNS отключена chrome://dns. Там вы должны увидеть что-то вроде предварительного разрешения DNS, а предварительное подключение TCP отключено. Если предварительная выборка не отключена, вы увидите там несколько таблиц.

Обновить

Для более новых версий Chrome (на момент этого обновления: 55-е) третий пункт сформулирован так: Используйте службу прогнозирования для более быстрой загрузки страниц .

Ссылка

thiagowfx
источник
27

Обновленный ответ

Убедитесь, что вы очистили кеш Chrome. Введите это в адресной строке:

chrome://net-internals/#dns

Затем нажмите Clear host cacheкнопку.

Старый ответ

Chromium использует внутренний DNS Google по умолчанию (8.8.8.8 и 8.8.4.4)

Чтобы отключить это:

  1. Нажмите на меню «Сервис» (маленький значок гаечного ключа), затем перейдите в «Настройки».

  2. Нажмите на вкладку «Под капотом».

    3. В разделе «Конфиденциальность» снимите флажок Использовать предварительную выборку DNS, чтобы повысить производительность загрузки страницы.

    4. Нажмите на кнопку Закрыть.

    5. Обновить, чтобы перезагрузить веб-страницу.

phoops
источник
1
То, что вы сказали, относится только к старым версиям Chromium / Google Chrome. Более новые версии больше не имеют этой настройки (ни «Под капотом»). Может быть, новый параметр «Предсказать действия сети для улучшения производительности загрузки страницы»? К сожалению, это не касается DNS, поэтому я не уверен.
thiagowfx
Я обновил ответ о том, как очистить DNS-кэш Chromium. Пожалуйста, посмотрите, я надеюсь, это поможет.
Фоп
Спасибо! Ваш новый ответ - лучший способ очистить записанный DNS (вместо очистки всего как Ctrl + Shift + Delete). Но чтобы избавиться от этой проблемы навсегда , я думаю , что мои собственные припадки ответа лучше (я до сих пор испытать немного больше просто чтобы быть уверенным).
thiagowfx
Хорошо, если вы просто отключите это без очистки кеша - он не будет работать, пока кэш не истечет. После очистки кеша я не думаю, что Chromium сможет каким-то образом предварительно извлекать реальные IP-адреса. Даже если включена предварительная выборка, будут заблокированы заблокированные значения. Во всяком случае, по крайней мере, кажется, что вы разобрались.
Фоп
2
"chrome: // net-internals / # dns" -> clear, не работает.
Totty.js
2

Еще одна неясная возможность заключается в том, что ваша система настроена на использование автоматического прокси-файла * .pac. Обычно это происходит в том случае, если вы получили компьютер в корпоративной среде, а файл * .pac сообщает вашему браузеру, что нужно разрешить URL-адрес через прокси-сервер. Это имеет приоритет над вашим файлом / etc / hosts, и если в файле * .pac есть правило возврата PROXY, если ничего не совпадает, то окажется, что Chrome не соблюдает / etc / hosts. Обычно это происходит в том случае, если ваша командная строка работает должным образом, например, dig, ping и т. Д.

Если вы пробовали другие решения, но они не работают, проверьте, не установлена ​​ли у вас настройка автоматического прокси-сервера, которую использует Chrome.

Элайджа Линн
источник
1
Это сработало для меня!
MediumOne
-2

Если вы используете какие-либо расширения VPN-прокси для Google Chrome (например, Betternet ), вы, вероятно, столкнетесь с этой проблемой. Отключение расширения решает проблему.

bantya
источник