nftables, 출력 규칙 구문 추가

nftables, 출력 규칙 구문 추가

나는 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) 가정하는데 저는 inetpseudo-family (IPv4, IPv6)를 사용하고 있습니다.

#netfilterFreenode 채널의 사람들 덕분에 저는 이것을 배웠습니다.

말할 필요도 없이 nft 오류 메시지는 도움이 되지 않습니다. :-)

관련 정보