#nftables とは何ですか? iptables との違いは何ですか?
ほぼすべての Linux 管理者は、Linux システム用のファイアウォールである iptables を使用したことがあります。しかし、必要なアップグレードを提供し、iptables を置き換える可能性がある新しいファイアウォールである nftables については馴染みがないかもしれません。
nftable を使用する理由
Nftables は、現在 iptables を保守している Netfilter 組織によって開発されました。 Nftables は、iptables のパフォーマンスとスケーラビリティの問題を解決するように設計されています。nftables は、一部のアップグレードと構文の変更を除いて、iptables とほぼ同じように機能します。 nftables が導入されたもう 1 つの理由は、iptables フレームワークが少し複雑になったためであり、iptables、ip6tables、arptables、ebtables はすべて異なるものの似た機能を持っています。
たとえば、iptables に IPv4 ルールを作成し、ip6tables に IPv6 ルールを作成し、2 つの同期を維持するのは非常に非効率です。 Nftables は、これらすべてを置き換えて一元化されたソリューションになることを目指しています。
nftables は 2014 年から Linux カーネルに組み込まれていますが、最近では採用が拡大するにつれて人気が高まっています。 Linux の世界では変化が遅く、古いユーティリティが段階的に廃止され、アップグレードされたユーティリティに置き換えられるまでに数年以上かかることがよくあります。
今日は、nftables と iptables の違いを簡単に紹介し、新しい nftables 構文でのファイアウォール ルールの構成例を示します。
nftables のチェーンとルール
iptables には、input 、output、forwarding の 3 つのデフォルト チェーンがあります。これら 3 つの「チェーン」 (および他のチェーン) には「ルール」が含まれており、iptables はネットワーク トラフィックをチェーン内のルールのリストと照合することによって機能します。検査対象のトラフィックがどのルールにも一致しない場合、チェーンのデフォルト ポリシー (ACCEPT や DROP など) がトラフィックに適用されます。Nftables も「チェーン」と「ルール」を使用して同様に機能します。ただし、基礎となるチェーンなしで開始されるため、構成がより柔軟になります。
iptables の非効率性の 1 つは、トラフィックがどのルールにも一致しない場合でも、すべてのネットワーク データが上記のチェーンの 1 つ以上を通過する必要があることです。リンクを設定しない場合でも、iptables はネットワーク データを検査して処理します。
Linux への nftables のインストール
nftables はすべての主要な Linux ディストリビューションで利用でき、次のディストリビューション バージョンを使用できます。インストールするパッケージマネージャー。Ubuntu または Debian ベースのシステムでは、次のコマンドを使用できます:
sudo apt install nftables
sudo systemctl enable nftables.service
iptables と nftables の構文の違い
nftables の構文と iptables の比較より単純ですが、iptables の構文は nftables でも使用できます。iptables コマンドを受け入れ、同等の nftables コマンドに変換する iptables-translate ツールを使用すると、2 つの構文の違いを簡単に理解できます。
次のコマンドを使用して、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 接続権限を解放する:#$ 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 中国語 Web サイトの他の関連記事を参照してください。