Всегда ли хост localhost доступен для собственной системы?

StackOverflow https://stackoverflow.com/questions/113293

  •  02-07-2019
  •  | 
  •  

Вопрос

Всегда ли возможно выполнить ping-запрос на локальный хост, и он разрешится на 127.0.0.1?

Я знаю, что Windows Vista, XP, Ubuntu и Debian делают это, но все ли это делают?

Это было полезно?

Решение

Любая правильная реализация TCP/IP зарезервирует адрес 127.0.0.1 для обращения к локальному компьютеру.Однако сопоставление имени «localhost» с этим адресом обычно зависит от системы. hosts файл.Если бы вы удалили запись localhost из hosts, то имя локального хоста может вообще не разрешаться должным образом.

Другие советы

127.0.0.1 зарезервирован в любом стеке IP для локального хоста.

«localhost» в качестве имени хоста нет гарантированно будет там.Если параметры хоста/DNS настроены неправильно, localhost не разрешится.

Пример для коробки Debian:

topaz:/root# vi /etc/hosts
[comment out localhost entry]

topaz:/root# ping localhost 
ping: unknown host localhost

Нет.Для начала localhost это скорее условность, чем правило.В основном он установлен по умолчанию, но нет ничего, что могло бы его обязать.

Во-вторых, нечего сказать, что всегда можно пропинговать 127.0.0.1.В качестве примера (в системе unix) попробуйте следующее:

sudo ifconfig lo down ping 127.0.0.1

Как крейсер сказано, что 127.0.0.1 (если он существует) определяется как локальный компьютер.Но оно не обязательно должно существовать.

Педантичный ответ (извини, Грег:) — прочитать RFC 3330:

   127.0.0.0/8 - This block is assigned for use as the Internet host
   loopback address.  A datagram sent by a higher level protocol to an
   address anywhere within this block should loop back inside the host.
   This is ordinarily implemented using only 127.0.0.1/32 for loopback,
   but no addresses within this block should ever appear on any network
   anywhere [RFC1700, page 5].

(Слово «обычно» выше, вероятно, следует читать как «часто» — большинство современных операционных систем поддерживают использование всего 127.0.0.0/8 в качестве шлейфа.)

Что касается того, всегда ли «localhost» разрешается в 127.0.0.1 — он прав, в целом это одно и то же, но технически зависит от реализации:

~> dig localhost.t...e.org

...

;; ANSWER SECTION:
localhost.t...e.org. 86400 IN    A       127.0.0.2

Если DNS-серверы, к которым подключен ваш клиент, следуют rfc1912, тогда да, localhost должен разрешиться в 127.0.0.1.

RFC1912
4.1
...
   Certain zones should **always be present** in nameserver configurations:
           primary         localhost               localhost
           primary         0.0.127.in-addr.arpa    127.0
...
   The "localhost" address is a "special" address which always refers to
   the local host.  It should contain the following line:

           localhost.      IN      A       127.0.0.1

   The "127.0" file should contain the line:

           1    PTR     localhost.

Я думаю, что localhost в значительной степени разрешается до 127.0.0.1 для большинства платформ, но все IP-адреса, начинающиеся с 127...* также разрешите локальный хост.Попробуйте выполнить пинг 127.255.255.254, и он все равно ответит.

Теоретически бывают случаи, когда его может не быть.На практике оно всегда есть.

Приличные брандмауэры также позволяют фильтровать доступ к интерфейсам обратной связи.Таким образом, можно настроить правило брандмауэра, которое отбрасывает icmp-пакеты, идущие на локальный хост (127.0.0.1).Кроме того, как уже упоминали все остальные, даже существование адреса localhost или 127.0.0.1 и интерфейса обратной связи не гарантируется.

Ответ:

Требуется 127.0.0.1, часто называемый «петлевой петлей».Хотя ваш компьютер может позволять вам делать глупые вещи, например отключать его или настраивать этот диапазон на физическом интерфейсе, все это недействительно.

«localhost» — это просто имя хоста, которое по соглашению должно быть 127.0.0.1. Как системный администратор или хост-мастер, вам следует избегать конфигураций, которые позволяют localhost указывать на другие адреса.

Вам не следует редактировать файл хостов, чтобы изменить адрес «localhost».Вам следует настроить свои домены на локальный хост.и запись localhost.domain.com, указывающая на 127.0.0.1.

Вы не должны позволять своим прокси-серверам отвечать на «localhost» или любое полное доменное имя, начинающееся с localhost.

Хорошо.

Причина, по которой он решает эту проблему, записывается в файл %WINDOWS_DIR%\System32\drivers\etc\hosts следующим образом:

127.0.0.1 локальный хост

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top