6

С помощью команды ping6 вы можете найти локальный адрес хоста ipv6 вне интерфейса, используя:

 ping6 -I eth0 ff02::1

Это пингует все в подсети, и вы можете видеть, что там. Это можно посмотреть в ndp .

Можно ли пропинговать все в префиксе, чтобы вы могли определять адреса одноадресной рассылки хостов в глобальном масштабе? Обратите внимание, что это предполагает, что адреса ipv6 назначаются статически, а не автоматически настраиваются с помощью rad поэтому мы не можем просто определить его по mac-адресу.

В терминах ipv4, это будет функционально эквивалентно ping -b 192.168.1.0/24

Допустим, наш префикс 2001:470:1f09:131::/64 , я ищу способ сделать что-то вроде:

ping6 -b 2001:470:1f09:131::/64

(Я знаю, что -b размер буфера, это только для иллюстрации)

Обратите внимание, что это OpenBSD, который не поддерживает IP-адрес в -I:

 -I interface
         Source packets with the given interface address.  This flag ap-
         plies if the ping destination is a multicast address, or link-lo-
         cal/site-local unicast address.

4 ответа4

4

Соединение битов из ответа Селады и комментария Борта дает желаемый результат: вам нужны опции -I и -S .

Таким образом, предполагая, что сетевой интерфейс vr0 с IPv6-адресом 2001:1418:153:0:2e0:c5ff:fe3f:caef вам потребуется эта команда для выполнения широковещательного пинга:

ping6 -I vr0 -S 2001:1418:153:0:2e0:c5ff:fe3f:caef ff02::1

(Удаление -S приводит к эхо-ответам только с локальных адресов ссылок; удаление -I приводит к тому, что больше вообще нет ответов.)

2

Аргумент -I может быть как IP-адресом, так и именем интерфейса. Похоже, если вы укажете имя интерфейса, то он использует локальный адрес ссылки на этом интерфейсе в качестве адреса источника. Хитрость в том, чтобы получать ответы от хостов, поступающих с их глобальных адресов области, состоит в том, чтобы отправить пинг с вашего собственного адреса глобальной области:

ping6 -I 2001:db8:xxxx::your:own:ip:address ff02::1
0

Пытаться:

ping6 ff02::1%yournic0

Где yournic0 - это любое имя интерфейса, стоящее перед рассматриваемой ссылкой.

0
ping6 -c4 ff02::1%$(ip r|grep default|head -n1|awk '{print $NF}')

-c4 чтобы он не продолжался вечно
ff02::1 широковещательный адрес
% (вы можете использовать -I для интерфейса)
ip r | grep default | awk '{print $ NF}' # находит интерфейс по умолчанию

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .