nftables는 핸들을 전달하지 않고 규칙을 삭제합니다(iptables delete와 유사).

nftables는 핸들을 전달하지 않고 규칙을 삭제합니다(iptables delete와 유사).

iptables의 삭제 구문은 훨씬 간단합니다. "추가"를 삭제로 바꾸면 규칙을 삭제하는 명령을 얻게 됩니다.

nftable은 몇 가지 규칙 관리 측면에 대해 유사한 구성을 제공합니다.

  1. 테이블 추가 및 테이블 삭제(대칭 추가 및 삭제)
  2. 체인 추가 및 삭제(대칭 추가 및 삭제)

내 쿼리는

  1. 추가 및 제거에 대해 동일한 규칙을 제공하지 않는 이유/이유가 있습니까?
  2. 규칙을 삭제하는 더 편리한 방법이 있습니까(핸들을 잡고 핸들을 사용하여 규칙을 삭제하는 것 외에)

매우 감사합니다

답변1

제가 생각할 수 있는 한 가지 이유는 규칙을 제거할 때의 비용과 추가할 때의 비용이 동일하다는 것입니다.

그리고iptables(Legacy) 잘못된 이유: 추가 또는 제거에도 동일한 비용이 발생합니다.하나의규칙 강제 전달모두커널의 규칙 세트는 사용자 모드(iptables명령) 전체 규칙 세트를 다시 커널에 넣습니다. 따라서 1,000,000개의 규칙이 포함된 규칙 세트에 규칙을 추가하려면 어쨌든 1,000,000+1개의 규칙을 처리해야 합니다.iptables-nft,동시에 사용nftables백엔드로서의 커널 API는 호환될 수밖에 없으므로 규칙을 제거하고 사용자 영역 작업을 수행하라는 요청을 받으면 필요한 것 이상을 검색해야 합니다.

그리고nftables, 규칙이 추가되면 이 규칙만 커널로 전송되고 커널은 핸들을 다시 보냅니다(그러나 인덱스를 사용하려면 추가 작업이 필요할 수 있습니다). 1,000,000개의 규칙 체인에 1개의 규칙을 추가해도 이미 존재하는 1,000,000개의 규칙과 관련된 추가 비용이 발생하지 않습니다. 콘텐츠별로 규칙을 삭제하려면 최소한 전체 체인을 검색하고 찾을 때까지 구문 분석해야 하며, 이를 위해서는 1,000,000개의 규칙을 구문 분석해야 할 수 있습니다. 구문 분석은 표시에는 적합하지만 빠른 작업을 수행할 때는 가능하면 피해야 합니다. 고유한 핸들을 사용하는 것이 더 빠릅니다. 관리 접근 방식을 희생하면서 이러한 런타임 비용을 피하기 위한 결정이 내려진 것 같습니다.

이제 문제에 따라 삭제에 의존하지 않는 방법이 여러 가지 있습니다.내용별.

  • 코드에서 데이터 분리(선호)

    이름 사용세트,지도그리고가상 지도동적 데이터를 사용하는 정적 규칙을 유지할 수 있습니다. 그러면 일반적인 런타임 사용 시 규칙을 추가하거나 제거할 필요가 없습니다.요소.요소조회(패킷 경로 탐색 중) 및 작업(설정 또는 동적 사용 중)(예: 실시간으로 주소를 블랙리스트에 추가하는 도구, 예:실패 2 금지) )는 이러한 용도(후드 아래의 적절한 해싱 등)에 최적화되어 있으며 작업은 핸들이 아닌 콘텐츠를 통해 수행됩니다.

    비슷하게,iptables쓸 수 있는IP 세트같은 목적이지만nftables일반적으로 더 일반적으로 이러한 데이터 구조와 더 많은 상호 작용을 허용합니다.iptables그리고IP 세트.

  • 핸들이 생성된 후 즉시 핸들을 저장합니다(프로그램 또는 스크립트 실행 중).

    nft --echo --handle ...추가될 때마다 규칙과 해당 핸들이 에코됩니다. JSON 출력 의 경우 --json자동화를 위해 보다 쉽게 ​​사용할 수 있습니다. 이 도구로 수행할 수 있는 작업iptables또한 사용자 공간에서도 이를 수행합니다. 핸들을 찾기 위해 일치하는 규칙을 찾으십시오. 그러나 이는 사용자 정의 용도이므로 아마도 더 간단한 방법일 것입니다.

  • 규칙을 특정 일반(사용자) 체인으로 분할

    가능한 한iptables, 코드가 아닌 데이터를 소유하는 역할을 하는 프라이빗 체인을 사용합니다. 그런 다음 다시 작성하려면 먼저 새로 고치고 외부 데이터 소스에서 다시 채웁니다. ~처럼nftables작업은 원자적일 수 있으며(사용 시 nft -f ...) 임시적으로 오작동하는 규칙 세트가 없습니다.

    그래도 사용하는 게 더 나을 것 같아요놓다/지도/가상 매핑반대로, 패킷은 모든 규칙이 있는 체인을 선형적으로 통과하므로 이 패킷을 일치시키려는 n 규칙이 있는 체인을 통과하는 평균 조회 시간은 O(n)입니다.놓다/지도/가상 매핑(단일 규칙에서 호출됨)은 해시되고 더 빠른 순회를 얻습니다. 평균 조회 시간은 O(1)입니다.

관련 정보