8장. nftables 시작하기
nftables
프레임워크는 패킷을 분류하고 iptables
,ip6tables
,arptables
,ebtables
, ipset
유틸리티의 후속 조치입니다. 이전의 패킷 필터링 툴에 비해 편의성, 기능 및 성능이 크게 향상되었으며 주요 개선 사항은 다음과 같습니다.
- 선형 처리 대신 기본 제공 조회 테이블
-
IPv4
및IPv6
프로토콜 모두를 위한 단일 프레임워크 - 모든 규칙은 전체 규칙 세트를 가져오기, 업데이트 및 저장하는 대신 원자적으로 적용됩니다.
-
규칙 세트(
nftrace
) 및 모니터링 추적 이벤트(nft
툴 내)에서 디버깅 및 추적 지원 - 프로토콜별 확장 없이 보다 일관되고 컴팩트한 구문
- 타사 애플리케이션을 위한 Netlink API
nftables
프레임워크는 테이블을 사용하여 체인을 저장합니다. 체인에는 작업을 수행하기 위한 개별 규칙이 포함되어 있습니다. nft
유틸리티는 이전 패킷 필터링 프레임워크의 모든 도구를 대체합니다. libnftnl
라이브러리를 사용하여 libmnl
라이브러리를 통해 nftables
Netlink API와 하위 수준의 상호 작용을 수행할 수 있습니다.
규칙 세트 변경의 효과를 표시하려면 nft list ruleset
명령을 사용합니다. 이러한 유틸리티는 테이블, 체인, 규칙, 세트 및 기타 오브젝트를 nftables
규칙 세트에 추가하므로 nft flush ruleset
명령과 같은 nftables
규칙 세트 작업이 iptables
명령을 사용하여 설치된 규칙 세트에 영향을 미칠 수 있습니다.
8.1. iptables에서 nftables로 마이그레이션
방화벽 구성에서 iptables
규칙을 계속 사용하는 경우 iptables
규칙을 nftables
로 마이그레이션할 수 있습니다.
8.1.1. firewalld, nftables 또는 iptables를 사용하는 경우
다음은 다음 유틸리티 중 하나를 사용해야 하는 시나리오에 대한 간략한 개요입니다.
-
firewalld
: 간단한 방화벽 사용 사례에firewalld
유틸리티를 사용합니다. 유틸리티는 사용하기 쉽고 이러한 시나리오의 일반적인 사용 사례를 다룹니다. -
nftables
:nftables
유틸리티를 사용하여 전체 네트워크에 대해 과 같이 복잡하고 성능이 중요한 방화벽을 설정합니다. -
iptables
: Red Hat Enterprise Linux의iptables
유틸리티는레거시
백엔드 대신nf_tables
커널 API를 사용합니다.nf_tables
API는 이전 버전과의 호환성을 제공하므로iptables
명령을 사용하는 스크립트가 여전히 Red Hat Enterprise Linux에서 작동합니다. 새 방화벽 스크립트의 경우 Red Hat은nftables
를 사용하도록 권장합니다.
다른 방화벽 관련 서비스(firewalld
,nftables
또는 iptables
)가 서로 영향을 미치지 않도록 하려면 RHEL 호스트에서 해당 서비스 중 하나만 실행하고 다른 서비스를 비활성화합니다.
8.1.2. iptables 및 ip6tables 규칙 세트를 nftables로 변환
iptables-restore-translate
및 ip6tables-restore-translate
유틸리티를 사용하여 iptables
및 ip6tables
규칙 세트를 nftables
로 변환합니다.
사전 요구 사항
-
nftables
및iptables
패키지가 설치됩니다. -
시스템에는
iptables
및ip6tables
규칙이 구성되어 있습니다.
절차
iptables
및ip6tables
규칙을 파일에 작성합니다.# iptables-save >/root/iptables.dump # ip6tables-save >/root/ip6tables.dump
덤프 파일을
nftables
명령으로 변환합니다.# iptables-restore-translate -f /root/iptables.dump > /etc/nftables/ruleset-migrated-from-iptables.nft # ip6tables-restore-translate -f /root/ip6tables.dump > /etc/nftables/ruleset-migrated-from-ip6tables.nft
-
및 필요한 경우 생성된
nftables
규칙을 수동으로 업데이트합니다. 생성된 파일을 로드할
nftables
서비스를 활성화하려면/etc/sysconfig/nftables.conf
파일에 다음을 추가합니다.include "/etc/nftables/ruleset-migrated-from-iptables.nft" include "/etc/nftables/ruleset-migrated-from-ip6tables.nft"
iptables
서비스를 중지하고 비활성화합니다.# systemctl disable --now iptables
사용자 지정 스크립트를 사용하여
iptables
규칙을 로드한 경우 스크립트가 더 이상 자동으로 시작되지 않고 재부팅하여 모든 테이블을 플러시해야 합니다.nftables
서비스를 활성화하고 시작합니다.# systemctl enable --now nftables
검증
nftables
규칙 세트를 표시합니다.# nft list ruleset
추가 리소스
8.1.3. 단일 iptables 및 ip6tables 규칙을 nftables로 변환
Red Hat Enterprise Linux는 iptables-translate
및 ip6tables-translate
유틸리티를 제공하여 iptables
또는 ip6tables
규칙을 nftables
에 해당하는 규칙으로 변환합니다.
사전 요구 사항
-
nftables
패키지가 설치되어 있어야 합니다.
절차
iptables
또는ip6tables
대신iptables-translate
또는ip6tables-translate
유틸리티를 사용하여 해당nftables
규칙을 표시합니다. 예를 들면 다음과 같습니다.# iptables-translate -A INPUT -s 192.0.2.0/24 -j ACCEPT nft add rule ip filter INPUT ip saddr 192.0.2.0/24 counter accept
일부 확장 기능에는 해당 지원이 누락되어 있는 경우도 있습니다. 이 경우 유틸리티는
#
기호가 앞에 오는 untranslated 규칙을 출력합니다. 예를 들면 다음과 같습니다.# iptables-translate -A INPUT -j CHECKSUM --checksum-fill nft # -A INPUT -j CHECKSUM --checksum-fill
추가 리소스
-
iptables-translate --help
8.1.4. 일반적인 iptables 및 nftables 명령 비교
다음은 일반적인 iptables
및 nftables
명령을 비교한 것입니다.
모든 규칙 나열:
iptables nftables iptables-save
nft list ruleset
특정 테이블 및 체인 나열:
iptables nftables iptables -L
nft list table ip filter
iptables -L INPUT
nft list chain ip filter INPUT
iptables -t nat -L PREROUTING
nft list chain ipat PREROUTING
nft
명령은
테이블 및 체인을 미리 만들지 않습니다. 이는 사용자가 수동으로 생성한 경우에만 존재합니다.firewalld를 통해 생성된 규칙 나열:
# nft list table inet firewalld # nft list table ip firewalld # nft list table ip6 firewalld