Regla de iptables para enviar paquetes que coincidan con una regla negativa específica

Regla de iptables para enviar paquetes que coincidan con una regla negativa específica

Estoy usando netfilter_queue para recoger ciertos paquetes del kernel y procesarlos. Para la cola de netfilter, necesito todos los paquetes de una fuente particularexcept UDP packets with src port 2152 & dst port 2152.

Intento agregar la regla iptable como

iptables -A OUTPUT ! s 192.168.0.3 ! -p udp ! --sport 2905 ! --dport 2905 -j NFQUEUE --queue-num 0

iptables arroja un error de argumento no válido. Al consultar dmesg, veo el siguiente error impreso

ip_tables: udp match: only valid for protocol 17

Probé la siguiente variación y arrojaron el mismo error.

iptables -A OUTPUT ! s 192.168.0.3 ! -p udp --sport 2905 --dport 2905 -j NFQUEUE --queue-num 0

¿Puede aconsejarme sobre el uso correcto del comando iptables para mi caso?

Respuesta1

Puede ser mucho más fácil escribir sus reglas si crea una cadena, envía todo a la cadena y realiza un RETORNO en todo lo que no desea que la cadena maneje. Con una cadena puedes agregar otras excepciones más adelante sin tener que idear una regla realmente complicada.

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

Respuesta2

¿No debería el! Estar detrás de las opciones?

iptables -A OUTPUT -s ! 192.168.0.3 -p udp --sport ! 2905 --dport ! 2905 -j NFQUEUE --queue-num 0

Respuesta3

prueba con:

iptables -A OUTPUT -s 192.168.0.3 -p udp --sport!2905 --dport!2905 -j NFQUEUE --queue-num 0

información relacionada