9.2. 패킷 필터링
9.2.1. nftables
가 기본 네트워크 패킷 필터링 프레임워크로 iptables
대체
nftables
프레임워크는 패킷 분류 기능을 제공하며 iptables
,ip6tables
,arptables
,ebtables
, ipset
툴에 지정된 후속 기능을 제공합니다. 이전의 패킷 필터링 툴에 비해 편의성, 기능 및 성능이 크게 향상되었으며 주요 개선 사항은 다음과 같습니다.
- 선형 처리를 대신하는 룩업 테이블
-
IPv4
및IPv6
프로토콜 모두를 위한 단일 프레임워크 - 전체 규칙 세트를 가져오기, 업데이트 및 저장하는 대신 모든 적용되는 규칙
-
규칙 세트의 디버깅 및 추적 지원 (
) 및 모니터링 추적 이벤트 (nft 툴 내)nft
race - 프로토콜별 확장 없이 보다 일관되고 컴팩트한 구문
- 타사 애플리케이션용 Netlink API
iptables
과 마찬가지로 nftables
는 체인을 저장하기 위해 테이블을 사용합니다. 체인에는 작업을 수행하기 위한 개별 규칙이 포함되어 있습니다. nft
툴은 이전 패킷 필터링 프레임워크의 모든 도구를 대체합니다. libnftables
라이브러리는 libmnl
라이브러리를 통해 nftables
Netlink API와 낮은 수준의 상호 작용에 사용할 수 있습니다.
iptables
, ip6tables
, ebtables
및 arptables
툴은 같은 이름을 가진 nftables 기반 드롭인 툴로 교체됩니다. 외부 동작은 기존 대응 동작과 일치하지만, 내부적으로는 필요에 따라 호환성 인터페이스를 통해 기존 netfilter
커널 모듈과 함께 nftables
를 사용합니다.
nftables
규칙 세트에서 모듈의 영향은 nft list ruleset
명령을 사용하여 확인할 수 있습니다. 이러한 툴은 테이블, 체인 및 규칙을 nftables
규칙 세트에 추가하므로 nft flush ruleset
명령과 같은 nftables
규칙 세트 작업이 이전의 별도의 레거시 명령을 사용하여 설치된 규칙 세트에 영향을 미칠 수 있습니다.
어떤 종류의 툴이 존재하는지 신속하게 확인하기 위해 백엔드 이름을 포함하도록 버전 정보가 업데이트되었습니다. RHEL 8에서는 nftables 기반의 iptables
툴로 다음 버전 문자열이 출력됩니다.
$ iptables --version iptables v1.8.0 (nf_tables)
기존 iptables
툴이 있는 경우 다음 버전 정보가 출력됩니다.
$ iptables --version iptables v1.8.0 (legacy)
9.2.2. RHEL 8의 필터 테이블에서 arptables
FORWARD가 제거되었습니다.
Red Hat Enterprise Linux (RHEL) 8에서는 arptables
FORWARD 체인 기능이 제거되었습니다. 이제 ebtables
툴의 FORWARD 체인을 사용하여 규칙을 추가할 수 있습니다.
9.2.3. iptables-ebtables
의 출력은 ebtables
와 100% 호환되지 않습니다.
RHEL 8에서는 ebtables
명령은 iptables-ebtables
패키지에서 제공하며, 여기에는 툴을 기반으로 하는 nftables
가 포함됩니다. 이 툴에는 다른 코드 베이스가 있으며 그 출력은 양호할 수 없거나 고의적인 디자인 선택 사항입니다.
결과적으로 일부 ebtables
출력을 구문 분석하는 스크립트를 마이그레이션할 때 다음을 반영하도록 스크립트를 조정합니다.
- MAC 주소 포맷이 길이가 수정되도록 변경되었습니다. 필요한 경우 개별 바이트 값에는 8진수당 두 문자의 형식을 유지하기 위한 선행 0이 포함됩니다.
- IPv6 접두사 형식이 RFC 4291를 준수하도록 변경되었습니다. 슬래시 문자 뒤에 오는 부분에는 IPv6 주소 형식의 넷마스크가 더 이상 포함되지 않지만 접두사 길이가 포함됩니다. 이 변경 사항은 유효 (left-contiguous) 마스크에만 적용되며 다른 일부는 여전히 이전 형식으로 인쇄됩니다.
9.2.4. iptables
를 nftables
로 변환하는 새로운 툴
이번 업데이트에서는 iptables-translate
및 ip6tables-translate
툴을 추가하여 기존의 iptables
또는 ip6tables
규칙을 nftables
에 해당하는 규칙으로 변환했습니다. 일부 확장 기능에는 해당 지원이 누락되어 있는 경우도 있습니다. 이러한 해당 기능이 누락된 확장 기능이 있는 경우 툴은 #
기호가 앞에 있는 미변환 규칙을 출력합니다. 예를 들면 다음과 같습니다.
| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill | nft # -A INPUT -j CHECKSUM --checksum-fill
또한 사용자는 규칙 덤프를 변환하기 위해 iptables-restore-translate
및 ip6tables-restore-translate
툴을 사용할 수 있습니다. 이전에는 iptables-save
또는 ip6tables-save
명령을 사용하여 현재 규칙 덤프를 출력할 수 있습니다. 예를 들면 다음과 같습니다.
| % sudo iptables-save >/tmp/iptables.dump | % iptables-restore-translate -f /tmp/iptables.dump | # Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018 | add table ip nat | ...