2011-04-21 4 views
13

Я работаю над проектом, связанным с сетью/сжатием. Одной из машин является Windows Vista, у которой уже настроен IPv6.Формат IPv6-локальный адрес

Когда я пытаюсь ipconfig, я вижу адрес в следующем формате: fe80::9dc8:72fa:aacd:76e2%10

Но когда я пытаюсь пинговать эту машину из другого с ping fe80::9dc8:72fa:aacd:76e2%10, я получаю следующее сообщение об ошибке:

Ping request could not find host fe80::9dc8:72fa:e327:76e2%10.
Please check the name and try again.

Любые идеи/комментарии очень полезны.

+0

Я никогда не видел '% 10' в адресе ipv6 до – knittl

+0

% 10 является частью локального адреса. – Joe

+0

так что думайте, fe80 :: 9dc8: 72fa: aacd: 76e2 - это настоящий адрес ipv6? – pdk

ответ

0

вы не можете пинговать ipv6-адреса с помощью классической утилиты ping, только адреса ipv4. У linux есть инструмент командной строки с именем ping6 для ping ipv6-адресов, у окон, вероятно, есть нечто похожее. небольшое исследование сказало мне, что окна используют ping -6 для pinging адресов ipv6.

+0

Я попробовал ping -6 fe80: 0000: 0000: 0000: 9dc8: 72fa: e327: 76e2 Я получаю следующую ошибку ::: Не удалось инициализировать интерфейс Windows Sockets, код ошибки 10047. – pdk

+0

@pdk: так? это сработало? была ли ошибка? как указано в моем первом комментарии и других комментариях, попробуйте без '% 10'. (вы не поместили это в свой последний комментарий, хотя, я думаю) – knittl

+0

@knittl: я получил эту ошибку (без%). «Не удалось инициализировать интерфейс Windows Sockets, код ошибки 10047.» Любой намек на эту ошибку? – pdk

22

%10 после адреса, который называется scope zone. При использовании адресов link-local IPv6 зона области требуется, чтобы система узнала, какой интерфейс для отправки пакета.

В Windows, если вы выдаете команду netsh interface ipv6 show addresses, вы увидите адреса, назначенные системе, с их идентификаторами зоны. Обратите внимание, что идентификаторы зон соответствуют индексу интерфейса. Например:

Interface 22: VirtualBox Host-Only Network 

Addr Type DAD State Valid Life Pref. Life Address 
--------- ----------- ---------- ---------- ------------------------ 
Other  Preferred  infinite infinite fe80::15c3:6bea:aaac:a015%22 

Этот адрес %22 область действия, потому что это на интерфейсе с индексом 22. Аналогично, в Linux вы можете увидеть локальный адрес ссылки, например fe80::15c3:6bea:aaac:a016%eth0. Формат идентификатора зоны уникален для каждого отдельного компьютера, на котором запущен IPv6, поэтому он может быть другим, если вы пытаетесь выполнить ping из другой системы.

Например, если у вас есть:

System A (Windows): fe80::15c3:6bea:aaac:a015%22 
System B (Linux): fe80::15c3:6bea:aaac:a016%eth0 

... и вы хотите свистеть коробку Linux из коробки Windows, вы не можете сделать ping fe80::15c3:6bea:aaac:a016%eth0. Но вы можете сделать ping fe80::15c3:6bea:aaac:a016%22. Это проблема. Таким образом, локальные адреса Link-Link могут быть сложными.

Попробуйте указать правильный идентификатор зоны. То есть, когда вы делаете свой ping fe80::9dc8:72fa:aacd:76e2%10, сначала сделайте netsh interface ipv6 show addresses на машине, которую вы пинговаете от, и измените %10 на индекс интерфейса для интерфейса, который вы хотите использовать в исходной системе.

Если машина вы пинг из является Linux, вам придется делать ping6 -I eth0 fe80::9dc8:72fa:aacd:76e2 (предполагая, что другая система находится на eth0), так как утилита командной строки Linux не поддерживает % способа определения зоны (в последний раз, когда я проверял, во всяком случае).

В идеале вы должны настроить маршрутизатор с поддержкой IPv6 в своей сети, чтобы сделать рекламу маршрутизатора, чтобы вы могли использовать stateless address auto-configuration (SLAAC) и получить адреса global unicast. Тогда это не будет проблемой.

0

Число после% - это имя интерфейса.если вы откроете status-> detail вашего сетевого интерфейса, вы увидите локальный адрес ссылки ipv6 с адресом% xx в конце адреса, который является индексом интерфейса, в случае, если вы хотите найти индекс для некоторых приложений. Системная информация или ipconfig могут просто дать вам разные номера индексов, по крайней мере, на моем Windows 7 Pro, что очень сбивает с толку. Описание, которое вы получаете от ОС, также может быть ошибочным.