
Ich versuche, iptables-Regeln zu erstellen, um den gesamten für Port 1986 bestimmten Datenverkehr auf Port 9 umzuleiten und mithilfe der folgenden Regel eine „Verbindung abgelehnt“ zu provozieren:
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 1986 -j DNAT --to-destination :9
Dies funktioniert bei neuen Verbindungen hervorragend, das Problem besteht jedoch darin, dass bestehende Verbindungen diese Regel zu umgehen scheinen und nicht abgelehnt werden.
Ich habe versucht, NOTRACK
der Rohtabelle eine Regel hinzuzufügen, um die Verfolgung des Verbindungsstatus zu vermeiden, aber dies hat keine Wirkung:
iptables -t raw -I PREROUTING -p tcp --dport 1986 -m state --state ESTABLISHED,RELATED,NEW,INVALID -j NOTRACK
Das Hinzufügen eines Status zur NAT-Regel funktioniert auch nicht:
iptables -t nat -I PREROUTING -p tcp --dport 1986 -m state --state ESTABLISHED,RELATED,NEW,INVALID -j DNAT --to-destination :9
Wie kann ich iptables verwenden, um für über bestehende Verbindungen gesendete Pakete einen „Verbindung abgelehnt“-Fehler zu provozieren?
Antwort1
Die DNAT
Regel erstellt einen Eintrag in der Conntrack-Tabelle, wenn die Verbindung mit TCP-3-Wege-Handshake hergestellt wird.
Die notrack
Regel scheint die Erstellung neuer Conntrack-Einträge zu deaktivieren. Sie verhindert jedoch nicht die Verwendung vorhandener Conntrack-Einträge.
Da die Verbindung bereits hergestellt ist, gibt es bereits einen Eintrag in der Conntrack-Tabelle und der Kernel verwendet diesen, um den Datenverkehr weiterzuleiten.
Sie sollten conntrack
das Tool verwenden, um die Flows aus der Conntrack-Tabelle zu löschen. Beispiel:
conntrack -D -s 192.168.1.10 -d 192.168.100.20 -p tcp --dport 1986
Nach dem Ausgeben dieses Befehls wird die Verbindung unter Verwendung der neuen DNAT-Regeln in iptables erneut zum Conntrack hinzugefügt. Dann wird der neue Zielserver die Verbindung ablehnen. Ich bin nicht sicher, was genau der neue Zielserver zurücksenden wird, vielleicht TCP RST.