правило iptables для отправки пакетов, соответствующих определенному отрицательному правилу

правило iptables для отправки пакетов, соответствующих определенному отрицательному правилу

Я использую netfilter_queue, чтобы забрать определенные пакеты из ядра и выполнить некоторую обработку над ними. Для очереди netfilter мне нужны все пакеты из определенного источникаexcept UDP packets with src port 2152 & dst port 2152.

Я пытаюсь добавить правило iptable как

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

iptables выдает ошибку Invalid Argument. Запрашивая dmesg, я вижу следующую ошибку print

ip_tables: udp match: only valid for protocol 17

Я попробовал следующий вариант, но возникла та же ошибка.

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

Можете ли вы дать совет по правильному использованию команды iptables в моем случае?

решение1

Может быть намного проще писать правила, если вы создадите цепочку, отправите все в цепочку и сделаете RETURN для всего, что вы не хотите, чтобы цепочка обрабатывала. С цепочкой вы можете добавлять другие исключения позже, не придумывая действительно запутанное правило.

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

решение2

Разве не должен быть знак «!» после опций?

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

решение3

попробуйте с:

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

Связанный контент