Назад | Перейти на главную страницу

nftables именованные наборы, которые соответствуют префиксу сети через фильтр или переменные

Я хочу сопоставить набор сетей. Анонимные наборы работают нормально, но я хочу создать набор префиксов для его повторного использования при необходимости.

nft add set filter AllowedSSH { type ipv4_addr\;} // type for addreses
nft add element filter AllowedSSH { 10.0.0.0/8 } // not working
nft add element filter AllowedSSH { 10.0.0.1 } // works by IP

Какой правильный тип фильтра я должен использовать для выполнения этого действия?

Стиль переменных тоже не работает:

nft define networks = { 10.0.0.0/8 }
nft add rule ip filter input ip saddr $networks tcp dport 22 accept
Error: syntax error, unexpected dport, expecting end of file or newline or semicolon
add rule ip filter input ip saddr tcp dport 53 counter accept
                                  ^^^^^

Версия NFT:

[root@foo ~]# nft -v
nftables v0.8 (Joe Btfsplk)

Заранее спасибо.

Если вы хотите добавить префиксы в набор, вы должны указать interval флаг.

В вашем примере это будет выглядеть так:

nft add set filter AllowedSSH { type ipv4_addr\; flags interval\; }
nft add element filter AllowedSSH { 10.0.0.0/8 }
nft add element filter AllowedSSH { 192.168.0.0/24 }

nft list set filter AllowedSSH
table ip filter {
    set AllowedSSH {
        type ipv4_addr
        flags interval
        elements = { 10.0.0.0/8, 192.168.0.0/24 }
    }
}