
나는 커널에서 특정 패킷을 선택하고 그에 대한 처리를 수행하기 위해 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를 쿼리하면 다음과 같은 오류가 인쇄됩니다.
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