PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ProFTPd & DynDNS & NAT-Router & T-DSL



VPN-User
05.06.02, 11:36
Hi Freaks!

Konfig siehe Betreff, der Router bekommt also eine dynamische IP und ich NICHT die Linuxkiste, sondern eine Hardwarekiste von SMC (Barricade 7008BR).

Die aktuelle IP übermittle ich an dyndns mittels DDCLIENT 3.6.2

Problem:

Um passives FTP verwenden zu können, muss der ProFTPd die öffentliche IP wissen, dies habe ich über die MasqueradeAddress-Direktive gemacht:

"MasqueradeAddress myhost.dyndns.org"

Wenn sich jetzt jedoch die IP ändert und der DDCLIENT die neue IP an dyndns übermittelt, behält der ProFTPd jedoch die alte IP und es kommen keine Verbindungen mehr zustande. Was ich also brauche, ist die Stelle im DDClient, wo ich ein

'system("proftpd restart");'

unterbringen könnte. Ich kenne mich mit Perl nicht sonderlich gut aus, deswegen finde ich die Stelle nicht. Ich bräuchte also genau die Stelle im Code, an der der DDCLIENT die neue IP übermittelt. Danach würde ich dann die obige Zeile einfügen, damit der ProFTPd nach einem IP-Wechsel restartet wird und die neue benutzt.

Weiß hier jemand Rat? Oder ne andere Idee?

Gruß
Mario

ReSeT
05.06.02, 12:26
Wie wärs denn mit einem kleinen Script, welches erst die aktuelle IP übermittelt und dann den Proftp neu startet. Dann kannst Du Dir doch den Aufwand sparen, das Perl Script abzuändern.

schiffler
05.06.02, 12:28
der ddclient wird doch in nem script aufgerufen oder?
(schätz mal sowas wie /etc/ppp/ip-up oder ip-up.local)

häng da doch einfach das
proftpd restart an und fertig.
dann brauchste nicht im code von dem ddclient rumwurschteln.

VPN-User
05.06.02, 13:21
Nein, wird er nicht.

Grund: Es ist ja keine Wählverbindung am Linuxrechner, der ist ja übers LAN mit dem Router verbunden.

Ich glaube, es gab hier ein Mißverständnis:

Der Linuxrechner mit dem ProFTPd weiss NICHTS von der öffentlichen IP! Der DDCLIENT, der auf diesem Rechner läuft, ermittelt diese IP über eine Webseite, die er alle 300 Sekunden abruft. Der ProFTPd-Server an sich hat nur die interne 192.168.0.1...

Wenn ich vom Scripten mega die Ahnung hätte, würde ich hier keine Fragen stellen, oder? :ugly:

schiffler
05.06.02, 13:36
axo verstehe, also brauchste die stelle im code in der er teschtet ob die
neue und die alte ip übereinstimmen, wenn nicht dann setzt er die ip bei dyndns und soll dann den ftp restarten, ansonsten nix machen.

da ich den client nicht habe solltest du vielleicht mal den code posten (falls er nicht so ewig lang ist)

VPN-User
05.06.02, 15:27
Der Code ist doch relativ lang, deshalb hier mal ein Link:

http://burry.ca:4141/ddclient/ddclient-3.6.2.tar.gz

VPN-User
06.06.02, 18:18
*nachobenschieb*

Kann denn keiner von Euch mit Perl umgehen? Schaut doch bitte mal in den Code des links rein (Die Datei heisst DDCLIENT).

Wär echt nett!

Kimsey
06.06.02, 18:56
Die Funktion die den dyndns NIC updates heisst sub update_nics und findet sich in zeile 424.
Am besten fügst Du vor Zeile 450 via exec einen Scriptaufruf zu restart Deines FTP Servers ein.

Viel Spaß ;)

VPN-User
06.06.02, 19:24
FAST isses das! Aber nur FAST! Mit Deinem Tip wird der FTP jedoch nach jedem Checkintervall restarted, also auch wenn sich die IP garnicht geändert hat...

Alle 300 Sekunden aus nem FTP rausfliegen, kann aber noch nicht DIE Lösung sein :-)...

Bitte um weitere Anweisungen.

Kimsey
06.06.02, 20:16
dann versuch es doch mal ab Zeile 1776 ...

VPN-User
06.06.02, 20:30
Ganz so einfach ist das nicht, mir einfach ne Sub zu nennen :). Auf sowas komm ich schon noch selber. Es muss ja 100%ig DIE Stelle sein, bei der auch wirklich das Update stattfindet. Das Script ist sehr lang und ich will nicht jede Zeile ausprobieren, zumal das jedes mal mords der Act ist...

Aber Du scheinst Dich ja auszukennen, vielleicht findest Du ja in dem Programmierer seiner Logik etwas...

Kimsey
06.06.02, 20:33
Sorry, ich hab auch andere Hobbys und hab nur mal drüber geschaut weil der ddclient auch bei mir seine Dienste verrichtet ... also ein bissel expermientieren musst Du schon selber oder => http://www.oreilly.de/catalog/pperl3ger/

Viel Erfolg.

VPN-User
06.06.02, 20:56
Okay, trotzdem danke für Deine Hilfe.

VPN-User
07.06.02, 00:44
Okay falls es jemand interessiert, ich habe die Stelle gefunden:


Ab Zeile 1979 sieht es jetzt bei mir so aus:


$config{$h}{'status'} = $status;
if ($status eq 'good') {
$config{$h}{'ip'} = $ip;
$config{$h}{'mtime'} = $now;
sleep 10;
system("killproc proftpd");
system("proftpd");
success("updating %s: %s: IP address set to %s", $h, $status, $ip);


NEU ist: sleep10 sowie die beiden System-Aufrufe.

Das Sleep 10 bedeutet eine Wartezeit von 10 Sekunden, sodass der FTP-Server noch etwas mit dem Restart wartet, bis die Nameserver von der neuen IP Wind bekommen haben. Die beiden Systembefehle bedeuten nix anderes als einen Restart des ProFTPd's. :cool:

Habs bisher erfolgreich getestet...