Externe und interne IP des Computers ermitteln

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    Externe und interne IP des Computers ermitteln

    Hallo allerseits :)

    Ich möchte die externe und interne IP meines Computers, und wirklich nur des Computers, auf dem das Programm läuft, ermitteln. Ich habe bislang Folgendes:

    VB.NET-Quellcode

    1. ​Private HostName As String = Dns.GetHostName()
    2. Private host As IPHostEntry = Dns.GetHostEntry(HostName)
    3. Private addresses As IPAddress() = host.AddressList
    4. Public MeineIPAdressen As New List(Of String)


    Dabei spuckt er mir in MeineIPAdressen einige IP-Adressen in unterschiedlichen Formaten aus.

    Ich nehme an das sind dann alle Geräte in meinem (W)LAN... Woher weiss ich jetzt aber, welche intern, welche extern, und vor allem die des eigenen Computers ist?

    Ich habe mal gegoogelt habe aber nichts aktuelles(!) gefunden... Bin da selber nicht auf dem neuesten Stand bezüglich "normale" IP, IPv4 und IPv6 etc...

    Kann mir jemand was dazu sagen und Licht ins Dunkel bringen?
    Laut Internet ist host.AddressList(0).ToString deine lokale IP, also der 1. Wert der Liste. Was die anderen sind, weiß ich nicht, habe es aber auch nicht selbst getestet.

    Die öffentliche bekommst du nicht lokal raus, sofern du nicht direkt mit dem Internet verbunden bist. Bist du hinter einem Router (der Regelfall), so musst du die IP entweder vom Router abfragen (sehr individuell) oder über einen öffentlichen Dienst, sowas wie wieistmeineip.de/. Oder einfach eine simple PHP-Datei (oder ASP etc.) auf den eigenen Webspace legen und abfragen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Marcus Gräfe schrieb:

    Laut Internet ist host.AddressList(0).ToString deine lokale IP, also der 1. Wert der Liste. Was die anderen sind, weiß ich nicht, habe es aber auch nicht selbst getestet.



    Ja da spuckt er mir den Computername aus...

    Marcus Gräfe schrieb:

    so musst du die IP entweder vom Router abfragen (sehr individuell) oder über einen öffentlichen Dienst, sowas wie wieistmeineip.de/. Oder einfach eine simple PHP-Datei (oder ASP etc.) auf den eigenen Webspace legen und abfragen.

    Ich versuche ja, meinen eigenen Computer als Streamingserver für Musik fungieren zu lassen. Klappt auch bis jetzt übers (W)LAN, aber halt nicht übers Internet (die lokale IP fängt ja denke ich immer mit 192.168.... an....
    Die zwei IPs die mir wieistmeineip.de ausspuckt hab ich probiert das hat nicht funktioniert... Kann aber sein dass das an meiner Firewall liegt, muss ich mal noch probieren... Über den Router abfragen meinst du wahrscheinlich über das UI, das jeder Internetrouter heutzutage anbietet... Wäre aber gut das programmatisch zu können... PHP und ASP sind mir neue Begriffe, wobei ASP ja glaube ich Active Server Pages heisst... Ist das was du da beschreibst was grösseres?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kafffee“ ()

    Hi

    Schau mal hier: wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2

    K.A. ob da auch die GUI mit bei ist. Ach ja, ich glaub da musst Du den verwendeten Port auch in deiner Firewall/Router nach außen öffnen (Portforwarding?). Bedenke auch das wenn du zb mit 128kb/s nach außen sendest, das jeder der sich in den Stream klinkt mit 128kb/s versorgt wird und da brauchst schon eine sehr hohe Uploadrate um alle entsprechend bedienen zu können. Sonst fängt das irgendwann an zu stottern. Wenn man nach außen streamen möchte, macht es auch Sinn wenn man eine feste externe IP Adresse besitzt. Da gibt es ja diverse Anbieter für.

    Achtung bei öffentlichen Streams. Da fallen dann GEMA und sonstige Gebühren an.

    Also die GUI gibt es hier: sourceforge.net/projects/shoutcastgui/

    Ist schon ein paar Jahrzehnte ;) her das ich das mal zum Streamen genutzt hatte.
    Mfg -Franky-

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „-Franky-“ ()

    kafffee schrieb:

    Ja da spuckt er mir den Computername aus...

    Bei mir allerdings nicht. Er spuckt bei mir 6 IPs aus. Die 3. ist interessanterweise meine externe IP, aber IPv6. Die 6., also in meinem Fall die letzte, ist meine lokale IPv4-Adresse. Die anderen 4 ... keine Ahnung.

    kafffee schrieb:

    Ist das was du da beschreibst was grösseres?

    Nein, einen entsprechenden PHP-Quellcode findest du hier: w3resource.com/php-exercises/php-basic-exercise-5.php
    Das einfach z. B. als ip.php auf (d)einem Webspace speichern und diese Datei aufrufen. Die Rückgabe kannst du dann mit VB als String auslesen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Drei Tage spääääter - kenn ich meine internen IPs jetzt so langsam auswendig, zumindest die "normalen", also nicht v4 oder v6...

    Für die externe hab ich das hier gefunden:

    ifconfig.me/ip

    Einfacher geht's nicht, besonders das parsen....

    @-Franky-

    Ja Shoutcast ist mir auch schon übern Weg gelaufen. Habs bis jetzt (erfolglos) mit Icecast versucht, also fast erfolglos.... Übers (W)LAN kann ich schon streamen....

    Als ich in den FAQs von Icecast dann gelesen hab, dass man fürs externe Streamen einen Dns A oder AAAA Eintrag braucht hab ichs mal
    mit Shoutcast versucht und finde es eigentlich einiges leistungsfähiger, v.a. wird man sehr freundlich mit Infos versorgt, z. B. dass es Shoutcast nicht schafft, dich auf der öffentlichen IP zu erreichen und dir dann gleich einen Link ausspuckt, der dir ausführlich sagt, woran das liegen kann.... So wies aussieht ist es bei mir die Tatsache, dass der von dir besagte Port nicht offen ist...
    So also bin ich in die Routereinstellungen und Firewall Einstellungen und hab den Port dann weitergeleitet bzw geöffnet. Funktioniert nur leider nicht, habs mit drei Online-Portcheckern versucht und auch über die Kommandozeile mittels netstat -an....
    Das treibt mich jetzt grad echt um, hat mir jemand vielleicht einen Tipp? Ich hab den mitgelieferten Kabelrouter des Providers meiner Wahl und dran hängt über Ethernet noch ein WLAN Router, weil der Empfng vom Standardrouter schlecht ist. Wäre für einen Tipp wirklich dankbar, ich werde morgen auch mal bei meinem Provider anrufen....
    Hi

    Ich muss mal schauen ob ich noch den Shoutcast Server inkl. GUI auf meinem Laptop habe. Die cfg zum Server musste auch angepasst werden (Port, Passwort, max User u.a.) Einiges ließ sich wohl auch direkt über die GUI steuern. Ich versuche das mal aus meinen Erinnerungen zu rekonstruieren. Wenn der Shoutcast Server gestartet war, solltest Du diesen auch auf dem PC, wo der Shoutcast Server läuft, über die IP des PCs (oder auch einfach über 127.0.0.1) + Portnummer im Browser erreichen. Auf der Website siehst Du diverse Infos. Unter anderem auch die Streamingadresse die so aussehen könnte: h**p://ip:port/stream.m3u oder so ähnlich. Innerhalb Deines Netzwerkes solltest du dann auch den Server über den Browser erreichen können wobei für die IP dann die IP des PCs eingesetzt werden muss, wo der Shoutcast Server läuft. Wenn die Namensauflösung richtig läuft, kann auch der Name des PCs + Portnummer verwendet werden. Die Streamingadresse brauchst ja dann für die üblichen Player (VLC, WinAmp usw) um dann die Musik zu hören.

    Da ich mittlerweile diverse Routerwechsel hatte, kann ich auch nur noch aus Erinnerungen versuchen zu rekonstruieren was ich damals im Router eingestellt hatte. Das ganze nennt sich Portforwarding. Bedeutet das der externe Port auf den internen Port zu einer bestimmten IP durchgereicht werden soll. Also wenn der Shoutcast Server den Port 12345 verwendet, muss der externe Port 12345 auf den internen Port 12345 und zur internen IP, auf dem der Shoutcast Server läuft, geöffnet werden. K.A. mehr ob ich Firewalltechnisch noch was auf dem Router eingestellt hatte. Sollte das mit dem Portforwarding reichen, dann sollte auch im Browser über Deine externe IP + Portnummer die Webseite von Deinem Shoutcast Server erreichbar sein.

    Du verwendest da zwei Geräte. Kabelrouter + noch eins für LAN/ WLAN. Da hab ich keine Ahnung wo Du was einstellen musst damit der interne Shoutcast Server von extern erreicht werden kann. Evtl. ein Portforwarding im Router auf die IP deines Zweitgerätes und noch ein Portforwarding im Zweitgerät auf die IP wo der Shoutcast Server läuft.
    Mfg -Franky-

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „-Franky-“ ()

    @kafffee Wenn Du ne Fritz!Box hast, kannst Du Dir auch von der Deine IPs anzeigen lassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi

    Mit IceCast kenn ich mich nicht aus. Sollte aber im Grunde genauso funktionieren wie bei ShoutCast. Hab mal auf meinem Lappi geschaut. Da war noch eine alte Version vom ShoutCast Server installiert. Also mal fix die aktuelle Shoutcast DNAS/win64 v2.6.1.777 installiert und dazu die GUI für die v2. Ich verwende die sc_serv_basic.conf wo ich halt noch den Port auf 8000 und die Passwörter geändert habe. Im ShoutCast DSP entsprechende Einstellungen für den Output1 vorgenommen (MP3, 128kb/s, 44100Hz, Stereo) und das Passwort hinterlegt das ich ja in der sc_serv_basic.conf angegeben habe und auf Connect (der ShoutCast Server muss schon gestartet sein). Als Source/Player hab ich den WinAmp. In meiner FritzBox hab ich dann nur noch unter Internet -> Freigaben mein Laptop (wo ja der ShoutCast Server läuft) als HTTP-Server, Protokoll TCP, IPv4/6, nur Port 8000 (Extern/Intern) freigegeben. Fertig. Und der Audiostream ist intern sowie extern abrufbar. Wenn Du mal lauschen möchtest: 95.33.23.146:8000 Für andere Player lädt man sich halt die PLS unter dem Menüpunkt "Listen" herunter und öffnet diesen mit seinem bevorzugtem Player. Falls der Stream anfängt zu stottern, sind da zu viele Hörer auf dem Stream. Ich hab da noch keine Begrenzung der maximalen Hörer in der conf Hinterlegt. Ich lass den Stream mal für ein paar Stunden laufen. Danach schalte ich den wieder ab.

    Im Screenshot siehst halt die Source (WinAmp), den ShoutCast DSP, die GUI vom ShoutCast Server und den VLC den ich über die heruntergeladene PLS gestartet habe.
    Bilder
    • ShouCast.png

      857,7 kB, 1.600×900, 92 mal angesehen
    Mfg -Franky-

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-Franky-“ ()

    @-Franky-

    Ja hab probiert das Problem mal einzukreisen. Das scheint nicht an mir zu liegen sondern Firewall/Router/Provider. Leider hab ich keine Fritzbox...
    Mein Provider scheint einen DS Lite Tunnel zu verwenden, also hab ich mal angerufen und mir eine "echte IPv4 Adresse" freischalten lassen. Ausserdem hab ich dem Hersteller meines Kabelmodems mal ne Mail geschrieben und meinen 2. WLAN Router zur Sicherheit mal komlett ausgestreckt. Diese Freischaltung dauert wohl einige Stunden bin mal gespannt...

    Weisst du vielleicht wie ich testen kann ob ich die IPv4 schon habe und/oder ein bestimmter Port frei ist?
    Hi

    Mein Stream ist wieder offline. Da ich deinen Kabelrouter und das Webinterface dazu nicht kenne, kann ich dir nicht sagen wo du entsprechendes sehen oder einstellen kannst. Vllt siehst du auf wieistmeineip oder in deinem Router dann zwei IPs. Eine IPv4- und eine IPv6-Adresse. Oder mach ein Ping auf Google und schau ob Dir eine IPv4- oder eine IPv6-Adresse angezeigt wird. Soweit mir bekannt, sollte man Ports oberhalb von 1024 frei nutzen können. Deswegen hatte ich für den Shoutcast Server den Port 8000 in der Config festgelegt. Wenn du intern auf das Webinterface von Icecast oder Shoutcast zugreifen kannst, ist der Port von keinem anderen Dienst/Service belegt. Der Rest nach draußen ist halt das Portforwarding im Router. Vllt gibt es ja eine Anleitung für deinen Router wie das Portforwarding einzurichten ist.
    Mfg -Franky-
    Ich habe auch schon mal nach IP-Adressen gesucht. Schau dir mal diesen Beitrag an: https://stackoverflow.com/questions/6803073/get-local-ip-address

    Da vor allem, wenn du weiter runter scrollst, ein Beitrag, der das ganze mittels NetworkInterface aufzeigt. das bietet viele Möglichkeiten.

    Bzgl der externen IP-Adresse: Die kannst du, wie du schon rausgefunden hast, nur durch WebServices herausfinden, da sie nicht dir, sondern deinem Anbieter gehört :)
    Hi

    Es gibt ja mehrere Möglichkeiten alle lokalen Netzwerkadapter und deren Eigenschaften aufzulisten. Ich bevorzuge hier den Weg per API GetAdaptersAddresses und dann gibt es noch diverse COM-Interfaces wie INetworkListManager die weitere Infos liefern oder mit denen man die Adapter ein oder ausschalten und anderes Zeug anstellen kann.
    Mfg -Franky-
    @-Franky-
    Hab jetz (zumindest wie es aussieht) meine feste IP4 bekommen...

    Hab mir auch das neuste SHOUTCast runtergeladen. Da kam bisher der Fehler nach dem connecten, dass meine externe IPv4 nicht erreichbar sei. Also hab ich die Firewall komplett ausgemacht, dann kam der Fehler nicht mehr. Aber wenn ich dann den Stream vom Handy aus über mobile Daten den Stream anhören will, kommt trotzdem ein Timeout...

    Ausserdem kommt immer die Meldung, ich soll doch publicserver=always setzen im config file, obwohl ich das gemacht hab...

    Sehe ich das richtig: In meinen Routereinstellungen Port 8000 weiterleiten, dabei die IPv4 des Rechners angeben, von dem der Stream kommt? Oder die IPv6?

    Ich krieg jetzt echt langsam graue Haare...
    Hi

    Das mit dem publicserver musst Du nicht auf always setzen. Das brauchst Du nur wenn Du auf öffentlichen Streaminganbietern auch gelistet sein möchtest. Da das wahrscheinlich ja nur für Dich sein soll, lass den Stream auf privat. Die Portnummer kannst ja frei wählen (sollte aber > 1024 sein). Die muss aber in der config eingestellt werden. Ich hab für mich den Port 8000 gewählt. Wie das jetzt in deinem Router einzustellen ist, kann ich dir nicht beantworten. Schaut ja bei den Routern anderer Anbieter immer anders aus. Aber grob kann man sagen das du eine Netzwerkfreigabe in deinem Router einrichten musst. Ich kann dir nur sagen wie das auf einer FritzBox funktioniert. Da geht man im Router auf Internet, dann Netztwerkfreigaben. Hier auf neue Netztwerfreigabe klicken und dann wird man schon gefragt was es denn werden soll (FTP, HTTP usw.). Ich hab hier den HTTP Server ausgewählt und dann kommt schon die Frage nach dem Protokoll (hier hab ich TCP ausgewählt), nach dem Port (hier gab ich festgelegt das der externe Port auf den gleichen internen Port, also bei mir 8000, und auf die IP bzw den Namen meines Laptops, auf dem der ShoutCast Server läuft, freigeben werden soll, und noch die Einstellung gemacht das dies für IPv4 und für IPv6 gelten soll). Das ganze dann übernehmen und noch mal bestätigen. Das war es dann schon damit das nach extern funktionierte. Das beste ist Du schaust mal ob du irgendwo im Internet eine Anleitung findest wie und wo das auf deinem Router einzustellen geht. Wenn soweit alles passt, solltest Du vom Handy aus zumindest über deine externe IP und Portnummer auf die Webseite von Deinem Shoutcast Server kommen.

    Edit: Wenn Du den Shoutcast Server über die GUI startest, sollte auch im Log-Fenster sowas stehen wie: Intern 127.0.0.1 Extern [die externe IP] <- also die IP (+ Portnummer) über den Du den Shoutcast Server, wenn auch alles im Router eingestellt ist, von extern erreichst. Firewalltechnisch musste ich auf dem Router nichts einstellen.

    Genau weiß ich das gar nicht mehr. Durchaus möglich das beim ersten Start des Shoutcast Server die Windows Firewall gefragt hat ob der Shoutcast Server Zugriff auf das Internet erhalten darf. Das muss natürlich zugelassen werden. Vllt komme ich am Wochenende dazu mal in die Windows Firewall zu schauen ob da ein Eintrag dazu vorhanden ist.
    Mfg -Franky-

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-Franky-“ ()

    Marcus Gräfe schrieb:

    Laut Internet ist host.AddressList(0).ToString deine lokale IP, also der 1. Wert der Liste.


    Bei mir ist die erste irgendeine IPv6 und die letzte die lokale IP des Rechners.(von 5 Einträgen) Könnte aber an NordVPN liegen, die Software hat einen weiteren Netzwerkadapter installiert.
    Um ganz sicher die Lokale IP zu ermitteln einfach durch das Array iterieren und abfragen ob diese IP.AddressFamily = AddressFamily.InterNetwork ist. Die öffentlich ist am besten via externer Hilfe zu bekommen.

    Falls das noch mal jemand braucht:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Ip As IPAddress = Nothing
    2. If GetLocalIP(Ip) Then
    3. Debug.WriteLine("Lokale IP: " & Ip.ToString())
    4. End If
    5. If GetPublicIP(Ip) Then
    6. Debug.WriteLine("Öffentliche IP: " & Ip.ToString())
    7. End If

    VB.NET-Quellcode

    1. Public Function GetLocalIP(ByRef ipAddress As IPAddress) As Boolean
    2. Dim ips As IPAddress() = Dns.GetHostEntry(Dns.GetHostName()).AddressList
    3. For Each ip As IPAddress In ips
    4. If ip.AddressFamily = AddressFamily.InterNetwork Then
    5. ipAddress = ip
    6. Return True
    7. End If
    8. Next
    9. Return False
    10. End Function
    11. Public Function GetPublicIP(ByRef ipAddress As IPAddress) As Boolean
    12. Dim w As New Net.WebClient()
    13. Dim res As String = w.DownloadString("http://checkip.dyndns.org")
    14. res = System.Text.RegularExpressions.Regex.Replace(res, "[^0-9.]", "")
    15. Return IPAddress.TryParse(res, ipAddress)
    16. End Function


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Takafusa“ ()

    Vielen Dank erstmal für die vielen Antworten, komm gar nicht dazu das alles mal zu testen, da ich mit meinem Musikstreaming irgendwie auf keinen grünen Zweig komm...

    Übers (W)LAN streamen bekomm ich hin, bloss nicht übers Internet, wie gesagt. Obwohl es eigentlich funktionieren sollte, sagen auch die Spezialisten aus dem Forum der bass.dll von Un4Seen.

    Jedenfalls glaube ich, dass das irgendwie mit meinen Netzwerksettings, respektive Router-und Firewallsettings bzw. allgemein mit meinem Internetanbieter oder auch Kabelmodem zusammenhängt.

    Also hab ich mich entschieden, hier mal ein kleines Beispielprogramm hochzuladen, vielleicht funktioniert dieses ja bei jemand anderem... Es ist eigentlich selbsterklärend, in der Textbox2 gibt man seine lokale IPv4 Adresse ein dann einen Doppelpunkt und dann einen beliebigen offenen Port. Diesen Port sollte man dann wahrscheinlich noch in seinen Router und Firewallsettings öffnen oder wie man auch sagt weiterleiten (Port Forwarding). Dann sollte man in einem beliebigen Player, der MP3-Streams abspielen kann, den Stream auch ausserhalb des eigenen Netzwerks abspielen können, wenn man da seine externe (!) IPv4 Adresse eingibt plus Doppelpunkt plus die Portnummer, die man festgelegt hat. Oder auch einfach im Webbrowser. Ob das so geht oder evtl. auch über IPv6 weiss ich nicht, bei mir geht wie gesagt weder noch... Also einfach mal bisschen damit rumspielen...
    Seine externre IPv4 bekommt man hier:
    ifconfig.me/ip
    oder auch hier mit der IPv6 zusammen:
    wieistmeineip.de/

    Jedenfalls kein Problem sollte es sein, das lokal abzuspielen. EInfach dassselbe abspielen, was man in Textbox2 eingegeben hat.

    Das Ganze läuft unabhängig von ShoutCast oder IceCast...

    Abhängigkeiten:
    bass.net.dll (.NET Wrapper)
    bass.dll
    bassenc.dll (addon)
    bassenc_mp3,dll (addon)
    bassmix.dll (addon)

    Alles erhältlich über un4seen.com/bass.html
    und die Add-Ons:
    un4seen.com/bass.html#addons

    oder bei mir gerne per eMail.

    Ich hoffe echt dass das bei jemand anders funktioniert.

    Bis dahin, kafffee
    Dateien
    Was hat Ian denn da gemacht, wusste garnet das er ein nuget Päckchen mit der BASS parat hat. Aber bei mir knallt das immer, der will die bassenc_mp3 nicht finden, die ist aber neben der exe wie auch im addon ordner, egal ob ich für x86 oder x64 oder Any CPU kompiliere. Selbst wenn ich die von Hand laden will mit BassEnc_Mp3.LoadMe(PFAD) geht es nicht. Hast du was vergessen zu erwähnen oder spinnt die BASS bei mir rum?
    Kenne die Bass recht gut, aber da scheint sich einiges getan zu haben.(die bassenc_mp3.dll ist jedenfalls neu, war doch mal bassenc.dll).