
Ich verwende netfilter_queue, um bestimmte Pakete vom Kernel abzuholen und zu verarbeiten. Für die Netfilter-Warteschlange benötige ich alle Pakete einer bestimmten Quelleexcept UDP packets with src port 2152 & dst port 2152.
Ich versuche, die iptable-Regel hinzuzufügen als
iptables -A OUTPUT ! s 192.168.0.3 ! -p udp ! --sport 2905 ! --dport 2905 -j NFQUEUE --queue-num 0
iptables wirft einen Fehler mit ungültigem Argument aus. Bei der Abfrage von dmesg wird der folgende Fehler ausgegeben
ip_tables: udp match: only valid for protocol 17
Ich habe die folgende Variante ausprobiert und dabei ist derselbe Fehler aufgetreten.
iptables -A OUTPUT ! s 192.168.0.3 ! -p udp --sport 2905 --dport 2905 -j NFQUEUE --queue-num 0
Können Sie mir bitte Hinweise zur korrekten Verwendung des iptables-Befehls in meinem Fall geben?
Antwort1
Das Schreiben Ihrer Regeln ist möglicherweise viel einfacher, wenn Sie eine Kette erstellen, alles an die Kette senden und für alles, was nicht von der Kette verarbeitet werden soll, ein RETURN ausführen. Mit einer Kette können Sie später weitere Ausnahmen hinzufügen, ohne sich eine wirklich komplizierte Regel ausdenken zu müssen.
iptables -t filter -N out_queue
iptables -t filter -A OUTPUT -j out_queue
iptables -t filter -A out_queue -p udp --sport 2905 -j RETURN
iptables -t filter -A out_queue -p udp --dport 2905 -j RETURN
iptables -t filter -A out_queue -j NFQUEUE --queue-num 0
Antwort2
Sollte das ! nicht nach den Optionen stehen?
iptables -A OUTPUT -s ! 192.168.0.3 -p udp --sport ! 2905 --dport ! 2905 -j NFQUEUE --queue-num 0
Antwort3
Versuche es mit:
iptables -A OUTPUT -s 192.168.0.3 -p udp --sport!2905 --dport!2905 -j NFQUEUE --queue-num 0