Manipulation des IPv4-Identifikationsfelds in Linux

Manipulation des IPv4-Identifikationsfelds in Linux

Wenn Don't Fragmentdie 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 0x0000ID-Feld blockiert. Mein „moderner“ 4.4.0-Linux-Kernel generiert Pakete mit ID, 0x0000daher kann ich keine TCP-Verbindung herstellen.

Wie kann ich die Generierung dieser ID unterbinden 0x0000oder 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. notrackwird nicht benötigt, Conntrack-Einträge kümmern sich nicht um diese ID.

Hier ist einnftablesRegel zum Ändern des ID-Werts auf den Wert, 0xbeefwenn [DF] gesetzt ist und ID == 0. Ich glaube nicht, dass iptablesdas ü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'    

0x4000Hier bedeutetdie DFFlagge.

verwandte Informationen