LinuCレベル4 システムアーキテクト ネットワークとストレージの選定 問2
ネットワークとストレージの選定/拠点内のネットワーキング1台のLinuxホスト上で仮想マシン(libvirt)とコンテナ(Docker)を動かす環境のネットワーク方式を選定するため、既定の構成の特性を整理した。説明として適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「ネットワークとストレージの選定」に対応。実際の試験問題ではありません)
- Alibvirtのdefaultネットワークはvirbr0を作り、dnsmasqでDHCPを提供し、外部へはNAPT(マスカレード)で出ていく
- BDockerのbridgeドライバでは、コンテナはvethペアでdocker0につながり、外部からの着信にはポートの公開が必要である
- Cvirbr0に接続した仮想マシンには、物理LAN上の他ホストから追加の設定なしに仮想マシン自身のIPアドレス宛てで接続できる
- DDockerのhostドライバではコンテナがホストのネットワーク名前空間を共有し、ポートの割り当てがホスト側と競合しうる
正解:C
解説
libvirtのdefaultネットワークはNATモードの仮想ネットワークで、仮想ブリッジvirbr0を作り、dnsmasqがDHCPとDNSを提供し、外部への通信はホストでNAPT(マスカレード)されます。このため仮想マシンから外部へは出られますが、物理LAN上の他ホストから仮想マシンのアドレスへ直接は到達できません。外部から直接到達させたい場合は、物理NICを収容したブリッジに仮想マシンをつなぐ構成を選びます。Dockerのbridgeドライバも同様にNAPTで外へ出る構成で、着信にはポートの公開が必要です。hostドライバはネットワークを分離しない代わりに、変換のオーバーヘッドがなくなります。
選択肢ごとの解説
- A誤り(正しい記述)。libvirtの既定のネットワークは、virbr0・dnsmasq・NAPTを組み合わせたNATモードの構成です。
- B誤り(正しい記述)。コンテナはvethペアの片端をdocker0に接続し、外部からの着信はポートの公開(-p)で受け付けます。
- C正しい(誤っている記述)。virbr0はNATモードのため、物理LAN上の他ホストからは仮想マシンのアドレスへ直接到達できません。外部から直接到達させるには、物理NICを収容したブリッジへの接続やポート転送の設定が必要です。
- D誤り(正しい記述)。hostドライバではコンテナがホストのネットワーク名前空間をそのまま使うため、同じポートを使うホスト側のサービスと競合します。