ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. nftables 뼈대를 알아보자 [nftables]
    개발공부/네트워크 2025. 12. 5. 14:49

    바로 리눅스 cli로 들어가봅시다

    모든 설정, 환경은 우분투 기준으로 설명할거에요

     

     

    설치하기 

    일단 nftables 를 설치를 해야겠죠?

    sudo apt update
    sudo apt install nftables

    잘 설치됐는지 확인은

    nft --version 으로 확인해주세요!

    저는 1.0.9 버전으로 나오네요

     

    명령어 알아보기

    대략적으로만 정리했어요

    자세한 내용은 자세히 알아 볼 때 작성하도록 하겠습니다.

    조회(단일) nft list ...
    (ex)
    1. ip_filter 테이블 아래의 chain_name 체인 조회
    nft list chain ip ip_filter chain_name
    2. ip_filter 테이블 조회
    nft list table ip ip_filter

    조회(모두) 1. 테이블 모두 조회
    nft list tables
    2. 체인 모두 조회
    nft list chians
    3. rule까지 모두 조회
    nft list ruleset
    조회 (핸들 포함) nft -a list ...
    추가(아래) nft add ...
    추가(위에) nft insert ...
    삭제 nft delete rule ip ip_filter chain_name handle "핸들번호"
    다 삭제 nft flush ruleset
    (nft flush ip ip_filter chain_name 이런식으로 원하는 체인만 삭제도 가능해요)

    nftables 의 명령어는 'nft' .... 으로 시작합니다.

     

     

    구조를 알아보기

    nftables 는 크게 4개의 구조로 나누어져 있습니다

    Fmaily

    table

      chain

        rule 

    이렇게 되어있어요 (아래 그림참고)

    Family1
    +-----------------------------------------------------------------------+
    |  TABLE (테이블)                                                       |
    |                                                                       |
    |   +---------------------------------------------------------------+   |
    |   |  CHAIN A (체인 - Base Chain)                                  |   |
    |   |                                                               |   |
    |   |   [ Rule 1 ] ---------------------------------------------    |   |
    |   |   --------------------------------------------------------    |   |
    |   |   [ Rule 2 ] ---------------------------------------------    |   |
    |   |   --------------------------------------------------------    |   |
    |   |   [ Rule 3 ] ---------------------------------------------    |   |
    |   |   --------------------------------------------------------    |   |
    |   +---------------------------------------------------------------+   |
    |                                                                       |
    |   +---------------------------------------------------------------+   |
    |   |  CHAIN B (체인 - Regular Chain)                               |   |
    |   |                                                               |   |
    |   |   [ Rule 1 ] ...                                              |   |
    |   +---------------------------------------------------------------+   |
    +-----------------------------------------------------------------------+
    
    Family2

     

    1. Family 

    - l3 중 ipv4, ipv6 중 뭘 쓸지 아니면 l2를 사용할지 를 나누는 큰 카테고리에요

    - 따로 family 만 조회하는 명령어는 없습니다. (3개 끝이어서 그런가..?)

    - 보통 이름은 ip (버전4) ip6 (버전6) inet(버전4랑6 둘다) arp bridge 이런식으로 씁니다

     

    2. tables

    - 목적에 따라 나누어놓은 제일 큰 분류에요

    - 보통 filter, mangle, nat 이렇게 3개가 있습니다.

    - table 추가 가능해요 : nft add ip new_table 

    table 조회 가능해요 : nft list table

    좌 : family, 우 : table

    3. Chain

    - 테이블 아래 구조에 있는 구조에요

    - 두 종류가 있어요

    -- 커널 '훅' 이 있는 base chain

    -- 사용자가 만든 chain (jump로 호출해서 쓰는 chain) --> 자세한 내용은 나중에 따로 다루겠습니다!

    - 여기서 policy, flow 를 컨트롤해요 base체인의 이름을 netfilter 그림에 매칭시켜서 보시면 이해가 되실겁니다!

    (넷 필터 그림)(참고용)

     

    4. rule

    - 실제 패킷의 로직을 처리하는 부분이에요

     

     

    여기서 말씀드린 '구조' 순서대로 다음글을 진행해 보려 합니다!

    혹시 이해 안되거나 틀린 내용이 있다면 댓글 부탁드려요! 

     

    '개발공부 > 네트워크' 카테고리의 다른 글

    2. family, table에 대해서 알아보자 [nftables]  (0) 2025.12.07
    0. 개요 nftables가 뭐죠 [nftables]  (0) 2025.11.30
    프록시  (0) 2025.07.06
    NAT-1  (0) 2025.01.05
    포트포워딩  (1) 2024.10.27
Designed by Tistory.