6.5.2. nftables에서 이름이 지정된 맵 사용
nftables 프레임워크는 이름이 지정된 map을 지원합니다. 이러한 맵은 테이블 내의 여러 규칙에 사용할 수 있습니다. 익명 맵의 또 다른 장점은 이름을 사용하는 규칙을 대체하지 않고 이름이 지정된 맵을 업데이트할 수 있다는 것입니다.
이름이 지정된 맵을 생성할 때 요소 유형을 지정해야 합니다.
- 일치하는 파트에 대한
ipv4_addr에IPv4주소(예:192.0.2.1)가 포함되어 있습니다. - 일치하는 맵의
ipv6_addr에2001:db8:1::1과 같은IPv6주소가 포함되어 있습니다. - 일치하는 부분이 있는 맵의
ether_addr에는52:54:00:6b:66:42와 같은 미디어 액세스 제어(MAC) 주소가 포함됩니다. inet_protofor a map whose match part contains an Internet protocol type, such astcp.- 일치하는 부분이 있는 맵의
inet_service에는ssh또는22와 같은 인터넷 서비스 이름 포트 번호가 포함됩니다. - 패킷
마크가 포함된 맵과 일치합니다. 패킷 마크는 임의의 양의 32비트 정수 값( 0에서 2147483647)일 수 있습니다.A packet mark can be any positive 32-bit integer value (0to2147483647). - part에
카운터값이 포함된 맵의 카운터를 나타냅니다.Represents a counter for a map whose match part contains a counter value. 카운터 값은 모든 양의 64비트 정수 값일 수 있습니다. 바인딩과 일치하는 맵의 할당량에 할당량 값이 포함됩니다. 할당량 값은 모든 양의 64비트 정수 값일 수 있습니다.
이 예제에서는 소스 IP 주소에 따라 들어오는 패킷을 허용하거나 삭제하는 방법을 설명합니다. 이름 지정된 맵을 사용하면 IP 주소 및 작업이 맵에 동적으로 저장되는 동안 이 시나리오를 구성하는 단일 규칙만 필요합니다. 이 절차에서는 맵에서 항목을 추가 및 제거하는 방법도 설명합니다.
절차 6.16. nftables에서 이름이 지정된 맵 사용
- 테이블을 만듭니다. 예를 들어
IPv4패킷을 처리하는 example_table 라는 테이블을 생성하려면 다음을 수행합니다.nft add table ip example_table
# nft add table ip example_tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 체인을 만듭니다. 예를 들어 example_table 에 example_chain 이라는 체인을 만들려면 다음을 수행합니다.
nft add chain ip example_table example_chain { type filter hook input priority 0 \; }# nft add chain ip example_table example_chain { type filter hook input priority 0 \; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요쉘이 endpoints를 명령의 끝으로 해석하지 않도록 하려면 백슬래시를 사용하여 Semicels를 이스케이프해야 합니다. - 빈 맵을 생성합니다. 예를 들어
IPv4주소에 대한 맵을 생성하려면 다음을 수행합니다.nft add map ip example_table example_map { type ipv4_addr : verdict \; }# nft add map ip example_table example_map { type ipv4_addr : verdict \; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 맵을 사용하는 규칙을 만듭니다. 예를 들어 다음 명령은 example_map 에 모두 정의된
IPv4주소에 작업을 적용하는 example_table 의 example_chain 에 규칙을 추가합니다.nft add rule example_table example_chain ip saddr vmap @example_map
# nft add rule example_table example_chain ip saddr vmap @example_mapCopy to Clipboard Copied! Toggle word wrap Toggle overflow IPv4주소 및 해당 작업을 example_map:에 추가합니다.nft add element ip example_table example_map { 192.0.2.1 : accept, 192.0.2.2 : drop }# nft add element ip example_table example_map { 192.0.2.1 : accept, 192.0.2.2 : drop }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제에서는 작업에 대한IPv4주소 매핑을 정의합니다. 위에서 만든 규칙과 함께 방화벽은192.0.2.1에서 패킷을 수락하고192.0.2.2에서 패킷을 삭제합니다.- 선택적으로 다른 IP 주소 및 action 문을 추가하여 맵을 향상시킵니다.
nft add element ip example_table example_map { 192.0.2.3 : accept }# nft add element ip example_table example_map { 192.0.2.3 : accept }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 선택적으로 맵에서 항목을 제거합니다.
nft delete element ip example_table example_map { 192.0.2.1 }# nft delete element ip example_table example_map { 192.0.2.1 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 필요한 경우 규칙 세트를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow