Як не вдалося перенаправити файли хостів?


12

Я намагаюся перенаправити google.com на свою локальну машину, щоб розважитися та вивчити цей файл / etc / hosts на моєму Mac.

127.0.0.1 www.google.com

Однак www.google.com все-таки відображається на домашній сторінці Google, коли я відвідую її в Chrome на Mac. Чому?

В основному, це все, що я робив:

  1. Введіть sudo vim /etc/hostsтермінал.
  2. Вводиться 127.0.0.1 www.google.comу файл хостів.
  3. Збережено та кинути vim.

Відповіді:


11

hostsФайл не працює таким чином. Ви можете використовувати його лише для нанесення імен хостів на IP-адреси, а не на localhost.

Для вашого випадку ви використовуєте 127.0.0.1 www.google.com, тобто наведіть www.google.com на 127.0.0.1.

Якщо ви хочете зіставити більше імен хостів до співочого IP, ви просто додасте ці імена хостів у тому ж рядку, наприклад 127.0.0.1 www.a.com www.b.com.


1
Дякую. Я щойно змінив файл / etc / hosts на своєму Mac 127.0.0.1 www.google.com. Однак google.com все ще веде на головну сторінку Google. Чи потрібно щось оновлювати? Чи варто перезавантажити комп’ютер?
Девід Фокс

Вам не потрібно. Спробуйте додати 127.0.0.1 google.com(без www) після цього рядка і перевірте, чи працює він.
Ренан

127.0.0.1 google.comтеж не працює. Я не впевнений, що відбувається ... Я знаю, що /etc/hostsце м'яке посилання /private/etc/hostsна Mac, але я не думаю, що це взагалі допомагає.
Девід Фокс

1
Технічна характеристика: hostsімена хостів на IP-адреси, а не навпаки.
Денніс

1
@Dennis, ось що я збирався сказати, але знову ж таки, це дійсно працює обома способами, коли ти думаєш про це, оскільки це створює асоціацію між двома пунктами.
Synetech

10

Веб-браузер - не найкращий спосіб перевірити правильність hostsсинтаксису. Спробуйте виконати

ping www.google.com

і переконайтеся, що це пінг 127.0.0.1.

Причина, через яку Chrome ігнорує ваш hostsфайл, є кешування:

Якщо Chrome останнім часом вже запитав IP-адресу (визначення останнім часом, швидше за все, залежить від часу проживання (TTL), поверненого сервером DNS), він обійде hostsфайл, оскільки він уже знає правильну IP-адресу. Це робиться для прискорення перегляду веб-сторінок.

Щоб Chrome поважав новий запис, виконайте наступні дії:

  1. Редагувати так, /etc/hostsяк описано @Renan.

  2. Перейти до chrome://chrome/settings/clearBrowserData.

  3. Виберіть since the beginning of time.

  4. Перевірте Empty the cache, але зніміть прапорець усе інше.

  5. Клацніть Clear browsing dataта зачекайте, коли він закінчиться.

  6. Перезавантажте Chrome.

Chrome має поважати ваш hostsфайл зараз.


2
Про це я дізнався давно з IE6. Якби я змінив файл HOSTS, поки IE був відкритий, мені доведеться спеціально закрити його та запустити його знову, щоб отримати зміни. Це стосується більшості програм. Однак деякі програми (як-от версії Chrome за останній рік-два) фактично періодично перечитують файл HOSTS, тож якщо ви внесете зміни, зачекайте хвилину-дві, а потім оновіть (не потрібно очищати кеш-пам'ять). (Ця політика для повторного читання іноді зручна, як це, але зазвичай насправді дуже погана, оскільки вона марнотратна, а особливо погана, якщо файл HOSTS великий.)
Synetech

@Synetech: Chrome отримує зміни hostsмиттєво, якщо запис не є ім'ям хоста, яке вже є кешованим. Я припускаю, що він перевіряє hostsлише те, що минув TTL. З великими веб-сайтами це може зайняти деякий час.
Денніс

Я не знаю специфіки того, як різні версії стосуються перечитування файлу HOSTS, але ви можете використовувати Filemon / ProcMon, щоб побачити його в дії; chrome.exeперіодично буде читати весь файл.
Synetech

2
Існує менш жорстокий спосіб очищення кеш-пам’яті DNS-хрому superuser.com/questions/203674/…
hakunin

@hakunin: Акуратний. У Chromium 25.0.1364.160 Ubuntu 12.04 це вже не потрібно. Я зареєструвався net-internals/#dns, і кеш хосту автоматично очищається при /etc/hostsзміні.
Денніс

1

Моя відповідь - комбінація вищезазначеного, оскільки я підключаюся до свого офісу через Fortinet SSL VPN для Ubuntu 16.04.

Перше, що мені довелося зробити - це підняти мою термінальну консоль і виконати таку команду:

sudo nano /etc/resolvconf/resolv.conf.d/base

Я додав наступний приклад:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Потім я зберег файл натисканням CTRL-Oі закрив нано натисканням CTRL-X.

Потім я зробив наступне, і це спрацювало чудово:

Щоб Chrome поважав новий запис, виконайте наступні дії:

Редагувати так, /etc/hostsяк описано @Renan.

  1. Перейти до chrome://chrome/settings/clearBrowserData.
  2. Вибирайте з початку часу.
  3. Поставте прапорець Очистити кеш, але зніміть прапорець усе інше.
  4. Натисніть Очистити дані веб-перегляду та дочекайтеся його завершення.
  5. Перезавантажте Chrome.

Chrome має поважати файл хостів зараз.

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