Как найти все 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 также не будет отвечать на эти запросы.