GNU/Linux >> Linux の 問題 >  >> Linux

iptablesとnftables:違いは何ですか?

すべてのLinux管理者は確かにiptablesを使用してきました。これは、長年にわたって私たちに役立ってきた長年のLinuxファイアウォールです。しかし、あなたはまだnftablesに精通していないかもしれません。これは、私たちに切望されていたアップグレードを提供し、最終的には古いiptablesを置き換えることを目的とした新参者です。

なぜiptablesではなくnftablesなのですか?

nftablesは、現在iptablesを管理しているのと同じ組織であるNetfilterによって開発されています。これは、iptablesの問題、つまりスケーラビリティとパフォーマンスの解決策として作成されました。

新しい構文といくつかのアップグレードを除けば、以前の構文と非常によく似た機能を果たしていることがわかります。

新しいユーティリティのもう1つの理由は、iptablesフレームワークが、iptables、ip6tables、arptables、およびebtablesで少し複雑になり、すべて異なるが類似した機能を提供することです。

たとえば、iptablesでIPv4ルールを作成し、ip6tablesでIPv6ルールを作成して、2つを同期させるのは単純に非効率的です。 Nftablesは、これらすべてを置き換え、一元化されたソリューションになることを目指しています。

nftablesは2014年からLinuxカーネルに含まれていますが、採用が広まるにつれて、最近、より多くの注目を集めています。 Linuxの世界では変化は遅く、古いユーティリティは、アップグレードされたユーティリティを優先して段階的に廃止されるまでに数年以上かかることがよくあります。

Nftablesは推奨されるファイアウォールになりつつあり、Linux管理者はレパートリーを更新する必要があります。今こそ、nftablesを学び、既存のiptables構成を更新する絶好の機会です。

iptablesを何年も使用していて、まったく新しいユーティリティを学ぶ必要があるという考えにそれほど興奮していない場合でも、心配しないでください。このガイドで説明します。この記事では、nftablesとiptablesの違いを説明し、新しいnftables構文でファイアウォールルールを構成する例を示します。

nftablesのチェーンとルール

iptablesには、入力、出力、転送の3つのデフォルトチェーンがあります。これらの3つの「チェーン」(および構成されている場合は他のチェーン)は「ルール」を保持し、iptablesはネットワークトラフィックをチェーン内のルールのリストと照合することで機能します。調査中のトラフィックがどのルールにも一致しない場合、チェーンのデフォルトポリシーがトラフィックに使用されます(つまり、ACCEPT、DROP)。

Nftablesはこれと同様に機能しますが、「チェーン」と「ルール」もあります。ただし、最初はベースチェーンがないため、構成が少し柔軟になります。

iptablesの非効率性の1つの領域は、すべて トラフィックがどのルールにも一致しなかった場合でも、ネットワークデータはこれらの前述のチェーンの1つ以上を通過する必要がありました。チェーンが構成されているかどうかに関係なく、iptablesはネットワークデータをチェーンと照合します。

Linuxへのnftablesのインストール

Nftablesはすべての主要なLinuxディストリビューションで利用可能であり、ディストリビューションのパッケージマネージャーを使用して簡単にインストールできます。

UbuntuまたはDebianベースのディストリビューションでは、次のコマンドを使用できます:

sudo apt install nftables

システムの再起動時にnftablesが自動的に起動するようにするには:

sudo systemctl enable nftables.service

iptablesとnftablesの構文の違い

Nftablesの構文は、iptablesとは異なり、はるかに単純です。正直なところ、iptablesの構文は常に不明確であり、学習するために余分な労力を要しました。 iptablesから移行する人にとって幸運なことに、nftablesはまだ古い構文を受け入れます。

iptables-translateを使用することもできます ユーティリティ。iptablesコマンドを受け入れ、同等のnftablesに変換します。これは、2つの構文がどのように異なるかを確認する簡単な方法です。

次のコマンドを使用して、UbuntuおよびDebianベースのディストリビューションにiptables-translateをインストールします。

sudo apt install iptables-nftables-compat

インストールしたら、iptables構文をiptables-translateコマンドに渡すと、nftablesと同等のコマンドが返されます。

これらのコマンドが互いにどのように異なるかを確認できるように、いくつかの例を見てみましょう。

着信接続をブロックする

このコマンドは、IPアドレス192.168.2.1からの着信接続をブロックします:

[email protected]:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop
着信SSH接続を許可する

さらにいくつかの例を見てみましょう。Linuxサーバーを強化するときに通常iptablesに入力する一般的なものです。

[email protected]:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept
特定のIP範囲からの着信SSH接続を許可する

192.168.1.0/24からの着信SSH接続を許可する場合:

[email protected]:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

MySQL接続をeth0ネットワークインターフェイスに許可する

iptablesとnftablesの構文は次のとおりです。

[email protected]:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept
着信HTTPおよびHTTPSトラフィックを許可する

特定のタイプのトラフィックを許可するために、両方のコマンドの構文は次のとおりです。

[email protected]:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

これらの例からわかるように、構文はiptablesと非常に似ていますが、コマンドはもう少し直感的です。

nftablesでのロギング

上記のnftコマンドの例にある「counter」オプションは、デフォルトで行われていたiptablesのように、ルールがタッチされた回数をカウントするようにnftablesに指示します。

nftablesでは、これらはオプションであり、指定する必要があります。

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

Nftablesには、構成をエクスポートするためのオプションが組み込まれています。現在、XMLとJSONをサポートしています。

nft export xml

結論

この記事では、Linuxファイアウォールに関してnftablesが新しい推奨される選択肢である理由を説明しました。また、機能や構文など、古いiptablesと新しいnftablesの多くの違いをリストしました。

このガイドでは、nftablesへのアップグレードを検討する理由と、古いiptablesルールを正常にアップグレードするために理解する必要のある新しい構文を開始する方法について説明しました。

ご質問やご提案がございましたら、コメント欄でお知らせください。


Linux
  1. LinuxとUnix:違いは何ですか?

  2. InnoDBとMyISAMの違いは何ですか?

  3. unlink と rm の違いは何ですか?

  1. マネージドVPSとアンマネージドVPS:違いは何ですか?

  2. Cのstrtok_rとstrtok_sの違いは何ですか?

  3. fsck と e2fsck の違いは何ですか?

  1. adduser と useradd の違いは何ですか?

  2. iptables の状態と ctstate の違いは何ですか?

  3. ls と l はどう違いますか?