
Ich habe einen Router mit konfigurierter NAT-Portweiterleitung. Ich habe eine HTTP-Kopie einer großen Datei über NAT gestartet. Der HTTP-Server wird auf dem LAN-PC gehostet, der die große herunterzuladende Datei enthält. Ich habe den Dateidownload vom WAN-PC gestartet. Ich habe die NAT-Regel deaktiviert, während die Dateikopie ausgeführt wird. Die Kopie der Datei bleibt bestehen. Ich möchte das Kopieren der Datei stoppen, wenn ich die NAT-Weiterleitungsregel mit dem Conntrack-Tool deaktiviere.
meine Conntrack-Liste enthält die folgende Conntrack-Sitzung
# conntrack -L | grep "33.13"
tcp 6 431988 ESTABLISHED src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 [ASSURED] use=1
Ich habe versucht, es mit dem folgenden Befehl zu entfernen:
# conntrack -D --orig-src 192.168.33.13
tcp 6 431982 ESTABLISHED src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 [ASSURED] use=1
conntrack v1.4.3 (conntrack-tools): 1 flow entries have been deleted.
die Conntrack-Sitzung wird entfernt, wie ich im folgenden Befehl sehen kann. Aber eine andere Conntrack-Sitzung wurde mit der Quell-IP-Adresse erstellt, die die LAN-Adresse der entfernten Conntrack-Sitzung ist
# conntrack -L | grep "33.13"
tcp 6 431993 ESTABLISHED src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 [ASSURED] use=1
conntrack v1.4.3 (conntrack-tools): 57 flow entries have been shown.
Ich habe versucht, den neuen Conntrack zu entfernen, aber er bleibt bestehen
# conntrack -D --orig-src 192.168.3.17
# conntrack -L | grep "33.13"
conntrack v1.4.3 (conntrack-tools): 11 flow entries have been shown.
tcp 6 431981 ESTABLISHED src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 [ASSURED] use=1
Was fehlt mir?
Antwort1
https://www.kernel.org/doc/Documentation/networking/nf_conntrack-sysctl.txt
nf_conntrack_tcp_loose - BOOLEAN
0 - disabled not 0 - enabled (default)
If it is set to zero, we disable picking up already established connections.
Die bereits hergestellte Verbindung wird also im laufenden Betrieb erkannt (ohne dass SYN/SYN+ACK/ACK beteiligt ist) und als neuer Conntrack-Eintrag wieder hinzugefügt. Da es sich um einen neuen Conntrack-Eintrag handelt, wird die NAT-Tabelle erneut durchlaufen und die DNAT-Regel erneut angewendet. Selbst wenn eine Möglichkeit nicht sofort funktioniert (wenn zusätzlich zur DNAT-Regel kein SNAT/MASQUERADE definiert ist, erscheinen die ausgehenden Pakete des HTTP-Servers möglicherweise für kurze Zeit im WAN als 192.168.3.17 und werden von 192.168.33.13 abgelehnt/ignoriert), wird dies übereinstimmen, sobald die andere Möglichkeit es erneut versucht (ACK-Wiederholung von 192.168.33.13...).
Geben Sie Folgendes ein:
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
Und versuchen Sie erneut, den Conntrack-Eintrag mit conntrack -D
... zu löschen.
Dies sollte hoffentlich die Erstellung eines neuen Conntrack-Eintrags verhindern und den Download unterbrechen.