Перейти к содержимому

ipv6 найти все хосты в префиксе

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. 
7 891 просмотр
Paul спросил 13 лет назад
P 47 628

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результатов, больше не получая ответов.)

Vucar Timnärakrul ответил 12 лет назад
V 626
2

The -I argument can be an IP address as well as an interface name. It looks like if you specify an interface name then it uses the link-local address on that interface as the source address. The trick to getting replies from hosts coming from their global scope addresses is to send the ping from your own global scope address:

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

Спасибо - это полезно, к сожалению, я не включил ОС в этот вопрос, и OpenBSD не поддерживает IP-адреса в ключе -I. Вопрос обновлен.

Paul · 13 лет назад · 0

Ах, очень плохо. Извините, у меня нет знаний или опыта по OpenBSD :-(

Celada · 13 лет назад · 0
Celada ответил 13 лет назад
C 1 930
0

Пытаться:

ping6 ff02::1%yournic0 

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

Я не понимаю, почему это должно быть понижено: ping ff02 :: 1% eth0 (если у вас есть eth0) работает.

Alexx Roche · 9 лет назад · 0

@AlexxRoche Потому что, как объясняется в оригинальном вопросе, он не дает желаемой информации.

Michael Hampton · 9 лет назад · 0
Glen Neff ответил 12 лет назад
G 29
0
ping6 -c4 ff02::1%$(ip r|grep default|head -n1|awk '') 

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

ip r | awk '/ def / ' # для вас, игроков в анти-grep ;-)

Alexx Roche · 9 лет назад · 1
Alexx Roche ответил 9 лет назад
A 671