Webserver Öffentliche IP-Adresse, die auf der Webseite angezeigt werden soll

474
Samir Sogay

Ich habe einen Raspberry Pi hinter NAT, auf dem Linux läuft und einen Webserver hostet. Ich greife über das Yaler-Dienstprogramm von außen auf die Webseite zu, da ich über eine dynamische öffentliche IP-Adresse verfügt. Gibt es eine Möglichkeit, meine aktuelle öffentliche IP-Adresse auf der Webseite anzuzeigen? Wenn ich meine öffentliche IP-Adresse erhalte, kann ich auf viele NATted-Geräte in diesem Netzwerk zugreifen. Die Yaler-Domain wird nicht in meine tatsächliche öffentliche IP-Adresse aufgelöst.

0
Bietet Yaler das nicht irgendwie an? Abgesehen davon läuft auf der Maschine PHP? slhck vor 9 Jahren 0
Yaler basiert auf Reverse http und es gibt keine direkte Zuordnung zwischen der Yaler-Domäne und meiner öffentlichen dynamischen IP-Adresse. Samir Sogay vor 9 Jahren 0

1 Antwort auf die Frage

1
Mario

In jedem Fall benötigen Sie dazu ein einfaches Skript.

Ein einfaches Beispiel wäre die Verwendung von DNS-Lookup.

Wenn Sie den hostBefehl nicht verwenden können, installieren Sie ihn mit sudo apt-get install host.

Dann einfach den Befehl ausführen host -t a your.public.domain. Dies führt zu einer Zeile wie dieser:

Ihre.public.domain hat die Adresse 12.34.56.78

Sie müssen nur das Ergebnis analysieren, z. B. in PHP können Sie Folgendes verwenden:

<?php $ip = 'unknown'; if (preg_match('/has address (\d+\.\d+\.\d+\.\d+)/', exec('host -t a your.public.domain'), $m)) $ip = $m[1]; echo "The public IP is $ip."; 

Beachten Sie, dass dies die Codeausführung um etwa eine Sekunde verzögern wird. Sie sollten das Ergebnis also zwischenspeichern.

IPv6 ist leider immer noch ziemlich ungewöhnlich, aber ich wollte anmerken, dass dies in seiner aktuellen Form nur für IPv4 funktioniert. Auch +1, da es zu 99% garantiert die Antwort ist, die das OP sowie die meisten Besucher der Website suchen werden. Hennes vor 9 Jahren 0
Nun, Sie könnten den regulären Ausdruck wahrscheinlich auch auf IPv6 erweitern. Leider habe ich keinen öffentlichen und kann es nicht testen. Mario vor 9 Jahren 0
Die Yaler-Domain wird nicht in meine IP-Adresse aufgelöst. Meine Sitzung ist mit der Yaler-Domäne und Yaler leitet diese Sitzung über Reverse http an meine IP-Adresse um. Samir Sogay vor 9 Jahren 0
@SamirSogay Oh? Okay, für was brauchst du dann deine "öffentliche" IP? Mario vor 9 Jahren 0
Wenn ich meinen Webserver remote über ssh verwalten muss. Wenn Sie die öffentliche IP-Adresse erhalten, kann ich auch auf viele andere Geräte zugreifen, die sich hinter dem NAT befinden. Samir Sogay vor 9 Jahren 0
@Samir, http://php.net/manual/de/reserved.variables.server.php oder ` ` könnte helfen. Arjan vor 9 Jahren 0
Arjan: Sie könnten dies als neue Antwort posten, obwohl dies nicht unbedingt die korrekte öffentliche IP-Adresse zurückgibt. Mario vor 9 Jahren 0
@Arjan Ich denke, deine Lösung bringt mich in die richtige Richtung. Bitte erläutern Sie, wie Sie dies in HTML-Code einfügen, da ich nicht viel darüber weiß. Samir Sogay vor 9 Jahren 0
@ SamirSogay Sie können diese Client-Seite nicht ausführen (lesen Sie: in reinem HTML). Sie müssen es serverseitig mit einer Skriptsprache ausführen, da sie vom Server ausgeführt werden muss. Andernfalls wird die öffentliche IP-Adresse des Benutzers zurückgegeben, der Ihre Seite besucht, und nicht die öffentliche IP-Adresse des Servers, der diese Seite bedient. Mario vor 9 Jahren 0
@Mario Ich beabsichtige es auf dem Server zu tun, dh auf der Webseite des Servers Samir Sogay vor 9 Jahren 0
@Arjan Bitte fügen Sie Ihre Lösung als weitere Antwort hinzu, ich möchte sie als richtig markieren. Samir Sogay vor 9 Jahren 0