Всегда ли хост localhost доступен для собственной системы? - PullRequest
3 голосов
/ 22 сентября 2008

Всегда ли можно пинговать localhost, и он разрешается до 127.0.0.1?

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

Ответы [ 10 ]

16 голосов
/ 22 сентября 2008

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

6 голосов
/ 22 сентября 2008

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

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

Пример в окне Debian:

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

topaz:/root# ping localhost 
ping: unknown host localhost
5 голосов
/ 22 сентября 2008

педантичный ответ (извините, Грег :), должен звучать так: 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
5 голосов
/ 22 сентября 2008

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

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

sudo ifconfig lo down ping 127.0.0.1

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

1 голос
/ 22 сентября 2008

Если 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.
0 голосов
/ 29 сентября 2008

Ответ:

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

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

Вы не должны редактировать ваш хост-файл, чтобы изменить адрес "localhost". Вы должны настроить свои домены, чтобы иметь локальный хост. и localhost.domain.com запись, которая указывает на 127.0.0.1.

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

0 голосов
/ 22 сентября 2008

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

0 голосов
/ 22 сентября 2008

Хорошо.

Причина, по которой он разрешает это, - запись в файле% WINDOWS_DIR% \ System32 \ drivers \ etc \ hosts, например:

127.0.0.1 localhost

0 голосов
/ 22 сентября 2008

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

0 голосов
/ 22 сентября 2008

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

...