nftables
特徴
ebtables, arptables, iptables, ip6tables を統合した。
設定をリスト型からプログラム型にした。
ルールセットの変更を個別にしてアトミック的に行えるようにした。
nf_tables カーネルモジュールの存在確認
code:test_exists_nf_tables.console
# lsmod | grep '^nf_tables\b'
nf_tables 172032 179 nft_ct,nft_reject_inet,nft_fib_ipv6,nft_fib_ipv4,nft_chain_nat,nf_tables_set,nft_reject,nft_fib,nft_fib_inet
iptables が nf_tables を利用しているかの確認
code:test_iptables_uses_nf_tables(console)
# iptables --version
iptables v1.8.4 (nf_tables)
現在のルールセットすべてを表示する。
code:show_all_ruleset(console)
# nft list ruleset
ルールセットをすべて破棄する
code:delete_all_ruleset(console)
# nft flush ruleset
このルールセットをファイルに保存してから -f で読み出すと元に戻せる。(ただし、変数定義が消える)
code:load_ruleset(console)
ルールセットを保存
# nft list ruleset >sample_ruleset
ルールセットを破棄
# nft flush ruleset
ルールセットが破棄されたことを確認
# nft list ruleset
保存したルールセットを読み込み
# nft -f sample_ruleset
アドレスファミリは以下の6つが用意されている。inet は ip と ip6 の両方に効果がある。
table:address_family
ip
ip6
inet
arp
bridge
netdev
特定のIPアドレスとボートを許可する。
statement
条件が合致した後に実行される処理が statement
statement には以下の種類がある。
verdict statement
payload statement
extension header statement
log statement
reject statement
counter statement
conntrack statement
notrack statement
meta statement
limit statement
nat statement
tproxy statement
synproxy statement
flow statement
queue statement
dup statement
fwd statement
set statement
map statement
vmap statement
参考