linuxverbrezler
Goto Top

Redirect auf Heimserver (nicht Dyndns) aber wie ?!

Guten Morgen,
tüftle hier grad an folgendem Problem:

Redirect von öffentlichem auf heimischen Webserver?!
(ich mein hier keinen DynDns dienst)

Hab hier einen Webserver der hier am
heimischen DSL Anschluß hängt und eine
wechselnde öffentliche IP bekommt. (Zwangstrennung)

..der soll seine aktuelle IP Adresse
an meinen gemieteten Server im Netz
übermitteln der die Adresse blablubb.de hat


Wenn jetzt jemand die registrierte URL

blablubb.de aufruft

soll ein Verweis
auf die heimische IP kommen..
und auf den Heimserver umgeleitet werden.

Wie stell ich das an ?
brauch erst mal nen Kaffee....

lg
Linuxverbrezler

Content-Key: 248550

Url: https://administrator.de/contentid/248550

Printed on: April 25, 2024 at 06:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Sep 07, 2014 updated at 08:18:26 (UTC)
Goto Top
Zitat von @linuxverbrezler:

Wenn jetzt jemand die registrierte URL

blablubb.de aufruft

soll ein Verweis
auf die heimische IP kommen..
und auf den Heimserver umgeleitet werden.

Wie stell ich das an ?
brauch erst mal nen Kaffee....

Da gibt es deren vieler Möglichkeiten. Hier zwei davon:

1. Du suchst Dir einen Fre-Dyndns-Anbieter, der Dir diesen Dinest zur Verfügung stellt (z.B. no-ip) Das ist die einfachste Variante.

2. Du bastelst ein Skript:

Auf Deinem Server läßt du sowas wie
while true; do netcat -l 9999 >jetzige-ip.txt; sleep 9999; done

und auf dem Client sowas wie
while while true; do lynx --dump http://ip.skittel.de | netcat dein.webserv.er  9999; sleep 9999; done

Und in Deinem Webserver bindest Du die datei jetzige-ip.txt in Deine webseite ein.

Das kann man sicher noch alles verfeinern, z.B. mit Authentifikation und Plausibilitätsprüfungen, aber im wesentlichen tut das den Job.

lks


PS: einem alten Post mal erlaubt, daß man ip.skittel.de für die Bestimmung der eigenen IP-Adresse nutzen darf. Allerdings würde ich den Takt auf einen vernünftig hohen Wert setzen, um Stefan nicht unnötig Ressourcen zu entziehen.


PPS: Variante 3: DynDNS - selbstgemacht
Mitglied: 114757
114757 Sep 07, 2014 updated at 08:30:27 (UTC)
Goto Top
4. A-Record bzw. bei DynDns den CNAME in den DNS Einstellungen deines Domain-Anbieters auf deine 'dyndns' Adresse (die du wie bereits gesagt umsonst bekommst) deines Homeservers ändern.

Oder die Umleitungsseite auf dem Homeserver bei Änderung der IP, mit der aktuellen Adresse versehen und via FTP auf den Server hochladen.

Gruß jodel32
Member: Lochkartenstanzer
Lochkartenstanzer Sep 07, 2014 updated at 08:24:20 (UTC)
Goto Top
Zitat von @114757:

4. A-Record in den DNS Einstellungen deines Domain-Anbieters auf deine 'dyndns' Adresse (die du wie bereits gesagt
umsonst bekommst) deines Homeservers ändern.


Nee,

wenn überhaupt, dann einen CNAME definieren. beim A-record mußt du eine feste IP-adresse eingeben udn die ändert sich vermutlich dauernd.

lks
Mitglied: 114757
114757 Sep 07, 2014 updated at 08:29:31 (UTC)
Goto Top
Zitat von @Lochkartenstanzer:
wenn überhaupt, dann einen CNAME definieren.

lks
schon klar, bei den meisten Anbietern ist das dann dort die Unteroption anstatt einer statischen IP einen CNAME anzugeben , wie z.B. bei 1und1. War etwas falsch ausgedrückt.
Member: itebob
itebob Sep 15, 2014 at 16:32:59 (UTC)
Goto Top
Zitat von @114757:


Oder die Umleitungsseite auf dem Homeserver bei Änderung der IP, mit der aktuellen Adresse versehen und via FTP auf den
Server hochladen.

