OpenVPN-Server(Bridge) auf 7560-IPClient (Fritz-OS 7.01-Freetz15014)

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
Ich würde hier mal eine Shell-Session parallel laufen lassen - am besten mit einem "top" - und erst dann den OpenVPN-Daemon starten.
Wie würde ich so etwas machen? Einfach eine Telnet Session offen haben und schauen was passiert? Was bedeutet top in dem Zusammenhang.

Nachdem das bei anderen auch noch funktioniert (wenn auch nur mit IPv4)
Der Haken für ipv6 ist auch bei mir momentan nicht gesetzt.

Hat schon jemand eine Reaktion von AVM auf die Anforderung von Quellen für 7590, 7580 oder 7560 erhalten?
Nein, leider noch nicht.
 

stoney

Moderator
Teammitglied
Mitglied seit
7 Okt 2015
Beiträge
4,837
Punkte für Reaktionen
341
Punkte
83
Top ist ein Taskmanager unter Linux vergleichbar mit dem Windows-Tastmanager, welcher Dir die laufenden Prozesse incl Systemauslastung und weiteren Infos auf dem Terminal anzeigt.
 

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
Gesagt getan. Bevor ich openvpn starte sieht das ganze ganz normal aus. 99% idle.
Nachdem ich openvpn starte friert das ganze augenblicklich ein, und nach ca 30 Sekundn geht die "Verbindung zum Host verloren".
 
Zuletzt bearbeitet:

stoney

Moderator
Teammitglied
Mitglied seit
7 Okt 2015
Beiträge
4,837
Punkte für Reaktionen
341
Punkte
83
Mach davon doch mal einen Screenshot, also vom eingefrorenen Bildschirm/top und hänge es dem Board an.
 

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,062
Punkte für Reaktionen
725
Punkte
113
nach ca 30 Sekundn geht die "Verbindung zum Host verloren".
Aber die Box läuft weiterhin? Und das auch für längere Zeit (> 10 Minuten)?

Eigentlich dürfte die (auch dann, wenn tatsächlich ein einzelner Thread in Schleife geht) nicht vollkommen aussteigen ... immerhin hat sie 4 Cores (bei der 7560 weiß ich es gar nicht zuverlässig, aber zwei hat sie garantiert auch) und da sollten die anderen dann weitere Tasks bearbeiten können. Bliebe nur die Erklärung, daß die Box in irgendeiner nicht-unterbrechbaren Schleife hängt ... nur sollte dann eigentlich irgendwann mal ein Watchdog zuschlagen (der ist ja in Hardware realisiert und sollte auch Code-Teile mit höherer Priorität bzw. irgendwelchen aktiven Spinlocks unterbrechen können) und die Box automatisch neu starten ... im Ergebnis dessen würde dann auch wieder protokolliert, welche Task da dermaßen durchdreht.

Deshalb wäre es eben nützlich, die Box mal etwas weiter laufen zu lassen ... wenn die nicht vom Watchdog neu gestartet wird, gibt es zwar immer noch zwei Möglichkeiten (einmal könnte der Watchdog tatsächlich zu geringe Priorität haben, um den amoklaufenden Code zu unterbrechen oder es kann auch sein, daß die internen Vorgänge in der Firmware, inkl. des Zurücksetzens der verschiedenen Watchdog-Timer, weiterhin funktionieren und tatsächlich nur irgendetwas die "Außenkommunikation" blockiert), aber zumindest weiß man dann schon mal, wo (bzw. wie) man nicht weiter suchen muß/kann.
 

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
Ich habe das ganze mal aufgenommen:
http://sendvid.com/1d11q54t
Bei ca 18 Sekunden starte ich OpenVPN, das Browserfenster wird leider nicht aufgenommen.
Zusätzlich auch noch mal ein Screenshot nachdem es schon gelaufen ist:
Screenshot (1).png

Das ist jetzt über 30 Minuten her, WLAN und Ethernet funktionieren weiterhin wunderbar.
Keine GUI erreichbar, keine Telnet Verbindungen.
 
Zuletzt bearbeitet:

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,062
Punkte für Reaktionen
725
Punkte
113
Hmm ... WLAN und Ethernet wären ja - wie schon mal angerissen - normalerweise auch über die Hardware gebridged, womit es keine Überraschung ist, wenn die Kommunikation dort noch funktioniert. Allerdings dürfte (genauer: sollte) alles, was eine aktive Mithilfe der CPU erfordert (z.B. die Anmeldung neuer WLAN-Clients, auch wenn diese den PSK bereits kennen), dann nicht länger funktionieren ... ähnliches gilt für Internet-Verbindungen, weil auch dabei ja erst mal der passende Eintrag in den Tabellen für den PA erzeugt werden muß, damit die Pakete auf dem Rückweg überhaupt durch die Firewall kommen.

Im Video sieht man ja bei Sekunde 24, daß da noch einmal eine Aktualisierung der "top"-Anzeige erfolgt ... allerdings sieht man unter den Programmen dann immer noch keines, was irgendwie mit dem OpenVPN zusammenhängt und so stelle ich erst hier fest, daß meine "Anleitung" zur Benutzung von "top" zu schwammig war - ich vermute mal, daß die zusätzlichen Prozesse durch den OpenVPN-Start nicht auf der ersten Seite der "top"-Ausgabe auftauchen, weil diese nicht nach CPU-Load sortiert ist.

