LinuCレベル4 システムアーキテクト ネットワークとストレージの選定 問25
ネットワークとストレージの選定/拠点内のネットワーキングDockerのブリッジネットワークとコンテナ間通信の動作について整理している。記述として誤っているものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「ネットワークとストレージの選定」に対応。実際の試験問題ではありません)
- ALinuxの仮想ブリッジはL3デバイスとして動作しIPアドレスで転送先を決めるため、異なるサブネットのコンテナを同じブリッジに接続すれば追加設定なしにサブネット間をルーティングできる
- Bvethペアの一端をコンテナのネットワーク名前空間に置き、もう一端をホストのブリッジに接続することで、コンテナがそのブリッジのL2セグメントに参加して通信できる
- C同じカスタムブリッジネットワークに接続したコンテナ同士はL2で直接通信でき、DockerはコンテナDNSを提供してコンテナ名での名前解決も行える
- Dコンテナから外部への通信はホストでNAPT(マスカレード)を設定することで、コンテナのプライベートIPをホストのIPに変換して転送できる
正解:A
解説
Linuxの仮想ブリッジはL2(データリンク層)デバイスであり、MACアドレスに基づいてフレームを転送します。L3のIPアドレスに基づくルーティングは行いません。異なるIPサブネットのコンテナを同じブリッジに接続してもサブネット間の通信には、Linuxカーネルのルーティング機能とiptablesの設定が別途必要です。vethペアによるブリッジ接続、NAPT、カスタムブリッジ内の名前解決はDockerが自動設定する機能です。
選択肢ごとの解説
- A正しい(誤っている記述)。Linuxの仮想ブリッジはL2デバイスです。MACアドレスを学習してフレームを転送しますが、IPアドレスに基づくルーティングは行いません。異なるサブネット間の通信には、ルーティングテーブルの設定やiptablesの転送ルールが必要です。
- B誤り(正しい記述)。vethペアはコンテナとブリッジを接続する仮想NICペアです。Dockerはコンテナ起動時にvethペアを自動作成し、一方をコンテナ名前空間に、他方をdocker0等のブリッジに接続します。
- C誤り(正しい記述)。Dockerのカスタムブリッジネットワーク内のコンテナはL2で通信でき、Dockerが組み込みDNSを提供してコンテナ名やサービス名での名前解決を可能にします。
- D誤り(正しい記述)。DockerはiptablesのMASQUERADEルールを設定し、コンテナのプライベートIPアドレスをホストのIPアドレスに変換して外部へ転送します。