nftables와 iptables의 차이점은 무엇인가요?
거의 모든 Linux 관리자는 Linux 시스템용 방화벽인 iptables를 사용해 왔습니다. 하지만 여러분은 몇 가지 필요한 업그레이드를 제공하고 iptables를 대체할 수 있는 새로운 방화벽인 nftables에 익숙하지 않을 수도 있습니다.
nftables를 사용하는 이유는 무엇인가요?
Nftables는 현재 iptables를 관리하는 Netfilter 조직에서 개발했습니다. Nftables는 iptables의 성능 및 확장성 문제를 해결하도록 설계되었습니다.일부 업그레이드 및 변경된 구문을 제외하면 nftables는 iptables와 거의 동일하게 작동합니다. nftables가 도입된 또 다른 이유는 iptables 프레임워크가 약간 복잡해졌기 때문입니다. iptables, ip6tables, arptables 및 ebtables는 모두 다르지만 비슷한 기능을 가지고 있습니다.
예를 들어, iptables에서 IPv4 규칙을 생성하고 ip6tables에서 IPv6 규칙을 생성하고 두 규칙을 동기화하는 것은 매우 비효율적입니다. Nftables는 이 모든 것을 대체하고 중앙화된 솔루션이 되는 것을 목표로 합니다.
nftables는 2014년부터 Linux 커널에 포함되었지만 최근 채택이 확대되면서 인기가 높아지고 있습니다. Linux 세계에서는 변화가 느리며 오래된 유틸리티를 단계적으로 폐기하고 업그레이드된 유틸리티로 교체하는 데 몇 년 이상이 걸리는 경우가 많습니다.
오늘은 nftables와 iptables의 차이점을 간략하게 소개하고, 새로운 nftables 구문으로 방화벽 규칙을 구성하는 예를 보여드리겠습니다.
nftables의 체인 및 규칙
iptables에는 입력, 출력 및 전달의 세 가지 기본 체인이 있습니다. 이 세 개의 "체인"(및 다른 체인)에는 "규칙"이 포함되어 있으며 iptables는 네트워크 트래픽을 체인의 규칙 목록과 일치시켜 작동합니다. 검사 중인 트래픽이 어떤 규칙과도 일치하지 않는 경우 체인의 기본 정책(예: ACCEPT 또는 DROP)이 트래픽에 적용됩니다.Nftables도 비슷하게 작동하며, "체인"과 "규칙"도 있습니다. 그러나 기본 체인 없이 시작되므로 구성이 더욱 유연해집니다.
iptables의 비효율성 중 한 가지 측면은 트래픽이 어떤 규칙과도 일치하지 않더라도 모든 네트워크 데이터가 위 체인 중 하나 이상을 통과해야 한다는 것입니다. 링크를 구성하지 않더라도 iptables는 계속해서 네트워크 데이터를 검사하고 처리합니다.
Linux에 nftables 설치
nftables는 모든 주요 Linux 배포판에서 사용할 수 있으며 배포판의 패키지 관리자를 사용하여 설치할 수 있습니다.Ubuntu 또는 Debian 기반 시스템에서는 다음 명령을 사용할 수 있습니다.
sudo apt install nftables
sudo systemctl enable nftables.service
구문 iptables와 nftables의 차이점
iptables에 비해 nftables의 구문은 더 간단하지만 iptables의 구문을 nftables에서도 사용할 수 있습니다.iptables 명령을 받아 이를 동등한 nftables 명령으로 변환하는 iptables-translate 도구를 사용할 수 있습니다. 이는 두 구문의 차이점을 쉽게 이해할 수 있는 방법입니다.
다음 명령을 사용하여 Ubuntu 및 Debian 기반 배포판에 iptables-translate를 설치합니다.
sudo apt install iptables-nftables-compat
아래에서 몇 가지 구체적인 문법 예를 살펴보겠습니다.
들어오는 연결 차단
다음 명령은 IP 주소 192.168.2.1에서 들어오는 연결을 차단합니다.$ iptables-translate -A INPUT -s 192.168.2.1 -j DROPnft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop
들어오는 SSH 연결 허용
Ssh를 놔두세요 연결 권한: $ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTnft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept
특정 IP 범위에서 들어오는 SSH 연결 허용
192.168.1.0/24에서 들어오는 SSH 연결만 허용하려는 경우:允许MySQL连接到eth0网络接口 允许传入HTTP和HTTPS流量 为了允许特定类型的流量,以下是这两个命令的语法: 从这些例子中可以看出,nftables 语法与 iptables 非常相似,但命令更直观一些。 nftables 日志 上述nft命令示例中的“counter”选项告诉nftables统计规则被触碰的次数,就像默认情况下使用的iptables一样。 在nftables中,需要指定: nftables内置了用于导出配置的选项。它目前支持XML和JSON。$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTnft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept
$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTnft add rule ip filter INPUT iifname eth0 tcp dport 3306ct state new,established counter accept
$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTnft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept
nft export xml
위 내용은 nftables는 iptables와 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!