2016-04-08 15 views
0

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

+1

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. –

Antwort

1

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.