Am besten ruft man es mit "top -d 1" auf, dann aktualisiert es sekündlich die Anzeige. Dann drückt man im "top-Fenster" (also bei laufender Anzeige) noch die Tasten "1" (das zeigt dann die Prozessoren/Cores einzeln an), ein großes "P" (das sortiert die Prozesse nach ihrem CPU-Verbrauch) und ein großes "H" (das zeigt dann auch noch die Threads gesondert an - damit sollte z.B. in der Liste mehr als ein Eintrag "ctlmgr" zu sehen sein) - dann hat man eine "top"-Anzeige, in der neu gestartete Prozesse so bald als möglich in der Liste auftauchen sollten (kleinere Intervalle als 1 Sekunde funktionieren auf der Box m.W. nicht).

Dann hat man ggf. eine Chance, anhand der gestarteten Prozesse (die sicherlich erst mal an der CPU lutschen beim Start und daher oben in der Liste landen) den Vorgang etwas genauer zu verfolgen im nächsten Video.

Hilft das nicht, kann/muß man eben zu "strace" greifen und die Syscalls des OpenVPN-Daemons (immer mal unter der Annahme, daß der tatsächlich der "schuldige" Prozess ist) so verfolgen, daß die Ausgaben immer sofort im Terminal landen (also "unbuffered" sind), damit man anhand des letzten Eintrags sehen kann, wo es am Ende klemmt - die "1" im "top" beantwortet ja dann auch die Frage, wieviele Cores die 7560 eigentlich aktiv benutzt und was AVM bei dieser Box über den "VPE Management Block"-Support (LTQ_VMB) für das FRITZ!OS tatsächlich "freigegeben" hat.

Auf einer 7580 sieht die "top"-Ausgabe dann in etwa so aus:
Code:
Mem: 147156K used, 281040K free, 3632K shrd, 16280K buff, 53892K cached
CPU0:   0% usr   0% sys   0% nic  99% idle   0% io   0% irq   0% sirq
CPU1:   0% usr   3% sys   0% nic  96% idle   0% io   0% irq   0% sirq
CPU2:   2% usr   6% sys   0% nic  90% idle   0% io   0% irq   0% sirq
CPU3:   0% usr   0% sys   0% nic  99% idle   0% io   0% irq   0% sirq
Load average: 0.06 0.09 0.12 1/124 19972
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
19950  3987 root     R     1404   0%   2   2% {exe} top -d 1
14181     2 root     SW       0   0%   1   1% [kworker/1:2]
 2666     1 root     S    10084   2%   0   0% telefon a127.0.0.1
 2099     1 root     S     7100   2%   3   0% multid
 1916     1 root     S     4420   1%   1   0% l2tpv3d
 1922     1 root     S    22880   5%   0   0% ctlmgr
 2531     1 root     S    22880   5%   0   0% ctlmgr
 1923     1 root     S    22880   5%   0   0% ctlmgr
 2532     1 root     S    22880   5%   0   0% ctlmgr
 2380     1 root     S    15276   4%   2   0% wland -B
 3921     1 root     S    12080   3%   1   0% {clt:upnp} /usr/bin/aha
 2812     1 root     S    12080   3%   2   0% {sockH} /usr/bin/aha
 2809     1 root     S    12080   3%   2   0% /usr/bin/aha
 2806     1 root     S    12080   3%   3   0% {aha_main} /usr/bin/aha
 2810     1 root     S    12080   3%   3   0% {dectule} /usr/bin/aha
 3922     1 root     S    12080   3%   3   0% {clt:upnp} /usr/bin/aha
 2811     1 root     S    12080   3%   1   0% {sRX} /usr/bin/aha
 2808     1 root     S    12080   3%   3   0% {upper_conn} /usr/bin/aha
 2782     1 root     S    11720   3%   3   0% /sbin/meshd
 2676     1 root     S    10084   2%   0   0% telefon a127.0.0.1
 2681     1 root     S<    9492   2%   0   0% voipd
 1928     1 root     S     9388   2%   3   0% upnpd
 2959     1 root     S     9388   2%   2   0% upnpd
 2960     1 root     S     9388   2%   2   0% upnpd
 2710     1 root     S     8636   2%   3   0% /usr/bin/faxd -a
 1731     1 root     S     6772   2%   3   0% /bin/avmnexusd
 2601     1 root     S     6024   1%   1   0% dsld -i -n
 2714     1 root     S     5896   1%   3   0% plcd
 1646     1 root     S     5156   1%   2   0% dsl_monitor -d
 1636     1 root     S     5156   1%   3   0% dsl_monitor -d
 2598     1 root     S     4616   1%   3   0% usermand
 2659     1 root     S     4476   1%   3   0% pbd
 2606     1 root     S     4460   1%   3   0% contfiltd
 2342     1 root     S     3952   1%   2   0% pcpd
 1740     1 root     S     3900   1%   2   0% /sbin/kpid -d
 2640     1 root     S     3836   1%   1   0% deviceinfod
 1449     1 root     S     3620   1%   3   0% avmipcd
 2902     1 root     S     2832   1%   0   0% hostapd -B -g /var/run/hostapd/global
 2777     1 root     S     2816   1%   0   0% /sbin/nmbd
 3919  2099 root     S     2620   1%   0   0% /sbin/chronyd -n -f /var/tmp/chrony.conf
 2814     1 root     S     2480   1%   3   0% /usr/bin/boxnotifyd
  911     1 root     S     2460   1%   2   0% /bin/configd
 2843     1 root     S     2380   1%   1   0% /bin/run_clock -c /dev/tffs -d
