Вы не пропингуете тот же интерфейс, без каких-либо физических интерфейсов у вас все еще есть "локальный хост".
Ваш localhost
используется для ссылки на ваш компьютер с его "внутреннего" IP, а не с любого "внешнего" IP вашего компьютера. Таким образом, пакеты ping не проходят через какой-либо физический сетевой интерфейс; только через интерфейс виртуальной обратной связи, который напрямую отправляет пакеты от порта к порту без каких-либо физических скачков.
Вы можете все еще задаться вопросом, почему localhost
разрешается в ::1
, в то время как традиционно мы ожидаем, что он разрешится в IPv4-адрес 127.0.0.1
. Обратите внимание, что .localhost
традиционно является TLD (см. RFC 2606), который указывает на обратный IP-адрес (для IPv4 см. RFC 3330 , особенно 127.0.0.0/8).
Поиск localhost
с помощью nslookup
дает нам:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
Таким образом, Windows предпочитает использовать IPv6 loopback IP address ::1
(см. RFC 2373), так как он указан первым.
Итак, откуда это, давайте посмотрим на файл hosts.
type %WINDIR%\System32\Drivers\Etc\Hosts
...
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
...
Хм, мы должны посмотреть на настройки DNS Windows.
В этой статье базы знаний рассказывается о настройке, влияющей на предпочтения Windows, выделенной жирным шрифтом:
В редакторе реестра найдите и щелкните следующий раздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
Дважды щелкните DisabledComponents, чтобы изменить запись DisabledComponents.
Примечание. Если запись DisabledComponents недоступна, ее необходимо создать. Для этого выполните следующие действия:
В меню «Правка» выберите пункт «Создать» и нажмите «Значение DWORD (32-разрядное)».
Введите DisabledComponents и нажмите клавишу ВВОД.
Дважды щелкните DisabledComponents.
Введите любое из следующих значений в поле Значение: данные, чтобы настроить протокол IPv6 на нужное состояние, а затем нажмите кнопку ОК:
- Введите
0
чтобы включить все компоненты IPv6. (Настройка Windows по умолчанию)
- Введите
0xffffffff
чтобы отключить все компоненты IPv6, кроме петлевого интерфейса IPv6. Это значение также настраивает Windows на использование Интернет-протокола версии 4 (IPv4) вместо IPv6 путем изменения записей в таблице политик префиксов. Для получения дополнительной информации см. Выбор источника и адреса назначения.
- Введите
0x20
чтобы предпочитать IPv4 по сравнению с IPv6, изменив записи в таблице политик префиксов.
- Введите
0x10
чтобы отключить IPv6 на всех нетуннельных интерфейсах (как на интерфейсах LAN, так и на протоколах PPP).
- Введите
0x01
чтобы отключить IPv6 на всех туннельных интерфейсах. К ним относятся протокол внутренней туннельной автоматической адресации (ISATAP), 6to4 и Teredo.
- Введите
0x11
чтобы отключить все интерфейсы IPv6, кроме интерфейса обратной связи IPv6.
Перезагрузите компьютер, чтобы этот параметр вступил в силу.
Что это за таблица префиксов политики?
netsh interface ipv6 show prefixpolicies
(или prefixpolicy
в более ранних версиях)
Precedence Label Prefix
---------- ----- --------------------------------
50 0 ::1/128
45 13 fc00::/7
40 1 ::/0
10 4 ::ffff:0:0/96
7 14 2002::/16
5 5 2001::/32
1 11 fec0::/10
1 12 3ffe::/16
1 10 ::/96
Эта таблица решает, какие префиксы имеют приоритет над другими префиксами при разрешении DNS.
Ах, поэтому, используя этот KB, мы могли бы добавить сюда записи, которые обозначают, что IPv4 имеет более высокий приоритет, чем IPv6.
Примечание. Нет причин переопределять это поведение, если только у вас не возникли проблемы с совместимостью. Изменение этого параметра на нашем Windows Server нарушило работу нашего почтового сервера, поэтому с ним следует обращаться осторожно ...