nftables: priority handling for changes on the same table

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hallo Community

OpenWrt has recently switched to nftables for the new release openwrt-22.03 [1]. For this purpose, a new firewall service fw4 was created, which generates the rules for the nft and loads them into the kernel [2].

Since I am a package manager at openwrt I have a question regarding nftables. I am in the process of making the strongswan and other packages mwan3 fit for nftables because up now a lot of stuff is not working proper with fw4(nftables)
It works with iptables-nft and ip6tables-nft.

My problem now is that the strongswan iptables rules are set when a tunnel is up or down via the _updown script.
I wanted to port this to nft now.
To use the script approach with "nft rule add ..." seems to work, but deleting them is poor, because I have to search for the handle first.


Is there no other option here?
I have also tried to create my own chain "strongswan_filter_pre_forward" before the openwrt fw4 table chain "forward",
but somehow this does not not working as expected!

Not working:
root@G3-10483 ~ # nft list ruleset
table inet fw4 {
    ...
    chain strongswan_filter_pre_forward {
        type filter hook forward priority filter - 2; policy accept;
iifname "eth0" meta ipsec exists ipsec in reqid 1 ip saddr 192.168.17.0/24 ip daddr 192.168.99.0/24 accept oifname "eth0" meta ipsec exists ipsec out reqid 1 ip saddr 192.168.99.0/24 ip daddr 192.168.17.0/24 accept
    }
    ...
    chain forward {
        type filter hook forward priority filter; policy drop;
ct state established,related accept comment "!fw4: Allow forwarded established and related flows" iifname "eth1" jump forward_lan comment "!fw4: Handle lan IPv4/IPv6 forward traffic" iifname "eth0" jump forward_wan comment "!fw4: Handle wan IPv4/IPv6 forward traffic"
        jump handle_reject
    }
    ...
}
Working:
root@G3-10483 ~ # nft list ruleset
table inet fw4 {
    ...
    chain forward {
        type filter hook forward priority filter; policy drop;
iifname "eth0" meta ipsec exists ipsec in reqid 1 ip saddr 192.168.17.0/24 ip daddr 192.168.99.0/24 accept oifname "eth0" meta ipsec exists ipsec out reqid 1 ip saddr 192.168.99.0/24 ip daddr 192.168.17.0/24 accept ct state established,related accept comment "!fw4: Allow forwarded established and related flows" iifname "eth1" jump forward_lan comment "!fw4: Handle lan IPv4/IPv6 forward traffic" iifname "eth0" jump forward_wan comment "!fw4: Handle wan IPv4/IPv6 forward traffic"
        jump handle_reject
    }
    ...
}

I have specially lowered the 'priority' of the chain "strongswan_filter_pre_forward" by two so that it runs before the 'forward' chain.

Is it possible that my approach is wrong and it doesn't work like this? I have not found anything in the documentation about that.

Kind regards
Florian

[1] https://github.com/openwrt/openwrt/tree/openwrt-22.03
[2] https://git.openwrt.org/?p=project/firewall4.git;a=summary



[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux