Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.4.2. nftables에서 명명된 세트 사용

nftables 프레임워크는 이름이 지정된 변경 집합을 지원합니다. 명명된 집합은 테이블 내의 여러 규칙에 사용할 수 있는 요소 목록 또는 범위입니다. 세트를 사용하는 규칙을 대체하지 않고 이름이 지정된 세트를 업데이트할 수 있다는 또 다른 이점은 세트를 사용하는 규칙을 대체하지 않고도 이름이 지정된 세트를 업데이트할 수 있다는 것입니다.
명명된 세트를 생성할 때 세트에 포함된 요소 유형을 지정해야 합니다. 다음 유형을 설정할 수 있습니다.
  • IPv4 주소 또는 범위를 포함하는 세트의 ipv4_addr (예: 192.0. 2.1) 또는 192.0.2.0/24.
  • IPv6 주소 또는 범위가 포함된 세트의 ipv6_addr (예: 2001:db8:1::1 또는 2001:db8:1::1/64 ) .
  • 52:54:00:6b:66:42 와 같은 미디어 액세스 제어(MAC) 주소 목록이 포함된 세트의 ether_addr.
  • inet_proto: tcp 와 같은 인터넷 프로토콜 유형 목록이 포함된 세트의 경우.
  • inet_service for a set that contains a list of Internet services, such as ssh.
  • 패킷 표시 목록을 포함하는 세트의 마크입니다. 패킷 표시는 모든 양의 32비트 정수 값(0 에서 2147483647)일 수 있습니다.

사전 요구 사항

  • example_chain 체인 및 example_table 테이블이 있습니다.

절차 6.14. nftables에서 명명된 세트 사용

  1. 빈 세트를 생성합니다. 다음 예제에서는 IPv4 주소에 대한 세트를 생성합니다.

    1. 여러 개의 개별 IPv4 주소를 저장할 수 있는 세트를 생성하려면 다음을 수행하십시오.
      # nft add set inet example_table example_set { type ipv4_addr \; }
    2. IPv4 주소 범위를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.
      # nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
    중요
    쉘이 endpoints를 명령의 끝으로 해석하지 않도록 하려면 백슬래시를 사용하여 Semicels를 이스케이프해야 합니다.
  2. 선택적으로 세트를 사용하는 규칙을 만듭니다. 예를 들어 다음 명령은 example_setIPv4 주소에서 모든 패킷을 삭제하는 example_tableexample_chain 에 규칙을 추가합니다.
    # nft add rule inet example_table example_chain ip saddr @example_set drop
    example_set 는 여전히 비어 있기 때문에 현재 규칙에는 영향을 미치지 않습니다.
  3. example_set 에 IPv4 주소를 추가합니다.

    1. 개별 IPv4 주소를 저장하는 세트를 생성하는 경우 다음을 입력합니다.
      # nft add element inet example_table example_set { 192.0.2.1, 192.0.2.2 }
    2. IPv4 범위를 저장하는 세트를 생성하는 경우 다음을 입력합니다.
      # nft add element inet example_table example_set { 192.0.2.0-192.0.2.255 }
    IP 주소 범위를 지정하는 경우 위 예제에서 192.0.2.0/24 와 같은CIDR(Classless Inter-Domain Routing) 표기법을 사용할 수 있습니다.