Das Hochladen kann man sich sparen, wenn mann einfach mit einem Skript - es kann auch ein JavaScript im Browser sein - minütlich eine Webseite auf dem öffentlichen Webspace abruft - die IP-ADresse des Heimrechners ist dann automatisch auf dem Webspace bekannt und muss nur ausgelesen werden (ich glaube in PHP ist es ein REMOTE_ADDRES oder ähnlich Parameter).
Member: franky303
franky303 Nov 03, 2014 updated at 15:31:21 (UTC)
Goto Top
Alternativer Vorschlag: sofern dein Router Cronjobs kann (z.B. DD-WRT kann das in der Regel) kannst Du auf dem Server "http://www.blablubb.de/ipupdate.php" ein PHP Script aufrufen, welches für sich selbst einfach die $_SERVER['REMOTE_ADDR'] speichert (also die IP Adresse vom Aufrufer). .... Wenn dann auf "blablubb.de" ein index.php liegt welches einfach nur weiterleitet auf diese IP.

Pseudocode für "ipupdate.php"

<?php
file_put_contents( "ip.txt", $_SERVER['REMOTE_ADDR'] );
?>

Pseudocode für "index.php":

<?php
header( "Location: http://" . file_get_contents("ip.txt") );
?>

wobei einmalig die datei "ip.txt" angelegt werden muss mit schreibrechten für PHP.

Aufruf für DD-WRT am Router (Administration -> Management -> Cron):

#min hour day month weekday command
*/1 * * * * root /usr/bin/wget http://www.blablubb.de/ipupdate.php
Member: itebob
itebob Nov 03, 2014, updated at Jan 21, 2015 at 12:05:05 (UTC)
Goto Top
Zitat von @franky303:

<?php
file_put_contents( "ip.txt", $_SERVER['REMOTE_ADDR'] );
?>

Funktioniert soweit, nur wenn ich so
$ipport = $_SERVER['REMOTE_ADDR'] . "8090";
file_put_contents( "ip.txt", $ipport );

die Port-Nummer mitgebe, wird diese zwar in ip.txt korrekt gespeichert, beim Laden der index.php
<?php
header( "Location: http://" . file_get_contents("ip.txt") );
?>
kommt im Browser nur die IP an und dementsprechend meldet der Browser
Firefox kann keine Verbindung zu dem Server unter 79.227.xx.yy aufbauen.

so klappt's auch mit der Port-Nr:
<?php
$fp = fopen ("ip.txt", "r") ;
header( "Location: http://" . fgets ($fp, 1024) );
fclose ($fp);
?>
Member: franky303
franky303 Nov 04, 2014 updated at 06:59:27 (UTC)
Goto Top
hi itebob,

ich bezweifel sehr stark, dass es an fgets vs. file_get_contents liegt, da beide für diesen fall genau dasselbe tun. face-wink
... das problem ist, dass in deinem beispiel beim reinschreiben ein kleiner fehler drin ist, der port wird direkt an die IP angehängt, ohne ":" separator:

$ipport = $_SERVER['REMOTE_ADDR'] . "8090";  

da sollte stehen (also mit doppelpunkt als separator zwischen IP und port):

$ipport = $_SERVER['REMOTE_ADDR'] . ":8090";  

dann geht es auch mit file_get_contents beim auslesen ...
Member: franky303
franky303 Nov 04, 2014 updated at 08:20:04 (UTC)
Goto Top
p.s. eleganter könnte man auch in "ip.txt" tatsächlich nur die IP speichern, und dann beim redirect wie folgt machen. gibt keinen grund den port schon vorab zu speichern:

header( "Location: http://" . file_get_contents("ip.txt") . ":1234" );  
Member: itebob
itebob Nov 04, 2014 at 08:02:21 (UTC)
Goto Top
Gut aufgepasst! Danke für die Rückmeldung face-wink. Habe jetzt diese Version
header( "Location: http://" . file_get_contents("ip.txt") . ":1234" );
erfolgreich getestet.
Member: christofferus
christofferus Jan 21, 2015 at 10:28:49 (UTC)
Goto Top
Hallo erstmal,

also ich habe entweder was übersehen, oder es besteht die Gefahr des Phishings und Kidnappings.
Um sicherzustellen, dass das Script nur die ip.txt ändert, wenn sie wirklich vom server kommt, sollte eine Art Schlüssel mit der url mitgegeben werden.
Ich zum Beispiel erstelle garkeine ip.txt, ich parse immer gerade eine komplette redirect.php mit "<?php header...usw."

bj