Как найти все IP-адреса IPV6 в локальной сети

Все еще привыкаешь к этому, но кто-нибудь, кто знает лучший способ получить все IP-адреса в сети, которые являются IPV6?

1 ответ

Pinging ff02::1 на определенном интерфейсе это способ попросить все узлы на этом интерфейсе ответить на эхо-запрос. Конечно, каждый узел должен определить, действительно ли они отвечают.

ff02 является префиксом локальной многоадресной области связи, и ::1 это пункт назначения "все узлы". На практике, вы, вероятно, также должны добавить номер интерфейса, например, ff02::1%3 для интерфейса номер 3. Это потому, что вы должны указать, на какой интерфейс отправлять пинг.

Я не знаю, как это сделать в C#, и при этом я не мог заставить его работать на Windows 10 cmd.exe, ping просто сказал бы, что нет ответа. Но на моем ноутбуке с OS X это работает:

:; ping6 ff02::1%en0
PING6(56=40+8+8 bytes) fe80::xxxx:xxxx:xxxx:xxxx%en0 --> ff02::1%en0
16 bytes from fe80::xxxx:xxxx:xxxx:xxxx%en0, icmp_seq=0 hlim=64 time=0.089 ms
16 bytes from fe80::yyyy:yyyy:yyyy:yyyy%en0, icmp_seq=0 hlim=64 time=2.160 ms
16 bytes from fe80::zzzz:zzzz:zzzz:zzzz%en0, icmp_seq=0 hlim=64 time=2.238 ms

Если вы хотите подключиться к своей собственной программе, работающей на других узлах в локальной сети, вам, вероятно, следует установить для этого определенный адрес многоадресной рассылки или использовать ff02::1 с определенным портом udp. Это работает в основном одинаково на IPv4 и IPv6.

Изменить: Просто заметил, что, по крайней мере, по умолчанию, Windows 10 также не будет отвечать на эти запросы.

Другие вопросы по тегам