dsld -n -i startet mit Verzögerung v. 10 Sek. chronyd? freetz'en?

teletux

Neuer User
Mitglied seit
12 Mrz 2007
Beiträge
124
Punkte für Reaktionen
0
Punkte
16
Hallo,
wer weiss warum der dsld auf der FB7330 so langsam startet? In einer telnet-Sitzung meldet sich parallel zum Start des dsld - und mit ähnlicher Verzögerung - der chrony:
Code:
# dsld -n -i
# May 14 14:40:54 chronyd[1721]: Source 46.175.224.7 online
May 14 14:40:54 chronyd[1721]: Source 192.168.0.1 online
May 14 14:40:54 chronyd[1721]: Source 83.151.158.44 online
May 14 14:40:54 chronyd[1721]: Source 5.2.16.145 online
May 14 14:40:54 chronyd[1721]: Source 46.165.212.205 online
May 14 14:40:54 chronyd[1721]: Selected source 46.175.224.7

Bei der 7170 und 7270 war der dsld sofort da.

Warum ich das brauche? - Ich betreibe die FBen als NAT-Router, Internet über LAN1. Mit dem Stoppen und Starten des dsld werden die PCs an der Fritzbox vom Internet getrennt und wieder verbunden. Es ist eine Sicherheitsfunktion.

Wer weiss weiter? Der chronyd ist der Zeit-synchronisier-Daemon? Ist der vielleicht die Bremse? Der chrony hat eine config:

Code:
# cat /var/tmp/chrony.conf
bindcmdaddress 127.0.0.1
bindcmdallow 127.0.0.1
bindcmdaddress ::1
bindcmdallow ::1
server 192.168.0.1 minpoll 10 iburst
server 46.165.212.205 minpoll 10 iburst
server 46.175.224.7 minpoll 10 iburst
server 83.151.158.44 minpoll 10 iburst
server 5.2.16.145 minpoll 10 iburst
allow all
keyfile /var/tmp/chrony.keys
commandkey 1
makestep 1000 10
driftfile /var/tmp/chrony.drift

Der dsld startet den chronyd. Das habe ich schon festgestellt. Erst wenn der chronyd in der Prozessliste erscheint, ist LAN1 wieder da. Wie verzögere ich ggf den start des chronyd?

@ auf ein ifconfig eth0 up nach einem vorherigen down dauert so lange :( Ich erahne, dass AVM da tief drinnen steckt und allerlei startet, prüft, etc. und das dauert eben 5-10 Sekunden wie beim Start des dsld mit dem üblichen dsld -n -i. Was meint IHR? Komme ich um ein freezen nicht drumherum?
@@ habe mir gerade mal freez angesehen. Das image, das freez erzeugt und dann eingespielt wird, ersetzt das auch z.B. /sbin/-binaries? D.h. mit freez kann ich alles zusammenstellen wie ich will?- an einen ifconfig up eth0 würde ich dann nicht alles mögliche Zeugs wie den chrony binden oder das zeitzögert später starten. Das wäre eine Lösung. Lieber wäre mir eine mit AVM-images kompatible Lösung.

Gruss
Eckard
 
Zuletzt bearbeitet:
Moin

Zeitserver (chronyd) und Zeitsynchronisation (chronyc).
Ersterer ist wichtig zur Uhrzeitbereitstellung im lokalen Netz.
Zweiterer stellt die Uhr auf Internetzeit ein.
Damit z.B. Ereignislog und Anrufsliste die korrekte Uhrzeit enthalten.

Zeitserver laufen auf UDP Port 123, zu sehen mit:
netstat -ulep
Code:
udp        0        0 0.0.0.0:123        0.0.0.0:*        2099/chronyd

Kannst ja mal probieren, ob dir diese Lösung schneller vorkommt...

disco.sh
Code:
#!/bin/sh
local CMD='ctlmgr_ctl w connection0 settings/enabled'
local STAT='ctlmgr_ctl r connection0 settings/enabled'
check_connection () {
if [ $($STAT) -eq 1 ] ; then
echo 'DSL verbunden'
else
echo 'DSL nicht verbunden'
fi
}
case ${1} in
0) $CMD $1 ;;
1) $CMD $1 ;;
*) check_connection ;;
esac
#EOF

