Ви не використовуєте один і той же інтерфейс , без фізичних інтерфейсів у вас ще є "локальний хост".
Ви 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 вважає за краще використовувати задню IP-адресу циклу IPv6 ::1(див. RFC 2373 ), оскільки вона перерахована в першу чергу.
Гаразд, отже, звідки воно походить, давайте подивимось на файл хостів.
type %WINDIR%\System32\Drivers\Etc\Hosts
...
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
...
Хм, ми повинні подивитися на налаштування DNS Windows.
Ця стаття KB розповідає про налаштування, яке впливає на те, що Windows віддає перевагу, підкреслене жирним шрифтом:
У Редакторі реєстру знайдіть і натисніть наступний підрозділ реєстру:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
Двічі клацніть DisabledComponents, щоб змінити запис DisabledComponents.
Примітка. Якщо запис DisabledComponents недоступний, його потрібно створити. Для цього виконайте наступні дії:
У меню Правка вкажіть пункт Нове, а потім натисніть значення DWORD (32-бітне значення).
Введіть DisabledComponents та натисніть клавішу ENTER.
Двічі клацніть DisabledComponents.
Введіть будь-яке з наступних значень у полі Значення даних: щоб налаштувати протокол IPv6 до потрібного стану, а потім натисніть кнопку ОК:
- Введіть,
0щоб увімкнути всі компоненти IPv6. (Налаштування Windows за замовчуванням)
- Введіть,
0xffffffffщоб відключити всі компоненти IPv6, крім інтерфейсу зворотного зв'язку IPv6. Це значення також налаштовує Windows на перевагу використання протоколу Internet Protocol версії 4 (IPv4) над IPv6 шляхом зміни записів у таблиці політики префіксів. Для отримання додаткової інформації див. Вибір джерела та адреси призначення.
- Введіть
0x20перевагу IPv4 перед IPv6, змінивши записи в таблиці політики префіксів.
- Введіть,
0x10щоб відключити IPv6 для всіх ненуннельних інтерфейсів (як для інтерфейсів локальної мережі, так і для протоколу «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 порушило наш поштовий сервер, тому з ним слід поводитися обережно ...