41.10. nftables 규칙 디버깅
nftables
프레임워크는 관리자가 규칙을 디버그하고 패킷이 일치하는 경우 다양한 옵션을 제공합니다.
41.10.1. 카운터를 사용하여 규칙 생성
규칙이 일치하는지 확인하려면 카운터를 사용할 수 있습니다.
- 기존 규칙에 카운터를 추가하는 프로시저에 대한 자세한 내용은 기존 규칙에 카운터 추가를 참조하십시오.
사전 요구 사항
- 규칙을 추가할 체인이 있습니다.
절차
counter
매개 변수를 사용하여 체인에 새 규칙을 추가합니다. 다음 예제에서는 포트 22에서 TCP 트래픽을 허용하고 이 규칙과 일치하는 패킷과 트래픽을 계산하는 카운터가 포함된 규칙을 추가합니다.# nft add rule inet example_table example_chain tcp dport 22 counter accept
카운터 값을 표시하려면 다음을 수행합니다.
# nft list ruleset table inet example_table { chain example_chain { type filter hook input priority filter; policy accept; tcp dport ssh counter packets 6872 bytes 105448565 accept } }
41.10.2. 기존 규칙에 카운터 추가
규칙이 일치하는지 확인하려면 카운터를 사용할 수 있습니다.
- 카운터를 사용하여 새 규칙을 추가하는 프로시저에 대한 자세한 내용은 카운터를 사용하여 규칙 생성을 참조하십시오.
사전 요구 사항
- 카운터를 추가할 규칙입니다.
절차
핸들을 포함하여 체인에 규칙을 표시합니다.
# nft --handle list chain inet example_table example_chain table inet example_table { chain example_chain { # handle 1 type filter hook input priority filter; policy accept; tcp dport ssh accept # handle 4 } }
규칙을 대체하지만 counter 매개 변수로 대체하여
카운터
를 추가합니다. 다음 예제에서는 이전 단계에 표시된 규칙을 교체하고 카운터를 추가합니다.# nft replace rule inet example_table example_chain handle 4 tcp dport 22 counter accept
카운터 값을 표시하려면 다음을 수행합니다.
# nft list ruleset table inet example_table { chain example_chain { type filter hook input priority filter; policy accept; tcp dport ssh counter packets 6872 bytes 105448565 accept } }
41.10.3. 기존 규칙과 일치하는 패킷 모니터링
nft monitor
명령과 함께 nftables
의 추적 기능을 사용하면 관리자가 규칙과 일치하는 패킷을 표시할 수 있습니다. 이 규칙과 일치하는 패킷을 모니터링하는 데 사용하는 규칙에 대한 추적을 활성화할 수 있습니다.
사전 요구 사항
- 카운터를 추가할 규칙입니다.
절차
핸들을 포함하여 체인에 규칙을 표시합니다.
# nft --handle list chain inet example_table example_chain table inet example_table { chain example_chain { # handle 1 type filter hook input priority filter; policy accept; tcp dport ssh accept # handle 4 } }
규칙을 교체하지만
메타 nftrace 세트 1
매개변수로 추적 기능을 추가합니다. 다음 예제에서는 이전 단계에 표시된 규칙을 교체하고 추적을 활성화합니다.# nft replace rule inet example_table example_chain handle 4 tcp dport 22 meta nftrace set 1 accept
nft monitor
명령을 사용하여 추적을 표시합니다. 다음 예제에서는 명령의 출력을 필터링하여inet example_table example_chain
이 포함된 항목만 표시합니다.# nft monitor | grep "inet example_table example_chain" trace id 3c5eb15e inet example_table example_chain packet: iif "enp1s0" ether saddr 52:54:00:17:ff:e4 ether daddr 52:54:00:72:2f:6e ip saddr 192.0.2.1 ip daddr 192.0.2.2 ip dscp cs0 ip ecn not-ect ip ttl 64 ip id 49710 ip protocol tcp ip length 60 tcp sport 56728 tcp dport ssh tcp flags == syn tcp window 64240 trace id 3c5eb15e inet example_table example_chain rule tcp dport ssh nftrace set 1 accept (verdict accept) ...
주의추적이 활성화된 규칙 수와 일치하는 트래픽 양에 따라
nft monitor
명령이 많은 출력을 표시할 수 있습니다.grep
또는 기타 유틸리티를 사용하여 출력을 필터링합니다.