第29回 Docker Networkingの基礎知識 標準的なネットワークを理解する古賀政純の「攻めのITのためのDocker塾」(1/5 ページ)

引き続きDocker環境におけるネットワーキングの基礎を解説します。今回は、Dockerでの標準的なネットワークを例に、手順を交えながらその構成がどうなっているのかを理解していきましょう。

» 2016年09月21日 08時00分 公開

※前回はこちら


Docker環境における標準的なネットワークを知る

 Dockerをインストールしたばかりの標準的なネットワークは、どのような構成になっているのでしょうか。以下の図では、物理NICを4ポート持つ物理サーバにLinuxをインストールし、その上にDockerエンジンをインストールした場合の標準的なネットワーク構成例を示しています。なお、説明を簡単にするために、一部のコンポーネントは省略しています。

Docker Dockerにおける標準的なネットワーク構成例

 図に示すとおり、物理サーバに搭載されているNICに対して「eth0」というインタフェースが割り当てられています。このeth0に対して、「docker0」と呼ばれるブリッジが接続されています。docker0ブリッジは、Dockerエンジンによってデフォルトのブリッジネットワークを構成します。ホストOSが提供するiptablesにより、外部ネットワークとdocker0のネットワークアドレス変換(NAT:Network Address Translation)が行われ、コンテナは外部ネットワークと通信できます。

Linux界隈でよく耳にするNATやIPマスカレードとは?

 インターネットの世界には、グローバルIPアドレスとプライベートIPアドレスがあります。インターネット接続機器の増加に伴って、グローバルIPアドレスの枯渇がしばし話題になります。そのため、IPアドレスを大量に消費する企業向けシステムや集合住宅などでは、グローバルIPアドレスとプライベートIPアドレスをうまく組み合わせてLANを構成するのが一般的です。

 グローバルIPアドレスは、インターネットへ直接接続する機器に重複なく割り当てられます。グローバルIPアドレスを持つ機器は、原則としてインターネット上のコンピュータと直接通信できますから、外部からの不審な接続要求に対するセキュリティ対策を考慮しなければなりません。一方、プライベートIPアドレスを持つ機器は、インターネットに直接接続できないネットワークに所属しますが、そのままではインターネットアクセスができないため、プライベートIPアドレスをグローバルIPアドレスに変換する仕組みを持つ機器を経由して、インターネットにアクセスします。グローバルIPアドレスをプライベートIPアドレスに変換する、あるいは、その逆の処理を行う技術としてLinux OSに標準で搭載されている「Network Address Translation」(通称、NAT)が有名です。

 NATは、定義したルールに従ってプライベートIPアドレスとグローバルIPアドレスの変換を行います。ルータと呼ばれるネットワーク機器では、一般的にグローバルIPアドレスとプライベートIPアドレス間におけるパケットの橋渡しを行いますが、このルータの機能をLinuxマシンで実現する際にも、NATが利用されています。NATは、異なるプライベートIPアドレス同士の変換も可能です。

 このようにNATは、IPアドレス変換を行う便利なLinux OSの機能ですが、さらにポート番号を含めた変換を行うのが「IPマスカレード」です。これもLinux OSの標準機能です。IPマスカレードによって、送信元のパケットに含まれるポート番号を識別でき、プライベートIPアドレスのLANセグメントに所属する複数の送信元から同時にインターネットへアクセスできるようになります。

Docker NATによるIPアドレスの変換
       1|2|3|4|5 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