
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