バーチャルホスト
【英】virtual host
バーチャルホストとは、1台のサーバーを複数のサーバーとして利用する技術のことである。
バーチャルホストには、1つのサーバーに複数の異なるIPアドレスを割り当てる「IPベース方式」と、1つのIPアドレスに対して複数のドメインを割り当てる「ネームベース方式」がある。
IPベース方式は、複数のLANカードを用意したり、バーチャルインターフェース(VIF)で実現したりする手法であり、ネームベース方式に比べると比較的構築に手間がかかるとされている。そのため、バーチャルホストを実現する手段としては、ネームベース方式によるものが多い。
バーチャルホストでは、1台のサーバーを複数のサーバーに見立てることができ、複数のサービスごとにサーバーを用意する必要がないため、サーバーのホスティング料金や構築コストなどが抑えられるというメリットがある。
参照リンク
Apache バーチャルホスト説明書 - (The Apache Software Foundation)
バーチャルホスト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/01/18 09:44 UTC 版)
バーチャルホスト (Virtual Host) とは1つのサーバで複数のドメインを運用する技術のことで、Webサーバ、メールサーバなどで利用される。
用途
通常はWebサーバやメールサーバを運用するのにドメインの数以上のサーバコンピュータが必要となる。バーチャルホストを利用すると1つのサーバコンピュータで複数のドメインを運用することができ、サーバコンピュータの数を減らし運用のコストを下げることができる。また、後述する名前ベースバーチャルホストの場合はIPアドレスも節約することができる。 また、ドメインの追加も容易で、小規模Webサイトの運営や安価なレンタルサーバサービスなどでの利用が盛んである。 バーチャルホストには大きくわけてIPベースバーチャルホストと名前ベースバーチャルホストの2種類の方法がある。
IPベースバーチャルホスト
IPベースバーチャルホストは、利用するドメイン名ごとにIPアドレスを用意し、1つのサーバコンピュータに複数のIPアドレスを割り当てる。
クライアントが接続したいドメインごとに異なるIPアドレスへ接続してくるため、サーバソフトウェアは接続先IPアドレスを見て利用するドメインを判別する。 IP層のみでドメインの判定が可能なため、アプリケーションプロトコルの種類に依らずサーバソフトウェアはIPベースバーチャルホストを実装することができる。
汎用性の高い方法であるが、IPアドレスを増やすことが困難な場合には向かない。(一般にIPアドレスの取得は高コストである)
1台の物理サーバコンピュータへの複数IPアドレス割り当ては、NICを複数枚搭載するほかに、「IPエイリアス」という機能によっても実現されている。
名前ベースバーチャルホスト
名前ベースバーチャルホストは、利用するドメイン名すべてに同じIPアドレスを使用し、1つのサーバコンピュータに必要なIPアドレスが1つで済む。
クライアントが接続したドメインにかかわらず同じIPアドレスへ接続してくるため、IP層の情報だけではドメインの判別ができない。 ドメインを判別するためにはアプリケーションプロトコルの側に接続先ドメインを判別する情報が含まれている必要がある。HTTPの場合はHostヘッダ、SMTPの場合はRcpt Toに含まれるメールアドレスのドメインで判別を行なう。
アプリケーションプロトコルに接続先ドメインの情報が含まれないサーバソフトウェアでは実装することができない。またTLSはアプリケーション層プロトコルの通信を開始する前にネゴシエーションを行う形で利用されることが多く、この時点でサーバ証明書を使い分けることができない。このため、HTTPではバーチャルホストを実装できるにもかかわらずHTTPSでは運用できないという事態が発生する。この問題に対処するため、2003年Server Name Indicationという拡張仕様がTLSに定義された。
ドメインを追加する場合にも、サーバソフトウェアの設定を変更するだけで対応することができるため、非常に安価である。
デメリット
バーチャルホストは複数のドメインを運用する上で安価で簡単な方法であるが、複数のドメインを1つのサーバコンピュータで運用するため、同一サーバコンピュータで運用されている他のドメインの負荷過大などの問題点も共有してしまう。
名前ベースのバーチャルホストは、ウェブブラウザーの場合サポートをしていないとサーバー上の最初に登録されたエントリーにしかアクセスすることができなかったが、現在主流のブラウザーは全てサポートしている。
また、機器メンテナンスなどでサーバソフトウェアを停止する場合などは、すべてのドメインが停止することになる。
代表的なサーバソフトウェア
- HTTP
- SMTP
外部リンク
- Apache バーチャルホスト説明書 Webサーバ Apache 2.4におけるバーチャルホストの使用方法
バーチャルホスト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/09 06:55 UTC 版)
「Transport Layer Security」の記事における「バーチャルホスト」の解説
TLSは、TCP/IPネットワークでホスト名ベースのバーチャルホストを構成する際に問題となる。TCP/IPでは通信を開始する前にホスト名を解決し、実際にはIPアドレスとポート番号で接続先を識別している。このためTLSのネゴシエーションの時点では、バーチャルホストのうちどのホスト名を期待しているのか判断できず、ホスト名ごとに異なるサーバー証明書を使い分けることができない。 TLSの拡張機能を定義するRFC 6066では、ネゴシエーション時にホスト名を伝える手段としてServer Name Indication (SNI) を規定している。用例としては、HTTPの最新バージョンであるHTTP/2においてTLSを利用する際はSNIの利用が必須とされている。 一方、証明書を使い分けず、1つの証明書を複数のバーチャルホストで使い回す方式も広く利用されている。X.509証明書のフォーマットについて記述したRFC5280では、発行先ホスト名を保持するsubjectAltNameはひとつの証明書に複数のエントリを作成できると規定している。これを利用して、ホストに収容されたすべてのバーチャルホストに対応したsubjectAltNameを保持する証明書をクライアントに提示すれば良い。 また、発行先ホスト名にワイルドカードを使う方法も考えられる。HTTP over SSL/TLS (HTTPS) を定義するRFC 2818は、ワイルドカードの適用について記述している。バーチャルホストの対象が、ひとつのドメイン名の中のホストであれば、この方法で対応できる場合もある。 どの方法も実装によって対応状況にバラつきがあり、環境によっては使えない可能性がある。なおIPアドレスベースのバーチャルホストであれば、ネゴシエーションの時点で確実にどのバーチャルホストを期待しているか判断できるので、問題なく証明書を使い分けることができる。
※この「バーチャルホスト」の解説は、「Transport Layer Security」の解説の一部です。
「バーチャルホスト」を含む「Transport Layer Security」の記事については、「Transport Layer Security」の概要を参照ください。
- バーチャルホストのページへのリンク