Aufruf:
Ohne Parameter: Überprüft den Status und gibt diesen aus.
Mit Parameter 1: Baut die DSL Verbindung auf.
Mit Parameter 0: Baut die DSL Verbindung ab.
 
Zuletzt bearbeitet:
Danke! probiert, Ergebnis: meistens ist die Verbindung nach 1-2 Sek da, aber leider nur so zu ca. 60% - auch wenn ich 20 Sek vorher nichts an der FB gemacht habe, die Startvorgäng in der FB sich also beruhigt haben müssten. Diese 60% ist zu wenig. In den anderen Fällen kommt die Verb. gar nicht, eine Statusabfrage meldet zwar "DSL verbunden" aber es geht kein Ping, auch von außen, über LAN 1 komme ich nicht durch . Ich muss erst wieder mit Parameter "0" stoppen, dann ein paar Sekunden warten, dann mit "1" wieder. Aber auch dann geht es nicht gesichert. Es kann auch 4 Male hintereinander nicht funktionieren. Irgendwas scheint den Verb-Aufbau gelegentlich zu stören. Was? - mit ifconfig sehe ich, das bei dieser methode die interfaces "lan", "dsl" alle auch noch bei "0" da sind.

Geht das mit freez besser? Oder alles das gleiche? Ich arbeite sonst mit Linux und wenn ich da ein "down" auf ein interface mache, dann ist das sofort weg und bei "up" sofort wieder da.

Das Routing rausnehmen ist keine Lösung, denn es soll ja wirklich ALLES, auch laufenden Verbindungen (von Hackern, ..) abgebrochen werden. Es soll schon das Interface herunter gefahren werden.

Hat mir jemand hier sonst noch eine Idee?

danke schonmal
Eckard
 
Zuletzt bearbeitet:
Warum suchst du den "Fehler" immer noch bei der FritzBox?
Meinst du nicht auch, daß dein Provider auch etwas Zeit braucht, die DSL-Trennung festzustellen und dir dann eine neue IP zuzuweisen?

Joe
 
Klar das geht nur bedingt, um die Verbindung ins Internet sofort aufzubauen
benötigt man noch das hier: connection0:settings/cmd_connect=1

So als Beispiel sollte es gehen hier oder:

connection0:settings/enabled=0
sleep(3000)
connection0:settings/enabled=1
sleep(3000)
connection0:settings/cmd_connect=1

Die Pause mit sleep ist notwendig und sollte so zwischen 2000 - 5000 liegen oder mehr.

connection0:settings/enabled=0
sleep(3000)
connection0:settings/enabled=1
sleep(3000)
time:settings/chrony_enabled=0
sleep(3000)
connection0:settings/cmd_connect=1
sleep(3000)
time:settings/chrony_enabled=1
 
Ok, dann mal schön die Reihenfolge einhalten und im Skript auch dafür extra Funktionen anlegen...

disco.sh
Code:
#!/bin/sh
local STAT='ctlmgr_ctl r connection0 settings/enabled'

check_connection () {
if [ $($STAT) -eq 1 ] ; then
echo 'DSL verbunden'
return 1
else
echo 'DSL nicht verbunden'
return 0
fi
}

disco () {
ctlmgr_ctl w time settings/chrony_enabled ${1}
sleep 3
ctlmgr_ctl w connection0 settings/cmd_disconnect 1
sleep 3
ctlmgr_ctl w connection0 settings/enabled ${1}
}

ocsid () {
ctlmgr_ctl w connection0 settings/enabled ${1}
sleep 3
ctlmgr_ctl w connection0 settings/cmd_connect 1
sleep 3
ctlmgr_ctl w time settings/chrony_enabled ${1}
}

