Gewöhnen Sie sich noch daran, aber jeder da draußen, der die beste Möglichkeit zum Abrufen aller IP-Adressen in einem Netzwerk, das IPV6 ist, kennt?C# - So finden Sie alle IPV6-IP-Adressen im LAN
Antwort
Pinging ff02::1
auf einer bestimmten Schnittstelle ist eine Möglichkeit, alle Knoten auf dieser Schnittstelle auf die Ping antworten zu fragen. Es ist natürlich Sache jedes Knotens festzustellen, ob sie tatsächlich antworten.
ff02
ist die prefix for the link-local multicast scope und ::1
ist das Ziel "alle Knoten". In der Praxis müssen Sie wahrscheinlich auch eine Schnittstellennummer hinzufügen, z. ff02::1%3
für die Schnittstellennummer 3. Dies liegt daran, dass Sie angeben müssen, an welcher Schnittstelle der Ping gesendet werden soll.
Ich weiß nicht, wie dies in C# zu tun, noch könnte ich es auf Windows 10 cmd.exe, ping
würde nur sagen, es gibt keine Antwort. Aber auf meinem OS X Laptop, es funktioniert:
:; 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
Wenn Sie schauen, um Ihr eigenes Programm läuft auf anderen Knoten im LAN zu verbinden, sollten Sie wahrscheinlich Setup eine bestimmte Multicast-Adresse für diesen Zweck oder die Verwendung ff02 :: 1 mit einem bestimmten UDP-Port. Dies funktioniert bei IPv4 und IPv6 meistens genauso.
Edit: Gerade aufgefallen, dass es zumindest standardmäßig scheint, wird Windows 10 auch diese Pings nicht beantworten.
IP wurde nie wirklich entworfen, um dies zu erleichtern. Selbst mit IPv4 könnte die Brute-Force-Methode in großen Subnetzen lange dauern. Mit IPv6 und Subnetzen, die 18.446.744.073.709.551.616 mögliche Adressen zulassen, werden bei einer Million Adressen pro Sekunde 584.942 Jahre benötigt, um alle zu scannen. Sie sollten IPv6 ND (Neighbor Discovery) betrachten. –