1

Я играл с моим хост-файлом Windows 10, чтобы лучше понять, как он работает, и мне пока не удалось перенаправить адрес.

Я пытаюсь перенаправить yahoo.com или www.yahoo.com на 216.58.209.36 (www.google.com), я помещаю:

216.58.209.36  yahoo.com
216.58.209.36  www.yahoo.com

Но когда я пытаюсь загрузить его в свой браузер, он говорит мне,

Этот сайт не может быть достигнут

www.yahoo.com заняло слишком много времени, чтобы ответить.

Кто-нибудь знает, что я делаю не так?
Я также попытался очистить историю просмотров.

4 ответа4

3

Я полагаю, вы неправильно понимаете цель файла hosts.txt .

Если все, что вас волнует, это TL; DR (слишком долго; не читал), прокрутите вниз до конца ответа. Далее следует объяснение того, что происходит, чтобы помочь вам понять, почему вы получаете результаты, которые вы получаете.

hosts.txt (обычно это /etc/hosts в Unix-подобных системах) обеспечивает сопоставление между именем хоста и IP-адресом. Преобразователь имен системы обычно настраивается так, чтобы он предпочитал записи hosts.txt DNS, так что hosts.txt можно использовать в качестве переопределения DNS. Это особенно полезно в тех случаях, когда локальные имена не существуют в DNS, но у вас просто недостаточно хостов в сети, чтобы гарантировать настройку локального полномочного полномочного DNS-сервера со всеми вытекающими отсюда последствиями.

Однако современный веб-браузер опирается на нечто большее, чем просто сопоставление имени с IP-адресом.

Типичный процесс выглядит примерно так:

  1. Пользователь вводит URL-адрес в поле адреса браузера или иным образом запускает веб-запрос
  2. Браузер ищет имя хоста по URL-адресу, IP-адресу и подключается к этому IP-адресу.
  3. Браузер настраивает сеанс HTTPS, если URL-адрес является https:// URL
    • Браузер прерывается, если представленный сертификат не совпадает с именем хоста в URL
  4. Браузер говорит удаленному веб-серверу указать ему путь /something/whatever из имени хоста из URL
  5. Удаленный веб-сервер отвечает запрошенным ресурсом или, как правило, ошибкой, если запрос не может быть выполнен по какой-либо причине
  6. Браузер интерпретирует и отображает или воздействует на данные, полученные от удаленного веб-сервера
    • Если полученные данные являются перенаправлением, то процесс начинается с шага 1 вместо этого URL.

Редактируя hosts.txt вы изменяете только то, что происходит в шаге 2 выше. Просмотр веб-страниц намного сложнее, чем просто поиск по имени!

Также обратите внимание, что веб-браузеры иногда реализуют свои собственные функции поиска имен вместо разгрузки на распознаватель, предоставляемый операционной системой. В таком случае даже шаг 2 не обязательно даст вам результат, который вы хотите получить, потому что он вполне может следовать обычному пути делегирования имени из корня DNS, поэтому вы получите тот же ответ, что и в противном случае; в этом случае с hosts.txt никогда не консультируются!

Примечательно, что браузер по-прежнему ожидает сертификат для конкретного имени хоста в URL-адресе на шаге 3; и он сообщит удаленному веб-серверу имя хоста, которое вы указали на шаге 4.

Так как веб-серверы Google вряд ли будут настроены для обслуживания www.yahoo.com , будь то через HTTP или HTTPS, это происходит не позднее, чем между шагами 4 и 5 (удаленный веб-сервер не может предоставить запрошенный ресурс).

У меня нет хорошего объяснения того, почему вы получаете тайм-аут, а не ответ об ошибке веб-сервера, но причина сбоя в значительной степени зависит от удаленного сервера, поэтому я подозреваю, что он вполне может не отвечать вообще, когда вас спрашивают о хозяин, о котором он просто не знает.

И, конечно же, если вы просто экспериментируете, нет необходимости использовать Yahoo или Google. Скорее, есть IP-адреса в Интернете и имена хостов, специально выделенные для примера и целей документации, которые хороши для этого. Например, вы можете использовать 192.0.2.100 для IP-адреса и test.example.com для имени хоста, поскольку ни один из них не принадлежит никому конкретно. Это или RFC 1918 пробел (с 10.0.0.0 по 10.255.255.255, с 172.16.0.0 по 172.31.255.255 или с 192.168.0.0 по 192.168.255.255), но вам все равно нужно соответствующее доменное имя, для которого зарезервированы хорошие.

TL; DR:

Если вы хотите убедиться, что ваша запись hosts.txt делает то, что должна, откройте командную строку и введите команду ping -n 1 www.yahoo.com (в вашем случае). Он должен ответить с IP-адресом, который вы настроили. -n 1 вызывает отправку только одного эхо-запроса, потому что все, что нас действительно интересует, это результаты поиска по имени.

Я бы предпочел nslookup www.yahoo.com , но, очевидно, в Windows nslookup тоже не смотрит на hosts.txt . (В Linux это обычно происходит, потому что он запрашивает системный преобразователь, а системный преобразователь обычно настроен для обращения к файлу hosts; если вам нужен чистый DNS-поиск в Linux, вы обычно используете вместо этого host или dig .)

0

Ваш файл hosts перенаправляет yahoo.com на 216.58.209.36, как и должно быть. Причина, по которой он работает не так, как вы предполагали, вероятно, заключается в том, что веб-сервер за 216.58.209.36 будет искать сайт с именем yahoo.com, но, поскольку сервер не размещает этот сайт, он не будет найден, что говорит вам сайт не может быть достигнут.

Это похоже на набор неправильного номера. Если вы позвоните Алисе и попросите Боба, она, вероятно, ответит: «Здесь никого нет с таким именем».

0

Вы не сделали ничего плохого. Чтобы доказать себе, что записи вашего хост-файла имеют ожидаемый эффект, выполните в командной строке следующее:

ping www.yahoo.com

... и обратите внимание, что IP-адрес, который получает pinging, тот, который вы указали в файле hosts .

Как отмечено в ответе FastEthernet, доступ к веб-серверу через имя хоста, не назначенное серверу, может привести к неожиданному поведению. Однако лучше использовать приведенную выше команду ping, чтобы убедиться, что имя хоста сопоставляется с вашим пользовательским IP-адресом, а не полагаться на возможность загрузки сайта в браузере.

0

Вы, вероятно, сталкиваетесь со всевозможными проблемами с мерами безопасности, так как на сайте Google нет правильного сертификата, который можно серьезно рассматривать как Yahoo.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .