On 06/10/2020 10:31, Pablo Neira Ayuso wrote:
On Mon, Oct 05, 2020 at 12:56:00PM +0000, ѽ҉ᶬḳ℠ wrote:
I am trying to get a granular logging rule going, combining tcp and udp
sports for ip6 saddr but somehow failing:
tcp sport != { 80, 443, 993, 5228 } udp sport != 19302 ip6 saddr @g_6 log
flags all prefix "G_C :" continue
-> Error: conflicting protocols specified: tcp vs. udp
I suggest you express things is less convoluted ways, ie. positive
logic and default action to drop in your ruleset.
nft add rule ip6 x y meta l4proto . th dport { tcp . 80, tcp . 443, tcp . 993, tcp . 5228, udp . 19302 } ip6 saddr @y accept
You can set default policy in the chain to drop.
Thank you for the input. The rule is just for logging/debugging, not for
dropping frames and the logic is not to log:
* frames from tcp sport(s) 80, 443, 993, 5228
* frames from udp sport 19302
but log all other frames from ip6 saddr @foo
For that purpose inverting positive (consulted) logic seemed the way to
go and this should to work then:
meta l4proto . th sport != { tcp . 80, tcp . 443, tcp . 993, tcp . 5228,
udp . 19302 } ip6 saddr @foo flags all prefix "bar :" continue;