Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
6.5. nftables 명령에서 검증 맵 사용
사전이라고도 하는verdict 맵을 사용하면
nft
가 작업과 일치 기준을 매핑하여 패킷 정보를 기반으로 작업을 수행할 수 있습니다.
6.5.1. nftables에서 익명 맵 사용
익명 맵은 규칙에서 직접 사용하는
{ match_criteria : action }
문입니다. 문에는 쉼표로 구분된 여러 매핑이 포함될 수 있습니다.
익명 맵의 단점은 맵을 변경하려면 규칙을 교체해야 합니다. 동적 솔루션의 경우 6.5.2절. “nftables에서 이름이 지정된 맵 사용” 에 설명된 대로 이름이 지정된 맵을 사용합니다.
이 예제에서는 익명 맵을 사용하여 IPv4 및 IPv6 프로토콜의 TCP 및 UDP 패킷을 서로 다른 체인으로 라우팅하여 수신되는 TCP 및 UDP 패킷을 개별적으로 계산하는 방법을 설명합니다.
절차 6.15. nftables에서 익명 맵 사용
- example_table 을 생성합니다.
# nft add table inet example_table
- example_table 에
tcp_packets
체인을 만듭니다.# nft add chain inet example_table tcp_packets
- 이 체인의 트래픽 수를 계산하는
tcp_packets
에 규칙을 추가합니다.# nft add rule inet example_table tcp_packets counter
- example_table 에
udp_packets
체인을 생성합니다.# nft add chain inet example_table udp_packets
- 이 체인의 트래픽을 계산하는
udp_packets
에 규칙을 추가합니다.# nft add rule inet example_table udp_packets counter
- 들어오는 트래픽에 사용할 체인을 만듭니다. 예를 들어 들어오는 트래픽을 필터링하는 example_table 에서
incoming_traffic
라는 체인을 생성하려면 다음을 수행합니다.# nft add chain inet example_table incoming_traffic { type filter hook input priority 0 \; }
incoming_traffic
에 익명 맵이 있는 규칙을 추가합니다.# nft add rule inet example_table incoming_traffic ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }
익명 맵은 패킷을 구분하여 프로토콜을 기반으로 다른 카운터 체인으로 보냅니다.- 트래픽 카운터를 나열하려면 example_table 을 표시합니다.
# nft list table inet example_table table inet example_table { chain tcp_packets { counter packets 36379 bytes 2103816 } chain udp_packets { counter packets 10 bytes 1559 } chain incoming_traffic { type filter hook input priority filter; policy accept; ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets } } }
tcp_packets
및udp_packets
체인의 카운터는 수신된 패킷 수와 바이트를 모두 표시합니다.