Laden...

IpAdress MapToIP Methoden liefern eventuell falsche Ergebnisse für IPv4 und IPv6?

Erstellt von ClaraSoft vor 3 Jahren Letzter Beitrag vor 3 Jahren 454 Views
C
ClaraSoft Themenstarter:in
55 Beiträge seit 2020
vor 3 Jahren
IpAdress MapToIP Methoden liefern eventuell falsche Ergebnisse für IPv4 und IPv6?

Hallo,

Ich habe gestern festgestellt, das man die IPv6 Loopback Addresse nicht in die entsprechende IPv4 Loopback Adresse umwandeln kann bzw. das Ergebnis entspricht nicht dem was ich erwarten würde.

Die Loopback Addresseen sind ::1 für IPv6 und 127.0.0.1 für IPv4.

Wenn ich nun ::1 zu IPv4 mappe bekomme ich 0.0.0.1 als Ergebnis zurück, erwarten würde ich hier aber 127.0.0.1. Für Andere IPv6 Addressen scheint dies zu jedoch richtig zu Funktionieren.

Umgekehrt verhält sich die Methode MapToIPv6 bei IPv4 Addressen auch etwas seltsam.
So wird bei 127.0.0.1 folgendes einfach davor ::ffff: gehängt, das scheint generell bei jeder IPv4 Addresse der Fall zu sein.

Test App:


class Program
    {
        static void Main(string[] args)
        {
            var ipAddresses = Dns.GetHostAddresses("localhost");
            //var ipAddresses = Dns.GetHostAddresses(Dns.GetHostName());
            var ipAddress = ipAddresses[0];

            Console.WriteLine($"Loopback IPv6: {ipAddress.MapToIPv6()}");
            Console.WriteLine($"Loopback IPv4: {ipAddress.MapToIPv4()}");

            ipAddress = ipAddresses[ipAddresses.Length -1];

            Console.WriteLine($"Loopback IPv6: {ipAddress.MapToIPv6()}");
            Console.WriteLine($"Loopback IPv4: {ipAddress.MapToIPv4()}");

            Console.ReadKey();
        }
    }

Ausgabe für localhost:


Loopback IPv6: ::1
Loopback IPv4: 0.0.0.1
Loopback IPv6: ::ffff:127.0.0.1
Loopback IPv4: 127.0.0.1

Ausgabe für Hostname


Loopback IPv6: fe80::e83a:b1d0:426d:8f8d%21
Loopback IPv4: 66.109.143.141
Loopback IPv6: ::ffff:192.168.178.20
Loopback IPv4: 192.168.178.20

Ist das verhalten korrekt oder sollte ich das als Bug melden? Ich bin mir nicht sicher. Was meint ihr?

T
2.219 Beiträge seit 2008
vor 3 Jahren

Die Programmierung von MapToIp wandelt nur die Bytes der entsprechenden IP von v4/6 oder umgekehrt.
Was die Programmierung nicht macht, ist eben spezielle Adressen wie die Loopback Adressen zu berücksichtigen.
Dafür müsstest du die vermutlich was eigenes bauen.

MapToIpv4

Nachtrag:
Als Anlauf kannst du dafür aus IpAddress dann Loopback und IPv6Loopback verwenden.
Nur falls du es dringend brauchst 😃

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.