case ${1} in
0) disco ${1} ;;
1) ocsid ${1} ;;
*) check_connection ;;
esac
#EOF

Aufruf: Wie gehabt 0 oder 1 oder keinen Parameter.
 
Zuletzt bearbeitet:
Sorry, anstelle von connection0 settings/cmd_connect=1

Code:
disco () {
ctlmgr_ctl w time settings/chrony_enabled ${1}
sleep 3
ctlmgr_ctl w connection0 settings/cmd_connect ${1}
sleep 3
ctlmgr_ctl w connection0 settings/enabled ${1}
}

müsste hier connection0 settings/cmd_disconnect=1 stehen

Code:
disco () {
ctlmgr_ctl w time settings/chrony_enabled ${1}
sleep 3
ctlmgr_ctl w connection0 settings/cmd_disconnect ${1}
sleep 3
ctlmgr_ctl w connection0 settings/enabled ${1}
}

Bei connection0 settings/cmd_connect=1 und
connection0 settings/cmd_disconnect=1 gibt es keine null,
und man kann auch keinen status abfragen, das endet in einer endlosschleife.
 
Ok, dankeschön. Habs in #6 verbessert und die 1 hart Kodiert.
 
Meinst du nicht auch, daß dein Provider auch etwas Zeit braucht, die DSL-Trennung festzustellen und dir dann eine neue IP zuzuweisen?
Joe
Sorry, Joe, ich dachte ich hätte es richtig beschrieben: die FB hat nur die Funktion eines Schalters, Nat-Router über LAN1, dann erst gehts zum jeweiligen Provider-Modem, das mag Kabel sein oder ein Speedport der Telekom oder wieder eine FritzBox von Versatel, oder ein Alice-Modem, ... oder ... oder. Dieses zweite Modem hält die Internet-Verbindung dauerhaft! Der "Clou" der fb7330 um die es hier geht, ist lediglich ein schneller Schalter um Internet zu bestimmten PCs im LAN ein- und auszuschalten. Vielleicht wirst Du jetzt fragen warum eine fb nur als Schalter verwenden. Tja, sag mir eine Alternative wo ich eine so zuverlässige Hardware für gut 100 Euro herbekomme ... die es auch noch über viele Jahre hinweg gibt und bei der es eine große Community gibt für technische Dinge. Die fb7170 war jedenfalls bei dsld -n = Start des Interface LAN1 blitzschnell. Und den chrony brauche ich eigentlich gar nicht, die fb ist ja nur Schalter, mehr nicht!
 
Zuletzt bearbeitet:
disco.sh
Code:
#!/bin/sh
local STAT='ctlmgr_ctl r connection0 settings/enabled'

check_connection () {
if [ $($STAT) -eq 1 ] ; then
echo 'DSL verbunden'
return 1
else
echo 'DSL nicht verbunden'
return 0
fi
}

disco () {
ctlmgr_ctl w time settings/chrony_enabled ${1}
sleep 3
ctlmgr_ctl w connection0 settings/cmd_disconnect 1
sleep 3
ctlmgr_ctl w connection0 settings/enabled ${1}
}
[...]
[/QUOTE]

Auch das Skript schlägt bei mir fehl, es wird nicht immer LAN1 wieder freigeschaltet. in über 50% der Fälle funktioniert es, sonst nicht.  Schade. 

Auch an dieser Stelle sei nochmal daran erinnert: ich Betreibe die fb nur als LAN-Router über LAN1 in ein Netzwerk, das dauerhaften Zugang ins Internet hat. Siehe Posting #9 von mir. Gruss Eckard
 
Ich betreibe die FBen als NAT-Router, Internet über LAN1. Mit dem Stoppen und Starten des dsld werden die PCs an der Fritzbox vom Internet getrennt und wieder verbunden. Es ist eine Sicherheitsfunktion.

