Формат локального адреса IPv6 - PullRequest
13 голосов
/ 21 апреля 2011

Я работаю над проектом, связанным с сетью / сжатием. Одной из машин является Windows Vista, на которой уже настроен 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.

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

Ответы [ 3 ]

25 голосов
/ 21 апреля 2011

%10 после адреса называется областью действия . Когда вы используете 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, поэтому он может отличаться, если вы попытаетесь пропинговать из другой системы.

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

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. Это проблема. В этом случае локальные адреса ссылок могут быть сложными.

Попробуйте указать правильный идентификатор зоны. То есть, когда вы делаете 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 в своей сети для рекламы маршрутизатора, чтобы вы могли использовать автоконфигурирование адреса без сохранения состояния (SLAAC) и получить global unicast адреса. Тогда это не будет проблемой.

0 голосов
/ 19 января 2018

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

0 голосов
/ 21 апреля 2011

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

...