Die Box idled so vor sich hin ... sie hat hier auch tatsächlich nichts zu tun. Die 2% CPU-Load für "top" sind schon das höchste der Gefühle, was hier abläuft ... das sollte sich bei einer 7560 ähnlich darstellen und mit einem weiteren Video mit den o.a. Einstellungen im "top" sieht man vielleicht auch, was da jeweils gestartet wird und wie weit es kommt, bevor dann gar nichts mehr geht.

Um ganz sicher zu gehen, daß nicht am Ende doch nur die Aktualisierung im Terminal zu niedrige Priorität hat, kann man z.B. auch noch parallel mal einen Shell-Block anstarten, der nach ca. 5 Sekunden mit "killall openvpn" versucht, einen laufenden Daemon wieder abzuschießen ... ggf. laufen ja bereits aktive Prozesse doch weiter. Denn irgendwo ist dieses komplette "Hängenbleiben" schon komisch ... entweder die Hardware-Watchdogs bei der Box taugen nichts oder sie funktionieren nicht richtig oder sie werden sogar noch ordentlich "bedient". Irgendeinen Grund muß es ja haben, wenn die Box sich nicht ordentlich neu startet ... allerdings weiß ich auch nicht, ob der Watchdog bei AVM tatsächlich einen NMI auslösen kann. Ohne diese Möglichkeit taugt solche Hardware ja nur noch die Hälfte, weil der Ablauf eines solchen WD-Timers dann immer noch ausmaskiert werden könnte und die CPU (bzw. das gesamte System) damit am Ende davon gar nichts mitbekommt.
 

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
die Anmeldung neuer WLAN-Clients, auch wenn diese den PSK bereits kennen
Also habe eben einen Laptop hochgefahren der schon länger nicht mehr im WLAN war, aber das Passwort noch kannte. Die bekannten WLAN Geräte scheinen also auch Hardwareseitig abgespeichert zu werden, aber das ist ja nur periphär.

Am besten ruft man es mit "top -d 1" auf, dann aktualisiert es sekündlich die Anzeige. Dann drückt man im "top-Fenster" (also bei laufender Anzeige) noch die Tasten "1" (das zeigt dann die Prozessoren/Cores einzeln an), ein großes "P" (das sortiert die Prozesse nach ihrem CPU-Verbrauch) und ein großes "H" (das zeigt dann auch noch die Threads gesondert an - damit sollte z.B. in der Liste mehr als ein Eintrag "ctlmgr" zu sehen sein) - dann hat man eine "top"-Anzeige, in der neu gestartete Prozesse so bald als möglich in der Liste auftauchen sollten (kleinere Intervalle als 1 Sekunde funktionieren auf der Box m.W. nicht).
Und das funktioniert auch über telnet? top -d 1 beschleunigt tatsächlich die Aktualisierung, aber die Toggles 1, P und H, oblgeich in top -help aufgeführt beeinflussen die Ausgabe bei mir leider nicht.
Egal welche Taste ich drücke, es triggert einfach eine weitere Aktualisierung.
Muss ich dafür erst SSH installieren?
 

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,062
Punkte für Reaktionen
725
Punkte
113
Und das funktioniert auch über telnet?
Eigentlich schon ... was passiert denn, wenn Du es in einem "top" ohne das "-d 1" mit den Tasten versuchst? Wobei ich noch einmal ausdrücklich darauf hinweisen will, daß es sich jeweils um die Großbuchstaben handeln muß - außer bei der "1". :)

Wenn der Laptop noch funktioniert, klingt das aber eher so, als würden nur die "Außenbeziehungen" der Box eingestellt - ich weiß zwar nicht definitiv, wie "smart" der WLAN-Chip am Ende ist (das ist ja nochmal ein System im System), aber der sollte zumindest bei der Anmeldung eines neuen Clients auch mal die CPU zur Validierung benötigen, selbst wenn er alle "pairwise/groupwise keys" vielleicht autonom verwalten kann.

Ich weiß auf der anderen Seite auch nicht genau, welche Optionen beim "top" in Freetz automatisch gewählt werden: https://git.busybox.net/busybox/tree/procps/top.c?h=1_27_stable - ich benutze eine "customized BusyBox", die man ggf. in meinem "yf_bin"-Repo finden kann.
 
Zuletzt bearbeitet:

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
was passiert denn, wenn Du es in einem "top" ohne das "-d 1" mit den Tasten versuchst?
Die Anzeige aktualisiert sich, ein paar Prozesse tauschen die Plätze, aber augenscheinlich komplett zufällig. Ein Sortierung nach Kernen, CPU-Last, wie bei dir, ist nicht erkenntlich.
Kein Unterschied zu irgendeinem anderen Tastendruck. Habs auf einer 7362SL probiert, das gleiche.
Mit der Gefahr das ich vorgreife, aber bevor ich jetzt eine andere Busybox lade, und damit eine wichtige Variable ändere:
Die andere Möglichkeit wäre "strace"?
Dann können wir auch gleich die großen Wummen auspacken.
Wie würde ich das anstellen?
Ein schnelles Googlen und das Linuxwiki impliziert dass wenn man weiß was man will es ein Oneliner sein sollte...
Einfach nur "strace openvpn"?
Das Tool scheint nicht vorgeladen zu sein. Finde ich das in der Freetz Toolchain?
 

feedzapper

Neuer User
Mitglied seit
28 Jan 2008
Beiträge
89
Punkte für Reaktionen
7
Punkte
8
Wie wäre es denn , mal den crash/panic log auszulesen, sobald die Box wieder gebootet hat. ?
Das sollte dann aber in den "ersten Minuten" geschehen, wenn die Box neu gebootet hat.
Dieses Log dann am besten gleich in eine Datei Schreiben lassen....

