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에서 익명 맵 사용

  1. example_table 을 생성합니다.
    # nft add table inet example_table
  2. example_tabletcp_packets 체인을 만듭니다.
    # nft add chain inet example_table tcp_packets
  3. 이 체인의 트래픽 수를 계산하는 tcp_packets 에 규칙을 추가합니다.
    # nft add rule inet example_table tcp_packets counter
  4. example_tableudp_packets 체인을 생성합니다.
    # nft add chain inet example_table udp_packets
  5. 이 체인의 트래픽을 계산하는 udp_packets 에 규칙을 추가합니다.
    # nft add rule inet example_table udp_packets counter
  6. 들어오는 트래픽에 사용할 체인을 만듭니다. 예를 들어 들어오는 트래픽을 필터링하는 example_table 에서 incoming_traffic 라는 체인을 생성하려면 다음을 수행합니다.
    # nft add chain inet example_table incoming_traffic { type filter hook input priority 0 \; }
  7. incoming_traffic 에 익명 맵이 있는 규칙을 추가합니다.
    # nft add rule inet example_table incoming_traffic ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }
    익명 맵은 패킷을 구분하여 프로토콜을 기반으로 다른 카운터 체인으로 보냅니다.
  8. 트래픽 카운터를 나열하려면 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_packetsudp_packets 체인의 카운터는 수신된 패킷 수와 바이트를 모두 표시합니다.