Пинг IPv6 возможен только тогда, когда целевой компьютер отправляет ответный сигнал

485
Niko

У меня типичная проблема "а может пинговать б, но б не может пинговать". Я использую IPv6 для пинга. Что особенного в моем случае, так это то, что «b» может пинговать «a» сразу после «b» пингует «a». После некоторых испытаний я понял, что все работает нормально, если я укажу сетевой интерфейс, который должен использоваться с «-I eth0» (да, два интерфейса на машине Linux находятся в одной подсети). Я все еще хотел бы понять, что изменится после того, как машина "b" откликнется назад, и был бы признателен за некоторые экспертные знания. Пинг с IPv4 отлично работает в обоих направлениях. Если я остановлю пинг с «b», «a» все еще может пинговать «b», пока я не остановлю его с помощью Ctrl-C. Попытка повторить не удастся, даже если я попытаюсь немедленно, поэтому я считаю, что это не проблема upcache. Некоторая информация:

Машина "а"

ОС: Windows (добавлен «ICMPv6» в исключениях для брандмауэра)

IPv6-адрес: fe80 :: 21c: 1cff: fe00: 3de3

Машина "Б":

ОС: Linux Busybox

IPv6-адрес: fe80 :: 21c: 1cff: fe00: 3de4

Пробовал оба "ping" и "ping6" бинарный

0
Можете ли вы попробовать пинговать адрес с добавленным индексом зоны / интерфейса? Формат `address% zone`, например,` fe80 :: 21c: 1cff: fe00: 3de4% eth0` в Linux; правильный номер можно найти в таблице из `route print` на Windows grawity 5 лет назад 0

1 ответ на вопрос

0
harrymc

Для локальных IPv6-адресов вам всегда нужно указывать интерфейс. Причина в том, что один и тот же адресный блок (префикс) используется в каждой сети: адрес fe80::21c:1cff:fe00:3de3уникален только для конкретной ссылки (интерфейса). На другой ссылке тот же адрес может быть использован для совершенно другого устройства.

Из-за этого локальные адреса ссылок обычно не очень полезны для ручного использования, так как вам нужно указывать интерфейс каждый раз. На другом компьютере имя интерфейса может отличаться, поэтому вы не можете просто отправить кому-либо ссылку с адресом, поскольку вы не знаете, какое имя интерфейса для этой ссылки находится на его стороне.

Чтобы не указывать интерфейс, вам понадобятся «настоящие» адреса IPv6 с глобальной областью действия, которую вы можете маршрутизировать.

Например, вы можете использовать https://cd34.com/rfc4193/, где вы вводите MAC-адрес, и он будет выполнять вычисления и возвращать блок адресов IPv6 для использования.

В вашем случае после того, как один компьютер отправил эхо- запрос другому, его IPv6-адрес и интерфейс были известны целевому компьютеру, поэтому он мог выполнить эхо-запрос.