我正在使用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抛出一个无效参数的错误。 查询dmesg,我看到下面的错误打印
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
你可以请build议正确的使用iptables命令我的情况。
如果你创build一个链,把所有东西都发送到链中,并且对你不希望链处理的东西做一个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
不应该的! 在select之后?
iptables -A OUTPUT -s ! 192.168.0.3 -p udp --sport ! 2905 --dport ! 2905 -j NFQUEUE --queue-num 0
尝试与:
iptables -A OUTPUT -s 192.168.0.3 -p udp --sport!2905 --dport!2905 -j NFQUEUE --queue-num 0