iptablesやnftablesと絡んだLinuxカーネルとdockerの問題って、結局どうするのが正しいの? |
|
|
これは結構ややこしい話ですが、結論から言うと、
という状況です。 背景昔のLinuxファイアウォールは でした。 その後、 が登場し、Linuxカーネルの標準的なパケットフィルタリング基盤になりました。 現在の多くのディストリビューションでは、 などで nftables が推奨されています。 Dockerが問題を起こす理由Dockerはコンテナ通信のために大量のルールを自動生成します。 例えば、 などです。 Docker起動時に へルールを書き込みます。 実際には といったチェーンが作られます。 現代のLinuxでは実は と打っても、 内部的には が動いている場合があります。 つまり です。 UbuntuやDebianではよくあります。 なぜ混乱するのか問題は と を別々に管理すると、 思った通りに動かないことがあるからです。 例えば や など。 一番安全な考え方現在は パターン1Dockerにiptables管理を任せる (デフォルト) 最も一般的です。 Docker公式も基本これを想定しています。 パターン2ホスト側はnftables Dockerはiptables-nft 実際にはこれが今の標準的な構成です。 利用者は で確認します。 あまりおすすめしないDockerのiptablesを無効化すると、 DockerがNATもポート転送も作らなくなります。 その結果、
が必要になります。 Kubernetesや特殊なネットワーク構成以外では大変です。 Linuxカーネルとの関係カーネル内部では現在、 という仕組みが動いています。 実は も も、 最終的には へルールを渡しています。 イメージとしては です。 最近の環境では と考えると理解しやすいです。 実務的な正解現在(2026年時点)なら、
が最も無難です。 特にサーバー運用では、 にして全てを自前管理するのは、明確な理由がない限り避けることが多いです。 そのため実務上は、
という形が現在の主流に近い運用です。 |
|
|

この記事へのコメント