Как правильо указать muliport для для source и destination port?
Мне нужно, чтобы все пакеты с портами 4222,6379 не попадали под правила и правило нужно одной строкой так как пакет улетит иначе в очередь. Я пытался сделать так.
iptables -A PREROUTING -t raw -p tcp -m tcp ! --sport 4222 ! --dport 4222 -J NFQUEUE --queue-num 100
iptables -A PREROUTING -t raw -p tcp -m tcp ! --sport 6379 ! --dport 6379 -J NFQUEUE --queue-num 100
Но логично пакеты с портом 6379 попадают под верхнее правило.
iptables -A PREROUTING -t raw -p tcp -m tcp -m multiport ! --sport 4222,6379 ! --dport 4222,6379 -J NFQUEUE --queue-num 100
а данное правило не срабатывает, как быть ?
Ответы (1 шт):
Автор решения: Fat-Zer
→ Ссылка
данное правило не срабатывает, как быть ?
Общий принцип: отфильтровывай пакеты предыдущими правилами.
iptables -t raw -A PREROUTING -p tcp --sport 4222 -j ACCEPT
iptables -t raw -A PREROUTING -p tcp --sport 6379 -j ACCEPT
iptables -t raw -A PREROUTING -p tcp --dport 4222 -j ACCEPT
iptables -t raw -A PREROUTING -p tcp --dport 6379 -j ACCEPT
iptables -t raw -A PREROUTING -j NFQUEUE --queue-num 100
Если не хочешь сразу принимать пакеты, а, возможно, обрабатывать их другими правилами, то создай отдельную цепочку:
iptables -t raw -N maybe_nfqueue
iptables -t raw -A maybe_nfqueue -p tcp --sport 4222 -j RETURN
iptables -t raw -A maybe_nfqueue -p tcp --dport 4222 -j RETURN
# ...
iptables -t raw -A maybe_nfqueue -j NFQUEUE --queue-num 100
iptables -t raw -A PREROUTING -p tcp -j maybe_nfqueue
Ну и раз -m multiport упомянут, то в данном случае можно обойтись и одним правилом (внимание на то что они --ports):
iptables -t raw -A PREROUTING -p tcp -m multiport ! --ports 4222,6379 \
-j NFQUEUE --queue-num 100