Code:
cat /proc/avm/log_cr/* >/tmp/crashlog.txt
@PeterPawn hat da mehr Erfahrung in der Auswertung.....
 

feedzapper

Neuer User
Mitglied seit
28 Jan 2008
Beiträge
89
Punkte für Reaktionen
7
Punkte
8
Keine Ahnung,
aber jedenfalls steht dann ganz unten irgendwo die reboot Ursache, siehe hier als Beispiel wenn z.b. kein Speicher mehr verfügbar ist ..:
Code:
[  230.236000][0]Kernel panic - not syncing: Out of memory: panic_on_oom is enabled
[  230.236000][0]
[  230.244000][0][panic_dpipe_stats]
[  230.248000][0]  alive:
[  230.252000][0]    txchan: refs=0, lifetime=210:451926030
[  230.256000][0]    pid1: refs=14, lifetime=210:414325065
[  230.260000][0]    pid8: refs=0, lifetime=210:369728140
[  230.268000][0]    dp_macvlan: refs=0, lifetime=48:397711340
-----
crashreport: read crash-variable '[0]ee591666,5ce137c4,3[1]0,0,0[2]0,0,0[3]0,0,0'
crashreport: old parsed checksum[0].cs = ee591666 new_sum=e610a7e5 (new_len=58924)
crashreport: crash-variable set to '[0]e610a7e5,5ce43cf3,1[1]0,0,0[2]0,0,0[3]0,0
Wie gesagt ! - Beispiel ;-)
Läuft die Box aber schon einige Zeit nach einem Neustart, werden diese Daten wohl wieder automatisch gelöscht !
 

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
Etwa 5 Minuten nach dem Crash - direkt nach dem Reboot:
:/var/mod/root# cat /proc/avm/log_cr/* >/var/media/ftp/uStor01/panic.log
cat: can't open '/proc/avm/log_cr/crash': No data available
cat: can't open '/proc/avm/log_cr/crash2': No data available
cat: can't open '/proc/avm/log_cr/panic': No data available
cat: can't open '/proc/avm/log_cr/panic2': No data available
 

feedzapper

Neuer User
Mitglied seit
28 Jan 2008
Beiträge
89
Punkte für Reaktionen
7
Punkte
8
Und unter :
Code:
cat /proc/avm/log_sd/*
auch leer ?
 

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
Der Reboot ist jetzt schon etwas her, aber:
:/var/mod/root# cat /proc/avm/log_sd/*
cat: can't open '/proc/avm/log_sd/crash': No data available
cat: can't open '/proc/avm/log_sd/crash2': No data available
cat: can't open '/proc/avm/log_sd/panic': No data available
cat: can't open '/proc/avm/log_sd/panic2': No data available
Wie gesagt, danach gibts es auch nach Stunden keinerlei Syslog-Einträge mehr, ich bezweifle dass die Box danach überhaupt noch irgendwas sinnvolles logt.
Wenn mich jemand anleiten würde wie man Strace richtig verwendet wäre wohl am zielführensten.
Wenn ich das Programm richtig verstanden habe, sollte man ja dann genau sehen bei welchem Schritt alles abschmiert.

Edit:
Also ich habe jetzt einfach mal etwas daruaf los probiert:
-strace-binrary unter debug in der freetz-toolchain ausgewählt
-config ansonsten wie vorher
Folgendes Ergebnis:
Code:
[email protected]:/etc/init.d# strace rc.openvpn start
execve("/mod/etc/init.d/rc.openvpn", ["rc.openvpn", "start"], 0x7fb5a294 /* 292 vars */) = 0
readlinkat(AT_FDCWD, "/proc/self/exe", "/bin/busybox", 4096) = 12
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|1<<MAP_HUGE_SHIFT, -1, 0) = 0x77adf000
open("/usr/lib/freetz/libc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/mod/lib/libc.so.1", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/mod/usr/lib/libc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.1", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=476080, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|1<<MAP_HUGE_SHIFT, -1, 0) = 0x77ade000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0\274\200\0\0\0004"..., 4096) = 4096
mmap(NULL, 561152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x77a41000
mmap(0x77a41000, 466352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x77a41000
mmap(0x77ac3000, 7948, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x72000) = 0x77ac3000
mmap(0x77ac5000, 17604, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x77ac5000
close(3)                                = 0
munmap(0x77ade000, 4096)                = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=29948, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|1<<MAP_HUGE_SHIFT, -1, 0) = 0x77ade000
set_thread_area(0x77ae5460)             = 0
open("/dev/urandom", O_RDONLY)          = 3
read(3, "\\\326/Z", 4)                  = 4
close(3)                                = 0
mprotect(0x77ac3000, 4096, PROT_READ)   = 0
mprotect(0x77ae0000, 4096, PROT_READ)   = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
getuid()                                = 0
brk(NULL)                               = 0x4a0000
brk(0x4a1000)                           = 0x4a1000
getpid()                                = 7872
rt_sigaction(SIGCHLD, {sa_handler=0x42c3d8, sa_mask=~[], sa_flags=0}, NULL, 16) = 0
rt_sigaction(SIGHUP, {sa_handler=SIG_DFL, sa_mask=[HUP], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 16) = 0
brk(0x4a2000)                           = 0x4a2000
brk(0x4a3000)                           = 0x4a3000
getppid()                               = 7869
uname({sysname="Linux", nodename="FritzBox7560", ...}) = 0
stat64("/etc/init.d", {st_mode=S_IFDIR|0755, st_size=1503, ...}) = 0
stat64(".", {st_mode=S_IFDIR|0755, st_size=1503, ...}) = 0
open("/mod/etc/init.d/rc.openvpn", O_RDONLY|O_LARGEFILE) = 3
fcntl64(3, F_DUPFD, 10)                 = 10
close(3)                                = 0
fcntl64(10, F_SETFD, FD_CLOEXEC)        = 0
rt_sigaction(SIGINT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 16) = 0
rt_sigaction(SIGINT, {sa_handler=0x42c3d8, sa_mask=~[], sa_flags=0}, NULL, 16) = 0
rt_sigaction(SIGQUIT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 16) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=~[], sa_flags=0}, NULL, 16) = 0
rt_sigaction(SIGTERM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 16) = 0
rt_sigaction(SIGTERM, {sa_handler=SIG_DFL, sa_mask=~[], sa_flags=0}, NULL, 16) = 0
read(10, "#!/bin/sh\n\nscriptname=$0\nDAEMON="..., 1023) = 1023
wait4(-1, 0x7fdf1724, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1724, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1724, WNOHANG, NULL)    = -1 ECHILD (No child processes)
open("/etc/init.d/modlibrc", O_RDONLY|O_LARGEFILE) = 3
fcntl64(3, F_DUPFD, 10)                 = 11
close(3)                                = 0
fcntl64(11, F_SETFD, FD_CLOEXEC)        = 0
brk(0x4a4000)                           = 0x4a4000
read(11, "# Shell functions for the rc-scr"..., 1023) = 1023
read(11, "ENV            <empty>          "..., 1023) = 1023
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1484, WNOHANG, NULL)    = -1 ECHILD (No child processes)
read(11, "_pre() { :; }\n\n# stop_post:\n#   "..., 1023) = 1023
brk(0x4a5000)                           = 0x4a5000
read(11, "&1)\"\n\tif [ $? -eq 0 ]; then\n\t\tec"..., 1023) = 1023
read(11, "ev/null 2>&1 || return 3\n\t\tdone\n"..., 1023) = 1023
brk(0x4a6000)                           = 0x4a6000
read(11, "f /tmp/flash/${DAEMON}/${in_file"..., 1023) = 1023
read(11, "ne 0 ]; then\n\t\t\techo 'failed.'\n\t"..., 1023) = 1023
brk(0x4a7000)                           = 0x4a7000
brk(0x4a8000)                           = 0x4a8000
read(11, "etc/init.d/rc.inetd config $DAEM"..., 1023) = 1023
read(11, ";;\n\t\t3)\n\t\t\techo 'not running.'\n\t"..., 1023) = 1023
brk(0x4a9000)                           = 0x4a9000
read(11, " \"config\" of rc.$DAEMON\n#   relo"..., 1023) = 1023
brk(0x4aa000)                           = 0x4aa000
read(11, "ME}.cfg\"\n\tif [ ! -r \"$CONF_FILE\""..., 1023) = 400
wait4(-1, 0x7fdf144c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf144c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf124c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1214, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/mod/etc/conf/openvpn.cfg", {st_mode=S_IFREG|0644, st_size=2426, ...}) = 0
geteuid()                               = 0
stat64("/mod/etc/conf/openvpn.cfg", {st_mode=S_IFREG|0644, st_size=2426, ...}) = 0
wait4(-1, 0x7fdf1284, WNOHANG, NULL)    = -1 ECHILD (No child processes)
open("/mod/etc/conf/openvpn.cfg", O_RDONLY|O_LARGEFILE) = 3
fcntl64(3, F_DUPFD, 10)                 = 12
close(3)                                = 0
fcntl64(12, F_SETFD, FD_CLOEXEC)        = 0
read(12, "export OPENVPN_ADDITIONAL='#'\nex"..., 1023) = 1023
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
read(12, "her AES-256-CBC\nkeepalive 10 120"..., 1023) = 1023
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
brk(0x4ab000)                           = 0x4ab000
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
read(12, "SH_DNS='#'\nexport OPENVPN_PUSH_D"..., 1023) = 380
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0fe4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
read(12, "", 1023)                      = 0
close(12)                               = 0
read(11, "", 1023)                      = 0
close(11)                               = 0
read(10, "${DAEMON} --config ${DAEMON_CONF"..., 1023) = 1023
brk(0x4ac000)                           = 0x4ac000
wait4(-1, 0x7fdf16ec, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/var/tmp/.openvpnfirstrun", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
wait4(-1, 0x7fdf16ec, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/mod/sbin/openvpn", {st_mode=S_IFREG|0755, st_size=1515136, ...}) = 0
geteuid()                               = 0
stat64("/mod/sbin/openvpn", {st_mode=S_IFREG|0755, st_size=1515136, ...}) = 0
read(10, "x Cert' 0 \"box_crt\"\n\t\t\tmodreg fi"..., 1023) = 1023
read(10, "MON\n\t\t\tDAEMON_BIN=$DAEMON\n\t\t\tDAE"..., 1023) = 976
brk(0x4ad000)                           = 0x4ad000
wait4(-1, 0x7fdf1684, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf13dc, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf13a4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf13dc, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/mod/etc/init.d/rc.inetd", {st_mode=S_IFREG|0755, st_size=940, ...}) = 0
geteuid()                               = 0
stat64("/mod/etc/init.d/rc.inetd", {st_mode=S_IFREG|0755, st_size=940, ...}) = 0
wait4(-1, 0x7fdf144c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf116c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf116c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/mod/etc/init.d/rc.inetd", {st_mode=S_IFREG|0755, st_size=940, ...}) = 0
geteuid()                               = 0
stat64("/mod/etc/init.d/rc.inetd", {st_mode=S_IFREG|0755, st_size=940, ...}) = 0
pipe([3, 4])                            = 3
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7873
close(4)                                = 0
read(3, "yes\n", 128)                   = 4
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7873, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
sigreturn({mask=[]})                    = 4
read(3, "", 128)                        = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7873
wait4(-1, 0x7fdf1134, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf11a4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1214, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1214, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/var/run/openvpn.pid", 0x7fdf0d98) = -1 ENOENT (No such file or directory)
wait4(-1, 0x7fdf1214, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf13ac, WNOHANG, NULL)    = -1 ECHILD (No child processes)
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7877
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7877
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7877, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
sigreturn({mask=[]})                    = 7877
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7878
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7878
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7878, si_uid=0, si_status=0, si_utime=1, si_stime=0} ---
sigreturn({mask=[]})                    = 7878
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(2, F_DUPFD_CLOEXEC, 10)         = 11
dup2(3, 2)                              = 2
close(3)                                = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7879
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7879
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7879, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
sigreturn({mask=[]})                    = 7879
dup2(11, 2)                             = 2
close(11)                               = 0
pipe([3, 4])                            = 3
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7880
close(4)                                = 0
read(3, "\n", 128)                      = 1
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7880, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
sigreturn({mask=[]})                    = 1
read(3, "", 128)                        = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7880
wait4(-1, 0x7fdf113c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf1174, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0d44, WNOHANG, NULL)    = -1 ECHILD (No child processes)
write(1, "Starting openvpn ... ", 21Starting openvpn ... )   = 21
wait4(-1, 0x7fdf0d44, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0b7c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/tmp/flash/openvpn/own_openvpn.conf", 0x7fdf0878) = -1 ENOENT (No such file or directory)
wait4(-1, 0x7fdf0b7c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf097c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf097c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7883
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7883
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7883, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
sigreturn({mask=[]})                    = 7883
pipe([3, 4])                            = 3
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7916
close(4)                                = 0
read(3, "/mod/sbin/openvpn\n", 128)     = 18
read(3, "", 128)                        = 0
close(3)                                = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7916, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
sigreturn({mask=[]})                    = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7916
wait4(-1, 0x7fdf0d44, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/mod/sbin/openvpn", {st_mode=S_IFREG|0755, st_size=1515136, ...}) = 0
geteuid()                               = 0
stat64("/mod/sbin/openvpn", {st_mode=S_IFREG|0755, st_size=1515136, ...}) = 0
wait4(-1, 0x7fdf0db4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0c24, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0dec, WNOHANG, NULL)    = -1 ECHILD (No child processes)
fcntl64(1, F_DUPFD_CLOEXEC, 10)         = 11
dup2(2, 1)                              = 1
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7917
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7917
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7917, si_uid=0, si_status=0, si_utime=1, si_stime=0} ---
sigreturn({mask=[]})                    = 7917
dup2(11, 1)                             = 1
close(11)                               = 0
wait4(-1, 0x7fdf0e5c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0e94, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0d04, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0ecc, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0ecc, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0f3c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
wait4(-1, 0x7fdf0f3c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
stat64("/var/run/openvpn.pid", {st_mode=S_IFREG|0644, st_size=5, ...}) = 0
wait4(-1, 0x7fdf0fac, WNOHANG, NULL)    = -1 ECHILD (No child processes)
write(1, "done.\n", 6done.
)                  = 6
wait4(-1, 0x7fdf11ac, WNOHANG, NULL)    = -1 ECHILD (No child processes)
pipe([3, 4])                            = 3
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7919
close(4)                                = 0
read(3, "/usr/sbin/brctl\n", 128)       = 16
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7919, si_uid=0, si_status=0, si_utime=0, si_stime=1} ---
sigreturn({mask=[]})                    = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7919
wait4(-1, 0x7fdf1174, WNOHANG, NULL)    = -1 ECHILD (No child processes)
pipe([3, 4])                            = 3
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x77ade068) = 7923
close(4)                                = 0
read(3,
Und mit "read (3," endet die Ausgabe und die Box gerät in diesen vegetativen Dämmerzustand zwischen Dies- und Jenseits. Nach ca. 90 Sekunden kommt dann "Verbindung zum Host verloren."

Ich weiß nicht ob das jetzt so richtig war, strace hat gefühlt 100 Variablen. Wenn ich irgendwelche Parameter anfügen soll last es mich einfach wissen.
 
Zuletzt bearbeitet:

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,062
Punkte für Reaktionen
725
Punkte
113
Das "strace" kann/muß man als Paket in Freetz mitbauen lassen, wenn man kein anderes hat (wobei das zum Kernel passen sollte, weil dessen Aufrufe ja "verfolgt" werden).

Der "usage screen" von "strace" sieht dann so aus:
Code:
[email protected]:~ $ strace -h
usage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...
              [-a column] [-o file] [-s strsize] [-P path]...
              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]
   or: strace -c[dfw] [-I n] [-e expr]... [-O overhead] [-S sortby]
              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]

Output format:
  -a column      alignment COLUMN for printing syscall results (default 40)
  -i             print instruction pointer at time of syscall
  -o file        send trace output to FILE instead of stderr
  -q             suppress messages about attaching, detaching, etc.
  -r             print relative timestamp
  -s strsize     limit length of print strings to STRSIZE chars (default 32)
  -t             print absolute timestamp
  -tt            print absolute timestamp with usecs
  -T             print time spent in each syscall
  -x             print non-ascii strings in hex
  -xx            print all strings in hex
  -y             print paths associated with file descriptor arguments
  -yy            print protocol specific information associated with socket file descriptors

Statistics:
  -c             count time, calls, and errors for each syscall and report summary
  -C             like -c but also print regular output
  -O overhead    set overhead for tracing syscalls to OVERHEAD usecs
  -S sortby      sort syscall counts by: time, calls, name, nothing (default time)
  -w             summarise syscall latency (default is system time)

Filtering:
  -e expr        a qualifying expression: option=[!]all or option=[!]val1[,val2]...
     options:    trace, abbrev, verbose, raw, signal, read, write, fault
  -P path        trace accesses to path

Tracing:
  -b execve      detach on execve syscall
  -D             run tracer process as a detached grandchild, not as parent
  -f             follow forks
  -ff            follow forks with output into separate files
  -I interruptible
     1:          no signals are blocked
     2:          fatal signals are blocked while decoding syscall (default)
     3:          fatal signals are always blocked (default if '-o FILE PROG')
     4:          fatal signals and SIGTSTP (^Z) are always blocked
                 (useful to make 'strace -o FILE PROG' not stop on ^Z)

Startup:
  -E var         remove var from the environment for command
  -E var=val     put var=val in the environment for command
  -p pid         trace process with process id PID, may be repeated
  -u username    run command as username handling setuid and/or setgid

Miscellaneous:
  -d             enable debug output to stderr
  -v             verbose mode: print unabbreviated argv, stat, termios, etc. args
  -h             print help message
  -V             print version
[email protected]:~ $
Allerdings läuft es darauf hinaus, daß man anstelle von "openvpn" eben "strace" aufrufen muß ... und das heißt am Ende wohl, daß man es nicht über das rc-Skript starten darf, obwohl man die Konfigurationsdatei natürlich trotzdem vorbereiten muß, was bei Freetz ja Bestandteil des Skripts ist.

Ich würde hier "strace -v -d -f -x -y -tt /usr/sbin/openvpn [args] 1>&2" verwenden beim ersten Versuch ... ich sehe gerade keine Option für "strace", um die Ausgabe ungepuffert erfolgen zu lassen. Notfalls müßte man dazu auf "stdbuf" zurückgreifen (https://linux.die.net/man/1/stdbuf) - das gehört zwar zu den "coreutils", ich weiß aber nicht, wie weit Freetz das aktuell unterstützt, daß man sich diese Utilities ins Image packen lassen kann.

[ Außerdem arbeitet "stdbuf" ziemlich kompliziert über "LD_PRELOAD" und schiebt dem zu startenden Programm eine "libstdbuf.so" unter, die das Buffering für die drei Standard-Handle entsprechend setzt, nachdem sie vom Kernel bereitgestellt wurden. Ich bin nicht sicher, ob das unter Freetz-Bedingungen sauber läuft, also versucht man es vielleicht erst mal mit "buffered I/O". Daher auch der Versuch mit der Debug-Ausgabe - auch wenn STDERR einen eigenen Buffer verwendet. Wenn man jetzt STDOUT und STDERR zusammenlegt (1>&2) UND soviele Daten wie möglich in diesen Handle schreibt, erhöht sich die Chance, daß die Daten noch im Terminal sichtbar sind, bevor alles andere zum Erliegen kommt. ]

"[args]" wäre durch die Parameter für den "openvpn"-Aufruf zu ersetzen ... im einfachsten Falle reicht die Angabe der Konfigurationsdatei nach dem "--config"-Parameter: https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage

EDIT: Im Nachtrag in #76 sieht man leider nur den Aufruf der BusyBox für das rc-Skript, weil die Option "-f" beim Aufruf von "strace" fehlte, die erst dafür sorgt, daß bei einem "fork()" die Children ebenfalls "traced" werden. Die Ausgabe wird also ziemlich lang ... am besten nimmt man sich dafür einen Terminal-Emulator wie "screen" oder "tmux" und aktiviert bei diesem die Protokollierung. Die Ausgabe im PuTTY-Log ist nicht so richtig gut geeignet i.d.R. (meist sind da Terminal-Control-Codes eingebettet) - notfalls geht aber auch diese.
 
Zuletzt bearbeitet:

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
[args]" wäre durch die Parameter für den "openvpn"-Aufruf zu ersetzen ... im einfachsten Falle reicht die Angabe der Konfigurationsdatei nach dem "--config"-Parameter
Das ist so ne Sache. Wenn die alte GUI so eine Datei anlegen würde, würde ich die einfach in der neuen GUI importieren und mich drangeben, den obwohl nur 1/3 Patches appliziert wird scheint diese ja zu funktionieren, und der deamon läuft ja auch bei mir an. Bittet man allerdings hier oder in einem VPN Forum um hilfe bei der Konfiguration des eigenen SetUps wird man nur müde angelächelt.
Ich habe gefühlt alle *.conf, *.cfg oder Dateien mit openvpn oder ovpn durch, aber ich finde sie einfach nicht.
Abgesehen davon scheint die Konfiguration ja ziemlich egal zu sein, denn schließlich läuft ja erst gar nicht wirklich was an.

Wenn ich also das rc-Skript diesmal mit all den gegebenen Parametern aufrufe, insbesondere -f, sollte uns das weiterbringen?
 

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,062
Punkte für Reaktionen
725
Punkte
113
Wenn ich das richtig sehe, wird hier ja wieder das "openvpn-cgi"-Paket verwendet? Das andere enthält m.W. kein "brctl", mit dem das TAP-Interface zur LAN-Bridge hinzugefügt wird.

Ich werde den Verdacht nicht los, daß hier genau dieses "brctl" das Problem sein könnte ... ich würde hier erst mal eine L3-Verbindung (also ein "dev tun") ohne Bridge testen, am besten wohl mit dem v2-Interface.

EDIT: Ich war gerade dabei, mir die beiden CGI-Pakete für OpenVPN noch einmal anzusehen, als #78 dazwischen kam.

Wenn Du in einer älteren Firmware eine funktionsfähige OpenVPN-Konfiguration mit dem alten CGI-Paket hast, kannst Du ja jederzeit nachsehen, was vom rc-Skript da in die Konfigurationsdatei geschrieben wurde ... diese steht ja unter "/mod/etc/irgendwas_mit_openvpn_oder_dem_namen_der_verbindung.conf" und kann problemlos parallel zum laufenden Daemon wegkopiert werden. Allerdings würde ich eben immer noch eine TUN-Konfiguration erzeugen und keine TAP - zumindest eben beide, damit man die Theorie, daß es am Ende am "brctl addif" liegt, auch prüfen kann.
 
Zuletzt bearbeitet:

CaptainMorgan

Neuer User
Mitglied seit
28 Nov 2015
Beiträge
161
Punkte für Reaktionen
3
Punkte
18
Also wenn ich das rc-Skript mit all den Parametern laufen lasse kommt es nicht zum Crash, aber OpenVPN startet auch nicht.
Es endet:

Code:
...
strace: next_event: queued pid 13843
strace: next_event: dequeued pid 13843
)           = ?
strace: [wait(0x000100) = 13843] WIFEXITED,exitcode=1
strace: next_event: queued pid 13843
strace: next_event: dequeued pid 13843
22:32:40.632917 +++ exited with 1 +++
strace: dropped tcb for pid 13843, 0 remain
Falls da was drin sein könnte kann ich gerne die ganze gefühlte Million Zeilen hochladen...

daß hier genau dieses "brctl" das Problem sein könnte ... ich würde hier erst mal eine L3-Verbindung (also ein "dev tun") ohne Bridge testen, am besten wohl mit dem v2-Interface
Das kann sehr gut möglich sein.
Wie gesagt, mit dem v2-Interface startet der daemon. tap oder tun.
Wann würdest du diesen "Test" als erfolgreich ansehen, und was und wie können wir da mehr -v gewinnen?
Denn das funktioniert prinzipiell, Feedzapper bestätigt das und dass sich hier sonst keiner meldet könnte auch eine Indikation sein, da ich ja offensichtlich schwer zurückgeblieben bin.
Denn nur über die Texteingabe bekomme ich die Konfiguration einfach nicht hin. Ich habe jetzt bestimmt in Summe 12 Stunden investiert und es ist immer irgendetwas anderes.

Off-Topic Rant:
OpenVPN ist ja so gut dokumentiert und so Open dass einem damit eigentlich keiner helfen will. Oder nicht?
Ich spreche jetzt vom Protokoll an sich und von weiteren Internet.
Man kann mir gerne einen ganzen Haufen Wahlmöglichkeiten geben für ein Programm und ich als Amateur mit Ambitionen kann meistens wählen was ich will und mich durchklicken/durchtippen, aber hier muss ich erstmal wählen ob ich was wählen will und jedesmal herausfinden welche Einstellungen notwendig sind, welche optional und welche hier nicht gemacht werden dürfen, aus einer 200 seitigen Dokumentation. Da kam mir die GUI der "v1-cgi" ganz gelegen, denn die Standardeinstellungen wurdem einem hier abgenommen.
Wenn ich mir wie hier erst ein eigenes StartSkript erstellen muss und Subnetz-Topologie komplett verstanden haben muss ist doch der 0815 User eigentlich raus.
Der ließt nur das Portfreigaben schlecht sind und man VPN verwenden soll.
Der stellt fest das die AVM-VPN Software Mist ist. Und die sind nunmal Marktführer in Deutschland.
Der stellt fest das er kein Geld für einen dedizierten VPN Server hat.
Selbst wenn stellt er fest dass er OpenVPN eigentlich nicht verstanden hat.
Und dann verwendet er wieder Portfreigaben und wird vom Botnetz herzlich aufgenommen.
Wenn das die einfachste Methode sein soll, und es zu Version 2.4 immer noch keine GUI gibt die einem zwei miteinander kompatible Konfig-Dateien erstellt, Geschweige denn mir den Zertifikat Horror abnimmt, dann muss sich die Community der Experten nicht wundern wenn die Möchtegern-Experten (im Sinne von möchte wirklich gerne Experte werden) und die Fire-and-Forget User sich nur noch genervt abwenden und frei Software nicht mehr wirklich unterstützen und auf Sicherheit scheißen.

Edit: Post kam nach dem Edit in #79.
Werde das auch noch probieren, hatte gedacht die config würde auch ohne laufender Daemon irgendwo liegen. Muss dafür natürlich wieder auf 7.01 downgraden und den manuellen patch von damals wieder einsetzen.

Edit 2:
Funktioniert ein Downgrade über das Web-IF noch?
Habe das alte Image noch mit dem es sicher funktioniert hat, aber ich bekomme:
Code:
ERLEDIGT – Rückgabewert des Installationsskripts: 2 (INSTALL_WRONG_HARDWARE)

Von /var/post_install generierter Inhalt:

Fehler: Nach-Installationsskript nicht gefunden oder nicht ausführbar.
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

3CX PBX - GRATIS
Linux / Win / Cloud

Neueste Beiträge

Statistik des Forums

Themen
232,075
Beiträge
2,018,490
Mitglieder
349,401
Neuestes Mitglied
Hoermi007