From a5757eac5096dd6ee957d408591c1adffb0a186e Mon Sep 17 00:00:00 2001 From: bol-van Date: Wed, 16 Feb 2022 23:33:45 +0300 Subject: [PATCH] nft: quoting interface names --- common/nft.sh | 4 +++- docs/nftables_notes.txt | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/common/nft.sh b/common/nft.sh index 8841aad..1a325a8 100644 --- a/common/nft.sh +++ b/common/nft.sh @@ -101,6 +101,8 @@ nft_create_or_update_flowtable() # can be called multiple times to add interfaces. interfaces can only be added , not removed local flags=$1 devices shift + # warning ! tested on nft 1.0.1 . 0.9.6 has bug not allowing quotes in flowtable device list + # dont want to make KOSTIL here, pls upgrade make_quoted_comma_list devices "$@" [ -n "$devices" ] && devices="devices={$devices};" [ -n "$flags" ] && flags="flags $flags;" @@ -334,7 +336,7 @@ _nft_fw_tpws6() _set_route_localnet 1 $3 for i in $3; do _dnat6_target $i DNAT6 - [ -n "$DNAT6" -a "$DNAT6" != '-' ] && nft_add_rule dnat_pre iifname $i meta l4proto tcp $filter ip6 daddr != @nozapret6 dnat ip6 to [$DNAT6]:$port + [ -n "$DNAT6" -a "$DNAT6" != '-' ] && nft_add_rule dnat_pre iifname \"$i\" meta l4proto tcp $filter ip6 daddr != @nozapret6 dnat ip6 to [$DNAT6]:$port shift done } diff --git a/docs/nftables_notes.txt b/docs/nftables_notes.txt index 9459a37..6e967f3 100644 --- a/docs/nftables_notes.txt +++ b/docs/nftables_notes.txt @@ -43,6 +43,15 @@ Swap позволяет немного сгладить проблему, но Что он делает за это время ? Тащит из ядра огромный блоб, в котором все в куче, и разбирает его, чтобы выделить искомую мелочь ? В какой-то мере удается это сгладить, обьединяя несколько команд в единый скрипт. +Боль N4 + +Лишь самые последние версии nft (проверено 1.0.1) не имеют бага, который не разрешает названия интерфейсов в ковычках в +определении flowtable. На ubuntu 20.04 версия более старая. Пролетаем. +Без ковычек нельзя вставить интерфейсы , имя которых начинается с цифры. +Не хотелось городить костыли. Обновляйтесь. +Иначе не будет работать software flow offloading, не говоря уже о hardware. +На самых первых OpenWRT снапшотах с firewall4 версия nft достаточно новая. + Плюс N1, главный