У чому різниця між Locahost і місцевим IP-адресою?
Якщо ви багато займаєтеся мережею, налаштовуєте програми на основі локальної мережі та інструменти сервера, або просто цікаво, ви, напевно, помітили, що існує різниця між локальним хостом і локальною IP-адресою. Прочитайте, щоб дізнатися про відмінності.
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Питання
Читач SuperUser Diogo хоче знати, чому команда ping обробляє локальний хост і локальну IP-адресу по-різному, коли на поверхні вони виглядають однаково:
Використання cmd і ping на Windows дало мені такі результати:
Pinging "localhost":
Pinging "192.168.0.10" (локальна IP-адреса):
Хіба не обидві ситуації абсолютно однакові?
Я маю на увазі, я пинговую той же інтерфейс, ту ж машину і ту ж адресу. Чому я отримую такі різні результати?
Очевидно, що є певна різниця, але що саме відбувається при перемиканні між ними?
Відповідь
Співробітник SuperUser Том Вайсман пропонує наступне уявлення про тонкі відмінності між ними:
Ви не пингуєте один і той же інтерфейс, без будь-яких фізичних інтерфейсів у вас все ще є "місцевий хост".
Ваш
localhost
використовується для позначення комп'ютера від його "внутрішнього" IP-адреси, а не від будь-яких "зовнішніх" IP-адрес вашого комп'ютера. Таким чином, ping-пакети не проходять через будь-який фізичний мережевий інтерфейс; тільки через віртуальний інтерфейс зворотного зв'язку, який безпосередньо посилає пакети з порту до порту без будь-яких фізичних стрибків.Ви все ще можете замислитися, чому
localhost
вирішує:: 1
, в той час як традиційно ми очікуємо, що він вирішить на адресу IPv4127.0.0.1
. Зверніть увагу на це.localhost
традиційно - це TLD (див. RFC 2606), який вказує на IP-адресу задньої петлі (для IPv4 див. RFC 3330, особливо 127.0.0.0/8).Дивлячись
localhost
використанняnslookup
дає нам:
nslookup localhost
… Ім'я: адреси localhost: :: 1 127.0.0.1
Таким чином, Windows вважає за краще використовувати IP-адресу для зворотного зв'язку IPv6
:: 1
(див. RFC 2373), як він вказаний першим.Отже, звідки вона походить, давайте подивимося на файл hosts.
Тип% WINDIR% System32 Драйвери І т.д.
… Розділ імен локального хоста обробляється в самому DNS. # 127.0.0.1 localhost # :: 1 localhost ...
Хм, ми повинні дивитися на налаштування DNS Windows.
Ця стаття KB розповідає про налаштування, яке впливає на те, що Windows надає перевагу, підкреслена жирним шрифтом:
- У редакторі реєстру знайдіть і виберіть наступний підрозділ реєстру:
HKEY_LOCAL_MACHINE СИСТЕМА CurrentControlSet Послуги cpip6 Параметри
- Двічі клацніть DisabledComponents, щоб змінити запис DisabledComponents. Примітка: Якщо запис DisabledComponents недоступна, його потрібно створити. Для цього виконайте такі дії:
- У меню Редагування виберіть пункт Створити, а потім клацніть Значення DWORD (32-біт).
- Введіть DisabledComponents і натисніть клавішу ENTER.
- Двічі клацніть пункт DisabledComponents.
- Введіть будь-яке з наведених нижче значень у полі Значення :, щоб налаштувати протокол IPv6 до потрібного стану, а потім натисніть кнопку Гаразд:
- Тип
0
щоб увімкнути всі компоненти IPv6. (За замовчуванням Windows)- Тип
0xffffffff
щоб вимкнути всі компоненти IPv6, за винятком інтерфейсу петлі IPv6. Це значення також налаштовує Windows на те, що він надає перевагу використанню Internet Protocol version 4 (IPv4) над IPv6, змінюючи записи в таблиці префіксної політики. Для отримання додаткових відомостей див. Вибір джерела та адреси призначення.- Тип
0x20
надавати перевагу IPv4 над IPv6, змінюючи записи в таблиці префіксної політики.- Тип
0x10
вимкнути протокол IPv6 на всіх інтерфейсах nontunnel (як на інтерфейсах LAN, так і Point-to-Point Protocol [PPP]).- Тип
0x01
вимкнути IPv6 на всіх тунельних інтерфейсах. До них відносяться протокол автоматичного тунельного адресації (ISATAP), 6 до 4 і Teredo.- Тип
0x11
щоб вимкнути всі інтерфейси IPv6, за винятком інтерфейсу петлі IPv6.- Перезапустіть комп'ютер, щоб це налаштування набуло чинності.
Що таке таблиця префіксної політики?
netsh інтерфейс ipv6 показують префіксполітика
(абопрефікс
на попередніх версіях)Префікс позначки пріоритету ---------- ----- -------------------------------- 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.
Отже, використовуючи цей КБ, ми могли б додати тут записи, які означають, що IPv4 має вищий пріоритет, ніж IPv6.
Примітка: Немає жодних причин переоцінювати цю поведінку, якщо ви не відчуваєте сумісних проблем. Зміна цього налаштування на нашому Windows Server розбила наш поштовий сервер, тому його потрібно обробляти обережно ...
Нам нічого не подобається більше, ніж ретельна та інформативна відповідь із заощадженими пов'язаними документами підтримки. Очевидно, що локальний і локальний IP-адреси є окремими об'єктами, служать різним цілям, і тепер ми всі знаємо, чому.
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.