
Wenn Don't Fragment
die Flagge gesetzt ist, erlaubt IPv4 RFC das Setzen des Identifikationsfeldes auf 0x0000
.
Ich habe einen Peer, der sich hinter einer Firewall befindet, die RFC unterbricht und alle IPv4-Pakete mit einem solchen 0x0000
ID-Feld blockiert. Mein „moderner“ 4.4.0-Linux-Kernel generiert Pakete mit ID, 0x0000
daher kann ich keine TCP-Verbindung herstellen.
Wie kann ich die Generierung dieser ID unterbinden 0x0000
oder wie kann ich dieses Feld mit iptables mangle oder auf andere Weise manipulieren?
Antwort1
Sie meinen wahrscheinlichRFC 6864.
Unter Linux 4.17.x konnte ich sehen, dass „id = 0“ nur zuverlässig für das SYN+ACK-Paket eines Servers angezeigt wurde, der auf eine empfangene Verbindung antwortete, aber nicht danach.
UPDATE: OP hat bestätigt, dass dies auch in der Frage der Normalfall sei (mit einem 4.4.x-Kernel).
WahrscheinlichMindestanforderung: nftables v0.6. notrack
wird nicht benötigt, Conntrack-Einträge kümmern sich nicht um diese ID.
Hier ist einnftables
Regel zum Ändern des ID-Werts auf den Wert, 0xbeef
wenn [DF] gesetzt ist und ID == 0. Ich glaube nicht, dass iptables
das überhaupt möglich ist.
nft add table raw
nft 'add chain raw output {type filter hook output priority -300;}'
nft 'add rule raw output ip frag-off & 0x4000 != 0 ip id == 0 ip id set 0xbeef'
0x4000
Hier bedeutetdie DF
Flagge.