Ви не використовуєте один і той же інтерфейс , без фізичних інтерфейсів у вас ще є "локальний хост".
Ви 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 порушило наш поштовий сервер, тому з ним слід поводитися обережно ...