TCP-Verbindung "auffrischen" und ggf. beenden

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
buhtz
Beiträge: 1106
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

TCP-Verbindung "auffrischen" und ggf. beenden

Beitrag von buhtz » 26.10.2022 07:44:46

So genau weiß ich nicht, wo mein Problem liegt. Scheinbar prüft Debianminidlnad nicht selbstständig die bestehenden Verbindungen und lässt sie damit ewig auf, auch wenn der Client (die Gegenseite) schon lange keinen keinen Strom mehr hat.

Beispiel:

Code: Alles auswählen

$ sudo netstat -tnpa | grep mini | grep -v "CLOSE_WAIT"

tcp        0      0 0.0.0.0:8201            0.0.0.0:*               LISTEN      663/minidlnad
tcp        0      0 0.0.0.0:8202            0.0.0.0:*               LISTEN      675/minidlnad
tcp        0      0 0.0.0.0:8203            0.0.0.0:*               LISTEN      673/minidlnad
tcp        0      0 0.0.0.0:8204            0.0.0.0:*               LISTEN      666/minidlnad
tcp        0      0 192.168.178.40:49414    192.168.178.20:13000    VERBUNDEN   675/minidlnad
tcp        0      0 192.168.178.40:49486    192.168.178.20:13000    VERBUNDEN   673/minidlnad
tcp        0      0 192.168.178.40:57348    192.168.178.31:1983     VERBUNDEN   666/minidlnad
tcp        0      0 192.168.178.40:57366    192.168.178.31:1983     VERBUNDEN   673/minidlnad
tcp        0      0 192.168.178.40:49480    192.168.178.20:13000    VERBUNDEN   663/minidlnad
tcp        0      0 192.168.178.40:57308    192.168.178.31:1983     VERBUNDEN   663/minidlnad
tcp        0      0 192.168.178.40:49450    192.168.178.20:13000    VERBUNDEN   663/minidlnad
tcp        0      0 192.168.178.40:49426    192.168.178.20:13000    VERBUNDEN   675/minidlnad
tcp        0      0 192.168.178.40:49508    192.168.178.20:13000    VERBUNDEN   666/minidlnad
tcp        0      0 192.168.178.40:57310    192.168.178.31:1983     VERBUNDEN   663/minidlnad
Die beiden Clients *.20 und *.31 haben seit mehren Minuten (und bei anderen Tests seit Tagen) keinen Strom mehr; also kein Stand-By.
Kann ich unabhängig von der Applikation, den den Socket geöffnet hat (hier minidlnad) das System anweisen die Verbindung zu "prüfen" (z.B. ist die Client IP überhaupt noch im Netz) und ggf. die Verbindung schließen?
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: TCP-Verbindung "auffrischen" und ggf. beenden

Beitrag von uname » 26.10.2022 08:28:47

Eine Lösung habe ich nicht. Aber du könntest mal mit Debianlsof versuchen ein paar mehr Details zu genau einer Verbindung zu einer IP-Adresse zu ermitteln und dieses hier posten. Auch kannst du dich (bei nur noch Offline-Verbindungen) mit Debianstrace an den Prozess dranhängen und schauen was da so passiert.

Ob "VERBUNDEN" wirklich wegfällt, wenn der Client offline geht, weiß ich nicht. Vielleicht ist es ja auch einfach nur eine Fehlinterpretation von netstat.
Vielleicht zeigt dir z. B. Debianlsof diesen verbundenen Socket gar nicht mehr an.

mat6937
Beiträge: 2953
Registriert: 09.12.2014 10:44:00

Re: TCP-Verbindung "auffrischen" und ggf. beenden

Beitrag von mat6937 » 26.10.2022 09:06:42

buhtz hat geschrieben: ↑ zum Beitrag ↑
26.10.2022 07:44:46
Kann ich unabhängig von der Applikation, den den Socket geöffnet hat (hier minidlnad) das System anweisen die Verbindung zu "prüfen" (z.B. ist die Client IP überhaupt noch im Netz) und ggf. die Verbindung schließen?
Ja, das sollte möglich sein. Wie ist auf dem System, die Ausgabe von:

Code: Alles auswählen

sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
?

EDIT:

Mit tcpdump und diesem Filter kannst Du keepalive packets (ack-Pakete der Länge 0) sniffen:

Code: Alles auswählen

tcpdump -c 100 -pvvveni any 'tcp port 1983 and ( tcp[tcpflags] & tcp-ack != 0 and ( (ip[2:2] - ((ip[0]&0xf)<<2) ) - ((tcp[12]&0xf0)>>2) ) == 0 )'
(wenn Du nicht root bist, dann sudo benutzen. Statt any evtl. das Interface benutzen. Den port kannst Du anpassen.).

buhtz
Beiträge: 1106
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: TCP-Verbindung "auffrischen" und ggf. beenden

Beitrag von buhtz » 05.11.2022 12:23:00

mat6937 hat geschrieben: ↑ zum Beitrag ↑
26.10.2022 09:06:42
Ja, das sollte möglich sein. Wie ist auf dem System, die Ausgabe von:

Code: Alles auswählen

sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes

Code: Alles auswählen

$ sudo sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
mat6937 hat geschrieben: ↑ zum Beitrag ↑
26.10.2022 09:06:42
Mit tcpdump und diesem Filter kannst Du keepalive packets (ack-Pakete der Länge 0) sniffen:

Code: Alles auswählen

tcpdump -c 100 -pvvveni any 'tcp port 1983 and ( tcp[tcpflags] & tcp-ack != 0 and ( (ip[2:2] - ((ip[0]&0xf)<<2) ) - ((tcp[12]&0xf0)>>2) ) == 0 )'
OK; das lasse ich heute mal laufen und sehe mir die Ausgabe an.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Antworten