If-Koubou

Каква е разликата между локалния и локалния IP адрес?

Каква е разликата между локалния и локалния IP адрес? (Как да)


Ако правите много мрежови манипулации, конфигуриране на LAN приложения и сървърни инструменти или просто любопитни, вероятно сте забелязали, че има разлика между localhost и локалния IP адрес. Прочетете, за да научите разликите.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Четецът на SuperUser Diogo иска да разбере защо командата ping третира различно местния и местния IP адрес, когато на повърхността те изглеждат едно и също:

Използването на cmd и ping на Windows ми даде следните резултати:

Pinging "localhost":

Pinging "192.168.0.10" (локален IP адрес):

И двете ситуации не са ли същите?

Искам да кажа, че пинг на същия интерфейс, същата машина и същия адрес. Защо получавам толкова различни резултати?

Очевидно има някаква разлика, но какво точно се случва, когато превключвате между двете?

Отговорът

Contributor на SuperUser Tom Wijsman предлага следното разбиране за фините разлики между двете:

Вие не пингвате същия интерфейс, без физически интерфейси все още имате "локален хост".

Вашият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

... Име: localhost Адреси: :: 1 127.0.0.1 

По този начин Windows предпочита да използва IPv6 обратния IP адрес::1 (вж. RFC 2373), както е посочено първо.

Добре, откъде идват, нека да разгледаме файла на хостовете.

въведете% WINDIR% \ System32 \ Drivers \ Etc \ Хостове

... # localhost имена резолюция се обработва в самия DNS. # 127.0.0.1 localhost # :: 1 localhost ... 

Трябва да разгледаме DNS настройките на Windows.

Тази статия в KB ни разказва за настройка, която засяга предпочитанията на Windows, подчертани с удебелен шрифт:

  1. В редактора на системния регистър намерете и щракнете върху следния подключ на системния регистър:
    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ TCPIP6 \ Параметри 
  2. Щракнете двукратно върху DisabledComponents, за да промените записа на DisabledComponents.Забележка: Ако записът DisabledComponents не е налице, трябва да го създадете. За целта изпълнете следните стъпки:
    1. В менюто Редактиране, посочете Нов и след това кликнете върху DWORD (32-битова) стойност.
    2. Въведете DisabledComponents и след това натиснете ENTER.
    3. Кликнете два пъти върху DisabledComponents.
  3. Въведете една от следните стойности в полето Данни за стойността: за да конфигурирате протокола IPv6 до желаното състояние и след това щракнете върху OK:
    • Тип0 за да активирате всички компоненти на IPv6. (Настройка по подразбиране за Windows)
    • Тип0xffffffff за да деактивирате всички компоненти на IPv6, с изключение на интерфейса за IPv6 loopback. Тази стойност също така конфигурира Windows да предпочита използването на Internet Protocol version 4 (IPv4) през IPv6 чрез промяна на записи в таблицата с правила за префикс. За повече информация вижте Избор на източник и целеви адрес.
    • Тип0x20 да предпочитат IPv4 през IPv6, като променят записите в таблицата с правила за префикси.
    • Тип0x10 да деактивирате IPv6 на всички nontunnel интерфейси (както на LAN и Point-to-Point Protocol [PPP] интерфейси).
    • Тип0x01 да деактивирате IPv6 на всички тунелни интерфейси. Те включват протокола за адресиране на автоматичен тунел (ISATAP) в рамките на обекта, 6to4 и Teredo.
    • Тип0x11 за да изключите всички IPv6 интерфейси, с изключение на интерфейса за IPv6 loopback.
  4. Рестартирайте компютъра, за да влезе в сила тази настройка.

Какво представлява тази таблица с правила за префикс?

netsh интерфейс ipv6 показват prefixpolicies (илиprefixpolicy по-ранни версии)

Префикс на предходния етикет ---------- ----- -------------------------------- 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 11 11 fec0 :: / 10 1 12 3ffe :: / 16 1 10 :: / 96 

Тази таблица определя кои префикси получават предимство пред други префикси по време на решаването на DNS.

Ах, така че използвайки тази KB, можем да добавим вписвания тук, които означават, че IPv4 има по-висок приоритет от IPv6.

Забележка: Няма причина да пренебрегвате това поведение, освен ако не изпитвате съвместими проблеми. Промяната на тази настройка на нашия Windows Server разруши нашия пощенски сървър, така че трябва да се борави внимателно ...

Няма нищо, което да ни хареса повече от задълбочен и информативен отговор с свързаните с тях документи за подкрепа. Ясно е, че localhost и локалният IP адрес са отделни обекти, обслужват различни цели и сега всички знаем защо.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.