8.5. nftables 명령에서 세트 사용


nftables 프레임워크는 기본적으로 세트를 지원합니다. 예를 들어 규칙이 여러 IP 주소, 포트 번호, 인터페이스 또는 기타 일치 기준과 일치해야 하는 경우 세트를 사용할 수 있습니다.

8.5.1. nftables에서 익명 세트 사용

익명 집합에는 규칙에서 직접 사용하는 { 22, 80, 443 } 과 같이 중괄호로 묶은 쉼표로 구분된 값이 포함되어 있습니다. IP 주소 및 기타 일치 조건에도 익명 세트를 사용할 수 있습니다.

익명 세트의 단점은 집합을 변경하려면 규칙을 교체해야 한다는 것입니다. 동적 솔루션의 경우 nftables에서 명명된 세트 사용에 설명된 대로 이름이 지정된 세트를 사용합니다.

사전 요구 사항

  • inet 제품군의 example_chain 체인과 example_table 테이블이 있습니다.

프로세스

  1. 예를 들어 포트 22,80443 으로 들어오는 트래픽을 허용하는 example_table 에서 example_chain 에 규칙을 추가하려면 다음을 수행합니다.

    # nft add rule inet example_table example_chain tcp dport { 22, 80, 443 } accept
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: example_table 에 모든 체인과 해당 규칙을 표시합니다.

    # nft list table inet example_table
    table inet example_table {
      chain example_chain {
        type filter hook input priority filter; policy accept;
        tcp dport { ssh, http, https } accept
      }
    }
    Copy to Clipboard Toggle word wrap

8.5.2. nftables에서 named set 사용

nftables 프레임워크는 변경 가능한 이름이 설정된 세트를 지원합니다. 명명된 세트는 테이블 내의 여러 규칙에서 사용할 수 있는 요소 목록 또는 범위입니다. 익명 세트를 통한 또 다른 이점은 세트를 사용하는 규칙을 교체하지 않고도 이름이 지정된 세트를 업데이트할 수 있다는 것입니다.

명명된 세트를 만들 때 집합에 포함된 요소 유형을 지정해야 합니다. 다음 유형을 설정할 수 있습니다.

  • 192.0.2.1 또는 192.0.2.0/24 와 같은 IPv4 주소 또는 범위가 포함된 세트의 ipv4_addr.
  • 2001:db8:1::1 또는 2001:db8:1::1 /64 와 같은 IPv6 주소 또는 범위가 포함된 세트의 ipv6_addr
  • 52:54:00:6b:66:42 와 같은 미디어 액세스 제어(MAC) 주소 목록이 포함된 세트의 ether_addr
  • inet_prototcp 와 같은 인터넷 프로토콜 유형 목록이 포함된 세트의 경우입니다.
  • ssh 와 같은 인터넷 서비스 목록이 포함된 세트의 inet_service.
  • 패킷 표시 목록을 포함하는 세트의 마크 입니다. 패킷 표시는 모든 양의 32비트 정수 값(0 ~ 2147483647)일 수 있습니다.

사전 요구 사항

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

프로세스

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

    • 여러 개별 IPv4 주소를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.

      # nft add set inet example_table example_set { type ipv4_addr \; }
      Copy to Clipboard Toggle word wrap
    • IPv4 주소 범위를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.

      # nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
      Copy to Clipboard Toggle word wrap
    중요

    쉘이 명령의 마지막으로 message를 해석하지 못하도록 하려면 백슬래시를 사용하여 together을 이스케이프해야 합니다.

  2. 선택 사항: 세트를 사용하는 규칙을 생성합니다. 예를 들어 다음 명령은 example_tableexample_chain 에 규칙을 추가하여 example_set 의 IPv4 주소에서 모든 패킷을 삭제합니다.

    # nft add rule inet example_table example_chain ip saddr @example_set drop
    Copy to Clipboard Toggle word wrap

    example_set 은 여전히 비어 있기 때문에 규칙은 현재 적용되지 않습니다.

  3. IPv4 주소를 example_set 에 추가합니다.

    • 개별 IPv4 주소를 저장하는 세트를 생성하는 경우 다음을 입력합니다.

      # nft add element inet example_table example_set { 192.0.2.1, 192.0.2.2 }
      Copy to Clipboard Toggle word wrap
    • IPv4 범위를 저장하는 세트를 생성하는 경우 다음을 입력합니다.

      # nft add element inet example_table example_set { 192.0.2.0-192.0.2.255 }
      Copy to Clipboard Toggle word wrap

      IP 주소 범위를 지정하면 위 예제의 192.0.2.0/24 와 같은 CIDR(Classless Inter-Domain Routing) 표기법을 사용할 수 있습니다.

8.5.3. 동적 세트를 사용하여 패킷 경로의 항목 추가

nftables 프레임워크의 동적 세트를 사용하면 패킷 데이터에서 요소를 자동으로 추가할 수 있습니다. 예를 들어 IP 주소, 대상 포트, MAC 주소 등이 있습니다. 이 기능을 사용하면 이러한 요소를 실시간으로 수집하고 거부 목록을 만들고, 목록을 금지하고, 보안 위협에 즉시 대응할 수 있도록 다른 요소를 사용할 수 있습니다.

사전 요구 사항

  • inet 제품군의 example_chain 체인과 example_table 테이블이 있습니다.

프로세스

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

    • 여러 개별 IPv4 주소를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.

      # nft add set inet example_table example_set { type ipv4_addr \; }
      Copy to Clipboard Toggle word wrap
    • IPv4 주소 범위를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.

      # nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
      Copy to Clipboard Toggle word wrap
      중요

      쉘이 명령의 마지막으로 message를 해석하지 못하도록 하려면 백슬래시를 사용하여 together을 이스케이프해야 합니다.

  2. 들어오는 패킷의 소스 IPv4 주소를 example_set 세트에 동적으로 추가하는 규칙을 만듭니다.

    # nft add rule inet example_table example_chain set add ip saddr @example_set
    Copy to Clipboard Toggle word wrap

    명령은 example_chain 규칙 체인에 새 규칙을 생성하고 example_table 은 패킷의 소스 IPv4 주소를 example_set 에 동적으로 추가합니다.

검증

  • 규칙이 추가되었는지 확인합니다.

    # nft list ruleset
    ...
    table ip example_table {
    	set example_set {
    		type ipv4_addr
    		elements = { 192.0.2.250, 192.0.2.251 }
    	}
    
    	chain example_chain {
        type filter hook input priority 0
    		add @example_set { ip saddr }
    	}
    }
    Copy to Clipboard Toggle word wrap

    명령은 현재 nftables 에 로드된 전체 규칙 세트를 표시합니다. IP가 적극적으로 규칙을 트리거하고 있으며 example_set 이 관련 주소로 업데이트되고 있음을 보여줍니다.

다음 단계

동적 IP 세트가 있으면 다양한 보안, 필터링 및 트래픽 제어 목적으로 사용할 수 있습니다. 예를 들면 다음과 같습니다.

  • 블록, 제한 또는 네트워크 트래픽 로그
  • 신뢰할 수 있는 사용자를 금지하기 위해 허용 목록과 결합
  • 자동 시간 초과를 사용하여 초과 차단 방지
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat