2.5. nftables 명령에서 세트 사용
nftables 프레임워크는 기본적으로 세트를 지원합니다. 예를 들어 규칙이 여러 IP 주소, 포트 번호, 인터페이스 또는 기타 일치 기준과 일치해야 하는 경우 세트를 사용할 수 있습니다.
2.5.1. nftables에서 익명 세트 사용 링크 복사링크가 클립보드에 복사되었습니다!
익명 세트에는 규칙에서 직접 사용하는 { 22, 80, 443 } 과 같이 중괄호로 묶은 쉼표로 구분된 값이 포함되어 있습니다. IP 주소 및 기타 일치 기준에도 익명 세트를 사용할 수 있습니다.
익명 세트의 단점은 세트를 변경하려면 규칙을 교체해야 한다는 것입니다. 동적 솔루션의 경우 nftables에서 명명된 집합을 사용하는 데 설명된 대로 명명된 집합을 사용합니다.
사전 요구 사항
-
inet제품군의example_chain체인과example_table테이블이 있습니다.
절차
예를 들어 포트
22,80및443으로 들어오는 트래픽을 허용하는example_table의example_chain에 규칙을 추가하려면 다음을 수행합니다.# nft add rule inet example_table example_chain tcp dport { 22, 80, 443 } accept선택 사항:
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 } }
2.5.2. nftables에서 명명된 세트 사용 링크 복사링크가 클립보드에 복사되었습니다!
nftables 프레임워크는 set라는 변경 가능한 집합을 지원합니다. 명명된 집합은 테이블 내의 여러 규칙에 사용할 수 있는 요소 목록 또는 범위입니다.A named set is a list or range of elements that you can use in multiple rules within a table. 익명 세트보다 다른 이점은 집합을 사용하는 규칙을 교체하지 않고도 명명된 집합을 업데이트할 수 있다는 것입니다.
명명된 집합을 만들 때는 세트에 포함된 요소 유형을 지정해야 합니다.When you create a named set, you must specify the type of elements the set contains. 다음 유형을 설정할 수 있습니다.
-
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(Media Access Control) 주소 목록이 포함된 세트의ether_addr. -
inet_proto는tcp와 같은 인터넷 프로토콜 유형 목록이 포함된 세트의 경우입니다. -
ssh와 같은 인터넷 서비스 목록이 포함된 세트의inet_service. -
패킷
표시 목록이 포함된 집합에 대한 Mark입니다. 패킷 마크는 모든 양의 32 비트 정수 값 (0~2147483647)일 수 있습니다.
사전 요구 사항
-
example_chain체인과example_table테이블이 있습니다.
절차
빈 세트를 생성합니다. 다음 예제에서는 IPv4 주소에 대한 세트를 생성합니다.
여러 개의 개별 IPv4 주소를 저장할 수 있는 세트를 만들려면 다음을 수행합니다.
# nft add set inet example_table example_set { type ipv4_addr \; }IPv4 주소 범위를 저장할 수 있는 세트를 만들려면 다음을 수행합니다.
# nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
중요쉘이 명령 끝부분을 해석하지 못하도록 하려면 백슬래시를 사용하여 host를 이스케이프해야 합니다.
선택 사항: 세트를 사용하는 규칙을 만듭니다. 예를 들어 다음 명령은
example_table의example_chain에example_set의 IPv4 주소에서 모든 패킷을 삭제하는 규칙을 추가합니다.# nft add rule inet example_table example_chain ip saddr @example_set dropexample_set는 여전히 비어 있기 때문에 현재 규칙이 적용되지 않습니다.example_set에 IPv4 주소를 추가합니다.개별 IPv4 주소를 저장하는 세트를 생성하는 경우 다음을 입력합니다.
# nft add element inet example_table example_set { 192.0.2.1, 192.0.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) 표기법을 사용할 수도 있습니다.