staging.inyokaproject.org

Eigene (öffentliche) IP-Adresse heraus finden.

Status: Gelöst | Ubuntu-Version: Kubuntu 22.04 (Jammy Jellyfish)
Antworten |

Zoner

Anmeldungsdatum:
30. August 2019

Beiträge: 121

Ich möchte ein Script schreiben, dass loggt, wann mir welche IP-Adresse vom Provider zugewiesen wurde (IPv4 und IPv6). Also eine regelmäßige Prüfung.

Allerdings scheitert es gerade daran, die IP überhaupt in Erfahrung zu bringen. Im Internet finde ich viele "statische" Lösungen, wie z.B. "curl ifconfig.me".

Ich hätte aber gerne eine flexiblere (und auch datenschutzfreundlichere) Lösung. Ich möchte nicht ständig meine IP Adressen an den selben, amerikanischen Anbieter mitteilen.

Welche Möglichkeiten gibt es, zuverlässig seine öffentlichen IP Adressen auszulesen? Oder ist man zwangsläufig an solch spezielle DNS-Dienste gebunden? Am liebsten würde ich die Geschichte komplett lokal halten und beide Adressen einfach aus meiner Fritzbox heraus lesen.

homer65

Avatar von homer65

Anmeldungsdatum:
8. November 2005

Beiträge: 586

Habe zwar keine komplett lokale Möglichkeit. Aber unter http://45.129.182.115:8080/ip/ip.do kann man seine öffentliche IP Adresse herausfinden. Wenn es jemanden interessiert kann er von mir den Quellcode erhalten. Ist ein sehr kleines Java Servlet. Gruß Christian

homer65

Avatar von homer65

Anmeldungsdatum:
8. November 2005

Beiträge: 586

Ups, hab mal wieder nur die Hälfte gelesen. Mit meiner Adresse kann man nur seine ipv4 Adresse herausfinden nicht aber die ipv6.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

Zoner schrieb:

[…] Welche Möglichkeiten gibt es, zuverlässig seine öffentlichen IP Adressen auszulesen?

Für IPv6 ist das kein Problem, da man nur die lokal benutzen Adressen auslesen muss:

ip -6 addr 

Für IPv4 hinter einem NAT gibt es diese drei Verfahren:

  1. Man installiert auf seinem Router einen DynDNS-Client und lässt diesen seine IPv4-Adresse bei einem DynDNS-Provider seiner Wahl unter einem genehmen Namen veröffentlichen. Dazu muss man sich einen solchen DNS-Namen (z.B. ZuHause.Niemands-Karl.example) erst einmal verschaffen. Man kann sich eine Domain bei einem Provider seiner Wahl kaufen oder den Dienst von AVM kostenfrei nutzen, wenn man eine FritzBox verwendet. Dann erfährt man seine offizielle IP per:

    host ZuHause.Niemands-Karl.example 
  2. Man verwendet eine Gegenstelle im Internet von der Art, wie Du sie bereits genannt hast. Wenn man selbst einen Server im Internet betreibt, kann man sich selbst eine solche Funktionalität mit einem simplen PHP-Skript basteln.

  3. Man verwendet einen STUN-Server. Diese wurde explizit dafür geschaffen, für die Travertierung eines NAT die benötigten Informationen zu liefern. Man benötigt das Paket stun-client und den Namen (ähnlich wie stun.free-server.example) eines STUN-Servers. Freie STUN-Server findet man per Suchmaschine oder man benutzt den seines Providers. Die aktuelle Abfrage läuft per:

    stun stun.free-server.example -v 

    stun schreibt auf stderr.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Zoner schrieb:

Im Internet finde ich viele "statische" Lösungen, wie z.B. "curl ifconfig.me".

Was ist daran "statisch"? Meinst Du Polling?

Ich hätte aber gerne eine flexiblere (und auch datenschutzfreundlichere) Lösung. Ich möchte nicht ständig meine IP Adressen an den selben, amerikanischen Anbieter mitteilen.

Naja, es gibt ja keine Verbindung zu Dir. Du schickst einen Request dahin und er teilt Dir mit, welche Source-IP er gesehen hat.

Welche Möglichkeiten gibt es, zuverlässig seine öffentlichen IP Adressen auszulesen?

Normalerweise würdest Du Deinen Router fragen. Die Fritzbox führt ja ein Log von Events, das auch diese Info enthält. Den Zugriff darauf müsste man skripten können.

Oder ist man zwangsläufig an solch spezielle DNS-Dienste gebunden?

Das ist kein "spezieller DNS-Dienst". Das hat mit DNS gar nichts zu tun. Du schickst einen Request, der Server sagt Dir, welche IP er gesehen hat.

Am liebsten würde ich die Geschichte komplett lokal halten und beide Adressen einfach aus meiner Fritzbox heraus lesen.

s.o.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Du könntest den Artikel FritzBox/Skripte mal durcharbeiten und dann gleich einen „getestet“-Block ergänzen, falls das noch funktioniert.

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

Hallo.

Am liebsten würde ich die Geschichte komplett lokal halten und beide Adressen einfach aus meiner Fritzbox heraus lesen.

Du kannst dir auch einfach von der Fritzbox eine Mail schicken lassen, wo die jeweils (neu) vergebene IP drin steht.

Zoner

(Themenstarter)

Anmeldungsdatum:
30. August 2019

Beiträge: 121

ChickenLipsRfun2eat schrieb:

Hallo!

Du könntest den Artikel FritzBox/Skripte mal durcharbeiten und dann gleich einen „getestet“-Block ergänzen, falls das noch funktioniert.

Bei mir hat keine einzige Option funktioniert. Nach ausführen der Befehle passiert einfach garnichts. (sie werden instant ausgeführt, ohne das aber irgendetwas ausgegeben wird) Bei einer Fritzbox 5590, OS 7.5.

Allerdings stimmt bei mir z.B. das hier auch schon nicht überein:

1
dig 1234567890abcdefgh.myfritz.net A +short

Bei mir lautet die Adresse "https://bla0:ipv6:bla1:bla2:port", nicht wie in der Wiki beschrieben.

chr123 schrieb:

Hallo.

Am liebsten würde ich die Geschichte komplett lokal halten und beide Adressen einfach aus meiner Fritzbox heraus lesen.

Du kannst dir auch einfach von der Fritzbox eine Mail schicken lassen, wo die jeweils (neu) vergebene IP drin steht.

Das kommt aktuell nicht in Frage. Ich nutze aktuell ausschließlich Thunderbird, auf nur einem System, mit der Einstellung EMails herunter zu laden und Serverseitig(beim Mailprovider) zu löschen. Das Script soll seperat auf einem kleinen Home-Server laufen. Da möchte ich keinen extra Mailclient installieren.

Ich werde als nächstes mal die Optionen von kb durchprobieren. Einen dyndns Dienst muss ich z.B. langfristig eigentlich ohenhin wieder einrichten.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14402

Zoner schrieb:

Allerdings stimmt bei mir z.B. das hier auch schon nicht überein:

Teste mal mit:

dig +short myip.opendns.com @208.67.222.222
dig -6 aaaa +short myip.opendns.com @2620:0:ccc::2
stun -v stun.counterpath.com 2>&1 1>/dev/null | grep MappedAddress | sed -e 's/.*MappedAddress = //' -e 's/:.*//' | uniq

EDIT:

BTW: Im source code für Asterisk findest Du die Datei ministun.c,

'https://github.com/themiron/ministun/blob/master/ministun.c'

mit der Du ein binary kompilieren kannst:

$ gcc -o ministunx ministun.c
$ ./ministunx stun.ekiga.net
109.###.###.###

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3793

4 Ways to Find Server Public IP Address in Linux Terminal

Teilmengen-Übereinstimmung mit den von lubux genannten Möglichkeiten.

Marant--

Anmeldungsdatum:
4. April 2022

Beiträge: 744

IPv4, scheint noch zu gehen,

curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

Quelle

FB 6490/07.29

Falls es nicht läuft, ist

(Heimnetz/Netzwerk/Netzwerkeinst./)

"Statusinformationen über UPnP übertragen" aktiv?

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14402

Marant-- schrieb:

IPv4, scheint noch zu gehen,

Bei IPv6 ist es i. d. R. nicht so wichtig, die externe IPv6-Adresse der FritzBox zu kennen (... es sei denn man will von extern die FB erreichen). Jedes Gerät an der FB hat seine eigene externe IPv6-Adresse (d. h. ist "border device"). Nicht ganz so einfach ist es, wenn das Gerät 2 oder mehrere externe IPv6-Adressen hat (... eine für ausgehende v6-Verbindungen und eine mit z. B. statischer Interface-ID, für eingehende v6-Verbindungen).

Zoner

(Themenstarter)

Anmeldungsdatum:
30. August 2019

Beiträge: 121

Danke für eure Hilfe. Ich werde den Thread erstmal auf gelöst stellen und vieliecht später nochmal drauf zurück greifen. Ich habe festgestellt dass ich ersteinmal die Zeit finden muss, mich intensiv in das Thema IPv6 einzuarbeiten, bevor ich fähig bin die richtigen Fragen zu stellen (und auch so manche Antwort hier zu verstehen).

lubux schrieb:

Marant-- schrieb:

IPv4, scheint noch zu gehen,

Nicht ganz so einfach ist es, wenn das Gerät 2 oder mehrere externe IPv6-Adressen hat...

In meinem Fall haben alle Geräte mindestens 5 IPv6 Adressen. Die IPv4 wiederum ist öffentlich statt privat. Meine Lösung ist aktuell täglich ein Screenshot der Fritzbox-Gui (Internetstatus mit den IPs) zu machen und irgendwann, wenn ich die Zeit habe und dieses dämliche IPv6 Thema durchdrungen habe, diese auszuwerten. Aktuell ist das Thema für mich schlimmer als Raketenwissenschaft (mit letzterem kenne ich mich defintiv besser aus).

Marant--

Anmeldungsdatum:
4. April 2022

Beiträge: 744

Kapiere Das nicht wirklich. Eigentlich sollte doch IPv4 reichen.

Also:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
read alteip < ~/momentaneip
momentaneip=`curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'`

if [[ "$alteip" == "$momentaneip" ]]; then
   echo "IP ist gleich. $momentaneip"
   notify-send "IP ist gleich." "$momentaneip"
else
   echo "IP wurde geändert. $alteip zu $momentaneip" 
   notify-send "IP wurde geändert." "$alteip zu $momentaneip"
   echo "$momentaneip" > ~/momentaneip
fi

Das Prinzip in ein BashScript, ist also als Anregung gedacht. Schleife noch herum. Fortlaufende Änderung mit Datum/Zeit könnte man noch in 2. Datei schreiben lassen.

Bearbeitet von rklm:

Syntaxhighlighting.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14402

Zoner schrieb:

Die IPv4 wiederum ist öffentlich statt privat.

Das ist gut, wenn dein Gerät an der FB5590, eine öffentliche/externe IPv4-Adresse hat bzw. zugewiesen bekommt. (Ist diese öffentliche IPv4-Adresse evtl. auch statisch?) Für den Fall, dass Du diese öffentliche IPv4-Adresse (+ lauschende Ports) des Gerätes aus dem v4-Internet erreichen willst, hat die FB5590 evtl. auch eine v4-Firewall (... analog der v6-Firewall bei FritzBoxen)?

Antworten |