私はnftablesに関する包括的な文書の欠如のために少しがっかりしていましたが、現在はうまくいく簡単な例でさえ得られません。出力ルールを作成しようとしています。これは私の唯一のテーブルです。
root@localhost ~ # nft list ruleset
table inet filter {
chain output {
type filter hook output priority 0; policy accept;
}
}
8.8.8.8に送信されたパケット数を計算したいです。そのため、nftables wikiのサンプルコマンドを使用しました(https://wiki.nftables.org/wiki-nftables/index.php/Simple_rule_management):
root@localhost ~ # nft add rule filter output ip daddr 8.8.8.8 counter
Error: Could not process rule: No such file or directory
add rule filter output ip daddr 8.8.8.8 counter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
しかし、何らかの理由で非常に有益ではないエラーメッセージが表示されます。私が間違っていて、出力ルールを追加する正しい方法は何ですか?
root@localhost ~ # uname -a
Linux localhost 4.15.3-2-ARCH #1 SMP PREEMPT Thu Feb 15 00:13:49 UTC 2018 x86_64 GNU/Linux
root@localhost ~ # nft --version
nftables v0.8.2 (Joe Btfsplk)
root@localhost ~ # lsmod|grep '^nf'
nfnetlink_queue 28672 0
nfnetlink_log 20480 0
nf_nat_masquerade_ipv6 16384 1 ip6t_MASQUERADE
nf_nat_ipv6 16384 1 ip6table_nat
nf_nat_masquerade_ipv4 16384 1 ipt_MASQUERADE
nf_nat_ipv4 16384 1 iptable_nat
nf_nat 36864 4 nf_nat_masquerade_ipv6,nf_nat_ipv6,nf_nat_masquerade_ipv4,nf_nat_ipv4
nft_reject_inet 16384 0
nf_reject_ipv4 16384 1 nft_reject_inet
nf_reject_ipv6 16384 1 nft_reject_inet
nft_reject 16384 1 nft_reject_inet
nft_meta 16384 0
nf_conntrack_ipv6 16384 2
nf_defrag_ipv6 36864 1 nf_conntrack_ipv6
nf_conntrack_ipv4 16384 2
nf_defrag_ipv4 16384 1 nf_conntrack_ipv4
nft_ct 20480 0
nf_conntrack 155648 10 nft_ct,nf_conntrack_ipv6,nf_conntrack_ipv4,ipt_MASQUERADE,nf_nat_masquerade_ipv6,nf_nat_ipv6,nf_nat_masquerade_ipv4,ip6t_MASQUERADE,nf_nat_ipv4,nf_nat
nft_set_bitmap 16384 0
nft_set_hash 28672 0
nft_set_rbtree 16384 0
nf_tables_inet 16384 2
nf_tables_ipv6 16384 1 nf_tables_inet
nf_tables_ipv4 16384 1 nf_tables_inet
nf_tables 106496 10 nft_ct,nft_set_bitmap,nft_reject,nft_set_hash,nf_tables_ipv6,nf_tables_ipv4,nft_reject_inet,nft_meta,nft_set_rbtree,nf_tables_inet
nfnetlink 16384 3 nfnetlink_log,nfnetlink_queue,nf_tables
答え1
正しいコマンドは
root@localhost ~ # nft add rule inet filter output ip daddr 8.8.8.8 counter
inet
テーブル名の前にプレフィックス()を書き留めますfilter
。ファミリーテーブルです。オプションですが、省略するとnftではip
(= IPv4)仮定しますが、私はinet
pseudo-family(IPv4、IPv6)を使用しています。
#netfilter
Freenodeチャンネルの人々のおかげで、私はこれを学びました。
言うまでもなく、nftエラーメッセージは役に立ちません。 :-)