На самом деле синтаксис не так уж и сложен, как может показаться на первый взгляд. Хотя отображение текущих цепочек оставляет желать лучшего. Если бы перед сообществом встал выбор между iptables и nft-tables, то я бы выбрал первое из-за простоты синтаксиса.
Список команд:
nft list ruleset
- вывести список всех правил nft
nft list table inet nat
- вывести список правил семейства ip таблицы nat
nft chain inet filter INPUT '{ policy drop ; }'
- поменять правило цепочки на drop
nft delete chain inet filter INPUT
-удалить цепочку INPUT
nft -a list chain inet filter INPUT
- посмотреть хендлы цепочки INPUT
nft delete rule inet filter INPUT handle 3
- удалить третий хендл в цепочке INPUT
nft -s list ruleset >> /etc/nftables.conf
- сохранить текущие правила nft в файл
nft -f /etc/nftables.conf
- загрузить правила nft из файла
nft add table inet filter
- добавить таблицу ip filter
nft list ruleset > /etc/nftables.conf
- сохранить правила в автозагрузку
Список цепочек:
nft add chain inet filter INPUT '{ type filter hook input priority 0 ; policy accept ; }'
nft add chain inet filter FORWARD '{ type filter hook forward priority 0 ; policy accept ; }'
nft add chain inet filter OUTPUT '{ type filter hook output priority 0 ; policy accept ; }'
nft add chain inet nat PREROUTING '{ type nat hook prerouting priority srcnat; policy accept; }'
nft add chain inet nat POSTROUTING '{ type nat hook postrouting priority srcnat; policy accept; }'
Список примеров nftables:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j DROP
nft add rule inet filter INPUT iifname "eth0" tcp dport 80 counter drop
nft add rule inet filter INPUT iifname "eth0" tcp dport 22 drop
nft add rule inet filter INPUT iifname "eth0" ip saddr 193.201.90.90 tcp dport 22 accept