Welche Art von Sicherheitsfunktion? Und was ist das Problem, wenn die Verbindung mehr als 10 Sekunden getrennt ist.
Wenn die Verbindung für 10 Sekunden oder weniger getrennt ist, merken die PC2 vermutlich nicht einmal, dass die Verbindung getrennt war. Es kommt einige Sekunden lang keine Antwort, die Anfrage wird nochmal gesendet, die Antwort kommt und nach einer kurzen Verzögerung geht es weiter, als sei nichts gewesen.
 
Stellt Dir vor Du arbeitest in einem LAN mit sehr sicherheitsrelevanten personenbezogenen Daten. Das ganze LAN braucht 10x am Tag für insgesamt 6 Minuten Internet. Du sitzt vor Deiner Windows-Kiste und klickst auf ein Symbol und hast sofort Internet. Wenn Du fertig bist, meist nach 1/2 Minute, denn Du weist genau was Du machst und bist nicht im Internet um Dir Deinen Zeit zu vertreiben, dann schaltest Du Internet wieder ab. Natürlich hast Du keine Lust bei jedem Internet-Zugriff 10 Sekunden zu warten und zu warten. 10 Zugriffe am Tag mal 10 Sek Wartezeit = 100 Sekunden am Tag. Bei 240 Arbeitstagen sind das 24000 Sekunden im Jahr, also 6,66 Std im Jahr. Du musst als Selbständiger 150 Euro reinholen, sonst kannst Du Deine Angestellen nicht bezahlen. Also: kosten diese 10 Sek Wartezeit 1000 Euro im Jahr. Also nimmt diese Lösung niemand, ok? Die fb7170 hat wunderbar funktioniert.
 
Zuletzt bearbeitet:
Das klingt so, als sollte eine Lösung mindestens 500 Euro wert sein. Für das Geld bekommt man locker eine gebrauchte 7170.

Du kannst aber mal folgendes probieren:
Code:
echo 0 >  /proc/sys/net/ipv4/ip_forward
# bzw.
echo 1 >  /proc/sys/net/ipv4/ip_forward
Wenn AVM nicht zu tief ins System eingegriffen hat, sollte das den gewünschten Effekt haben.
 
Das klingt so, als sollte eine Lösung mindestens 500 Euro wert sein. Für das Geld bekommt man locker eine gebrauchte 7170.
ja, das würde ich dafür auch gerne haben. ;) aber mit einer gebrauchten, leicht verkratzen 7170 werde ich nicht ernst genommen und bekomme nicht einen Euro.
Als ich mich vor Jahren selbständig gemacht habe, dachte ich es ginge leichter ;) Entscheidend ist es ausreichend viele Kunden zu bekommen.

Du kannst aber mal folgendes probieren:
Code:
echo 0 >  /proc/sys/net/ipv4/ip_forward
# bzw.
echo 1 >  /proc/sys/net/ipv4/ip_forward
Wenn AVM nicht zu tief ins System eingegriffen hat, sollte das den gewünschten Effekt haben.


gute Idee, stimmt, warum soll das bei der fb nicht auch so funktionieren. Getestet: geht! Merkwürdigerweise geht ping nach einem echo "0" > ... noch ein paar Sekunden weiter. Ich werde mich mal in Linux-Foren erkundigen, wie sicher das ist, alle Verbindungen zu kappen. Sollte eigentlich so funktionieren, wenn der kernel nicht mehr weiterleitet ist eigentlich komplett schluss.

@leider KEINE Lösung: es soll natürlich auch ein Angreifer vom Internet her KEINEN offenen Port finden! Ein Port des DSL-Modem im externen LAN ist ja auf die Fritz 7330 auf port 22 (ssh) weiter geleitet und wenn nur das Routing abgeschaltet ist, dann antwortet ja der ssh-Daemon - und das soll ja gerade NICHT sein! Also: Ralf, nochmals Danke für den Tipp, aber leider für meinen Fall untauglich. Es MUSS doch das Interface herunter gefahren werden. Da sehe ich derzeit nur die Chance mit freetz ...

Besten Dank,
Eckard
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.