Auslesen von IP Adressen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Peter329.

    Auslesen von IP Adressen

    Hi,

    ich hoffe ich bin hier richtig.

    Ich würde gern die IP Adressen auslesen, die einem Host oder einer URL zugeordnet sind. Dazu verwende ich folgendes Coding:

    VB.NET-Quellcode

    1. Debug.Print("Host / URL: " & TxtHostNameURL.Text)
    2. For Each IpAddress As Net.IPAddress In IpAddressList
    3. Debug.Print(IpAddress.ToString)
    4. Debug.Print(" IsIPv6LinkLocal=" & IpAddress.IsIPv6LinkLocal)
    5. Debug.Print(" IsIPv6Multicast=" & IpAddress.IsIPv6Multicast)
    6. Debug.Print(" GetType=" & IpAddress.GetType.ToString)
    7. Debug.Print(" AddressFamily=" & IpAddress.AddressFamily)
    8. Debug.Print(" IsIPv6Multicast=" & IpAddress.IsIPv6Multicast)
    9. Debug.Print(" IsIPv6SiteLocal=" & IpAddress.IsIPv6SiteLocal)
    10. Debug.Print(" IsIPv6Teredo=" & IpAddress.IsIPv6Teredo)
    11. Try
    12. Debug.Print(" ScopeId=" & IpAddress.ScopeId)
    13. Catch ex As Exception
    14. Debug.Print(" ScopeId=N/A")
    15. End Try
    16. Debug.Print("")
    17. If IpAddress.AddressFamily = Net.Sockets.AddressFamily.InterNetwork Then
    18. IPType = "LAN"
    19. Else
    20. IPType = "NET"
    21. End If
    22. IPName = IpAddress.ToString
    23. 'If IPName.ToLower.StartsWith("fe80:") Then Continue For
    24. If IpAddress.IsIPv6LinkLocal Then Continue For
    25. DgvIP.Rows.Add(IPType, IPName)
    26. Next
    27. DgvIP.ClearSelection()


    Für meinen "Host" erhalte ich folgendes Display (s. Anhang)

    Das ist alles ganz schön und gut. Nur erhalte ich ZWEI Internet Addressen ... und nur eine davon ist die "richtige" !

    Das Debug Listing zeigt folgendes an:

    Quellcode

    1. 2003:de:2f30:3f00:c950:13e0:a9ba:f232 <== this is currently used
    2. IsIPv6LinkLocal=False
    3. IsIPv6Multicast=False
    4. GetType=System.Net.IPAddress
    5. AddressFamily=23
    6. IsIPv6Multicast=False
    7. IsIPv6SiteLocal=False
    8. IsIPv6Teredo=False
    9. ScopeId=0
    10. 2003:de:2f30:3f00:1576:e4:9badb928 <== staticly assigned ?
    11. IsIPv6LinkLocal=False
    12. IsIPv6Multicast=False
    13. GetType=System.Net.IPAddress
    14. AddressFamily=23
    15. IsIPv6Multicast=False
    16. IsIPv6SiteLocal=False
    17. IsIPv6Teredo=False
    18. ScopeId=0


    Die erste Addresse ist die derzeit verwendete IP Addresse (wie ich etwa mit /whatismyipaddress oder meinen Router Dialog heraus finden kann).

    Die beiden Adressen haben im Debug aber genau die gleichen Properties !

    Wie kann ich denn herausfinden welche Addresse derzeit aktiv ist. Möglich sein muss das, denn whatismyipaddress kann das ja auch.

    Vielleicht ist es einfach die Reihenfolge ... also die erste Addresse dieser Art ist die aktuelle. Aber das würde ich schon bestätigt haben wollen.

    Ich hoffe, ich habe mein Problem verständlich machen können.

    Ich weiß, dass es dazu in diesem Forum schon einige Threads gibt. Aber irgendwie werde ich da trotzdem nicht so richti schlau draus. Für Ratschläge, die möglichst auch die Hintergründe dieser vertracken IP-Addressen erhellen, wäre ich sehr dankbar.

    LG
    Peter
    Bilder
    • s 2020-12-17 13-44-481.jpg

      22,21 kB, 796×160, 77 mal angesehen
    Das ist etwas schwieriger, du kannst in mehreren Netzwerken gleichzeitig aktiv sein und IPv6 ist nochmal ne andere Geschichte, da hast du unter Windows meist drei Adressen pro Interface:
    1. "normale" IPv6 Adresse
    2. "Temporäre" IPv6 Adresse (Privacy Extensions)
    3. Link-local IPv6 Address
    Genau ... es gibt DREI IPv6 Addressen ...

    Die Link-local IPv6 address ist für mich wohl uninteressant ... die schließe ich aus:

    VB.NET-Quellcode

    1. If IpAddress.IsIPv6LinkLocal Then Continue For


    Verbleiben also noch die "normale" und die "temporäre" Addresse ... und die werden ja auch angezeigt.

    Meine Frage ist jetzt: wie unterscheide ich die ?

    Die Properties, die ich zu fassen bekommen sind identisch (bis auf die IP Addresse natürlich).

    Also, ganz konkret gefragt: wie kann ich feststellen, ob es sich um die "normale" oder um die "temporäre" Addresse handelt ?

    LG
    Peter