A jeżeli ktoś chce to może sobie zoptymalizować firewalla.
Normalnie firewall4 przetwarza po kolei reguły z pliku /etc/config/firewall dopisując kolejne linie do zestawu. Prawidłowo.
Reguły nftables możemy sobie zapisać do pliku:
# nft list ruleset > nftables.rules
dalej możemy sobie sprawdzić co proponuje "nft" jeśli chodzi o optymalizację zgodnie z punktem:
"It provides a generic set infrastructure that allows you to construct maps and concatenations. You can use these new structures to arrange your ruleset in a multidimensional tree which drastically reduces the number of rules that need to be inspected until reaching the final action on a packet." źródło: what is nft
U mnie proponuje:
# nft -o -f nftables.rules
Merging:
nftables.rules:7:3-45: iifname { "eth2", "br-lan" } jump input_lan comment "!fw4: Handle lan IPv4/IPv6 input traffic"
nftables.rules:8:3-31: iifname "eth1" jump input_wan comment "!fw4: Handle wan IPv4/IPv6 input traffic"
nftables.rules:9:3-38: iifname "zt2lrq26de" jump input_home comment "!fw4: Handle home IPv4/IPv6 input traffic"
into:
iifname vmap { { eth2,
br-lan } : jump input_lan, eth1 : jump input_wan, zt2lrq26de : jump input_home } comment "!fw4: Handle lan IPv4/IPv6 input traffic"
...
# i dodatkowe 2 zestawy które pominąłem
Każde z 3 linii "iifname" można zastąpić jedną linią z dodatkiem "vmap". Czyli łącznie 9 linii można zastąpić 3-ma liniami.
W razie jakby nie chciał przyjąć składni 2 interfejsów spiętych w nawiasy {} jak tu:
{ eth2, br-lan } : jump input_lan,
to można rozdzielić pojedynczo:
iifname vmap { eth2 : jump input_lan, br-lan : jump input_lan ....}
Po wykonaniu tej optymalizacji pliczek skurczył się względem oryginału:
# ll
drwxr-xr-x 1 root root 1024 May 7 22:56 ./
drwxr-xr-x 1 root root 1024 Apr 23 17:53 ../
-rw-r--r-- 1 root root 6493 May 7 23:26 nftables.optimize
-rw-r--r-- 1 root root 6788 May 8 11:16 nftables.rules
Po starcie można sobie czyścić reguły i ładować zoptymalizowane:
# nft flush ruleset
# nft -f nftables.optimize
Przy 3 regułach nie poprawi się szybkości, jedynie pozostaje zadowolenie z "optymalizacji"
Testy w sieci mówią że przy kilku tysiącach reguł być może warto to zrobić.
Kto ma kilka tysięcy reguł w firewallu na Openwrt?
* WNDR 4300v2 * || * Xiaomi Miwifi Mini * || Netgear R6220 *
* DVBT2 - T230C *