この記事に興味を持つ皆さんならば、最近注目を集めるようになった「仮想ルータ」という言葉も耳にしたことがあることでしょう。この記事では、仮想ルータを実現する3つの方法ごとに、メリットと最適な利用用途について考察していきます。
この記事に興味を持ち、読んでいる皆さんならば、最近注目を集めるようになった「仮想ルータ」という言葉も耳にしたことがあるのではないでしょうか。
「仮想ルータ」とは、その名の通り『仮想的にL3ルーティング機能を提供する仕組み』のことです。サーバ仮想化技術の発展と普及に伴い、サーバ/リソースをオンデマンドでデプロイすることが容易になった一方で、それらのサーバ/リソースをつなぐネットワークは依然として用意が面倒です。そこで、ネットワークも同じようにオンデマンドでデプロイできるようにしたいという要求が強くなっています。
仮想ルータはこのような要求に答えるための仕組みです。
物理ルータ(仮想ルータに対して「モノ」として実在するルータのことを、本稿では「物理ルータ」と呼ぶこととします)と同様、仮想ルータにもルーティング機能に加え、パケットフィルタ機能を実現するためのACL機能、パケットをクラス分けし帯域制限などを行うためのQoS機能、暗号技術を用いることで仮想的にプライベートなネットワークを構築するVPN機能、といったさまざまな機能が求められます。
仮想ルータの場合はそれらに加え、設定を外部から容易に行うためのAPIといった、管理作業の効率化を実現するための仕組みも提供されている場合がほとんどです。
仮想ルータの実現方法としては、次の3つが考えられます(図1)。
1つ目は『ハードウェア型』の仮想ルータです。
サーバ仮想化が普及する以前から、物理ルータには「Virtual Routing & Forwarding」(VRF)と呼ばれる機能が存在していました。VRFでは1台の物理ルータを、あたかも複数台の物理ルータが存在するかのように設定できます。ハードウェア型の仮想ルータはこのVRF機能を利用して仮想ルータを実現する方法です。
ルータによっては、マネジメント機能まで仮想的に分離できるものもあります(例えば米Juniper製ルータのLogical Router機能)。このような機能も利用した場合、エンドユーザーは、自分専用に1台のルータが用意されたような使用感を得ることができます。
2つ目は『ソフトウェア型』の仮想ルータです。ソフトウェア型の仮想ルータは、ルータ機能を1台の仮想マシンとして動かしてしまおうというものです。一般的なPCアーキテクチャのマシンでも、複数のネットワークインターフェイスを持っていればルータとして利用可能です。
すでに仮想化環境が用意されているならば、その上でサーバと同じようにルータも動かしてしまおう、というのがソフトウェア型の仮想ルータです。ソフトウェア型の仮想ルータの例としては、後述する「Vyatta Network OS」のほか、IIJの「SEIL/x86」、米Cisco Systemsの「Cloud Services Router 1000V」(以下 CSR)などが挙げられます。
3つ目は『分散エッジ型』の仮想ルータです(現時点では、この方式を分類する用語は存在していないようなので、本稿では便宜的にこのような仮想ルータを「分散エッジ型の仮想ルータ」と呼ぶこととします)。
一般に仮想化環境では、物理ネットワークインターフェイスと仮想マシンを接続するために「仮想スイッチ」を利用します(図1におけるvSwitchが仮想スイッチです)。この方式では仮想スイッチにL3ルータ機能を持たせ、コントローラからそれを制御することでルータ機能を実現します。
分散エッジ型仮想ルータの例としては、米VMware(旧Nicira)の「Nicira Network Virtualization Platform」(NVP)、ミドクラの「MidoNet」、ストラトスフィアの「ストラトスフィア SDN プラットフォーム」(SSP)などが挙げられます。最近話題の「SDN」との関係から、注目を集めている方式でもあります。
「Vyatta Network OS」(以下 Vyatta)は、先に述べたとおりソフトウェア型の仮想ルータです。米Vyatta社が中心となって開発しており、有償版の「Subscription Edition」と、無償版の「Vyatta Core」の2種類が提供されています。VyattaはDebian GNU/Linuxをベースに開発されており、Linuxが動作する仮想化環境であれば、どこでも動作させることができます。
Vyattaには、とても豊富な機能が用意されています。Vyattaで利用できる機能の一覧については、こちらを参照してください。
Vyattaの内部では「iptables」や「Quagga」といった、ルータとして必要な機能を実現するソフトウェアが動作しています。その上にJunOSライクなCLIが提供されており、iptablesやQuaggaを直接設定するのではなく、このCLIから設定を行い、内部のソフトウェアの設定に反映されるようになっています。そのため、中身こそLinuxですが、使用感は完全にルータ専用機で、他の一般的なルータと同じように設定できます。
有償版のSubscription Editionでは、Remote Access APIとしてRESTfulなAPIも提供されており、設定のオートメーションも容易に実現できるようになっています。一方、無償版のVyatta Coreはオープンソースで開発されており、その気になれば自分で独自のインストール CDイメージを作成することも可能です。詳しい機能については、以下の記事を参考にしてください。
Vyatta――クラウド時代の仮想ルータ活用術:導入編
http://www.atmarkit.co.jp/fnetwork/tokusyuu/48vyatta01/01.html
Vyatta――クラウド時代の仮想ルータ活用術:実践編
http://www.atmarkit.co.jp/fnetwork/tokusyuu/49vyatta02/01.html
なお、米Brocade Communications Systemsは2012年11月、米Vyattaを買収することで最終的に合意したと発表しています。
ここでちょっと寄り道して、具体的なVyattaの利用例を紹介しましょう。ここでは、仮想化環境上のVyattaでIPsecサイト間VPN接続を利用する例を説明します。
図2では、クラウド事業者が提供する仮想化環境上でVyattaが起動しており、同じく仮想化環境上にServerも起動しています。本社と支社に設置されたVPN Routerとクラウド上のVyattaの間で、サイト間IPsec VPN接続を設定することで、本社と支社に接続されたクライアントは、安全にクラウド上のServerと通信することができます。
Vyattaにはeth0とeth1の2つのインターフェイスが存在しており、eth0をWAN側のインターフェイスとしてIPアドレス「192.0.2.11/24」を、eth1をLAN側のインターフェイスとしてIPアドレス「192.168.100.1/24」を、それぞれ設定するものとします。
本社のVPN RouterにはWAN側に198.51.100.22が設定され、LAN側にはプライベート・ネットワーク192.168.1.0/24が存在するものとします。支社のVPN Routerには、WAN側に203.0.113.33が設定され、LAN側にはプライベート・ネットワーク192.168.2.0/24が存在するものとします。
まず、Vyattaのeth0とeth1にIPアドレスを設定します。
# set interfaces ethernet eth0 address 192.0.2.11/24 # set interfaces ethernet eth1 address 192.168.100.1/24
次にIPsecの通信に用いるインターフェイスを設定します。
# set vpn ipsec ipsec-interfaces interface eth0
IKE(Internet Key Exchange:暗号鍵の交換を行うためのプロトコル)グループの設定を行います。
# set vpn ipsec ike-group IKE-G proposal 1 encryption aes256 # set vpn ipsec ike-group IKE-G proposal 1 hash sha1
ESP(Encapsulated Security Payload:通信を暗号化するプロトコル)グループの設定を行います。
# set vpn ipsec esp-group ESP-G proposal 1 encryption aes256 # set vpn ipsec esp-group ESP-G proposal 1 hash sha1
続けて、本社のVPN Routerとの設定を行います。以下の例では、あくまでサンプルとしてPre-shared Secret(事前共有秘密)を“Open_Sesame”としていますが、実際にはもっと複雑なものを設定してください。このPre-shared Secretは、本社と支社のVPN Routerでも設定することになります。
# edit vpn ipsec site-to-site peer 198.51.100.22 # set ike-group IKE-G # set default-esp-group ESP-G # set authentication mode pre-shared-secret # set authentication pre-shared-secret Open_Sesame # set local-ip 192.0.2.11 # set tunnel 1 local subnet 192.168.100.0/24 # set tunnel 1 remote subnet 192.168.1.0/24 # top
同様に、支社のVPN Routerとの設定も行います。
# edit vpn ipsec site-to-site peer 203.0.113.33 # set ike-group IKE-G # set default-esp-group ESP-G # set authentication mode pre-shared-secret # set authentication pre-shared-secret Open_Sesame # set local-ip 192.0.2.11 # set tunnel 1 local subnet 192.168.100.0/24 # set tunnel 1 remote subnet 192.168.2.0/24 # top
最後に、設定の反映と保存を行います。
# commit # save
本社と支社のVPN Routerでも同様にサイト間IPsec VPNの設定を行えば、クライアントからサーバへの通信がすべて暗号化されるようになります。
以上、IPSec VPN設定例を紹介しましたが、もしかすると普通のルータと違いがなくてつまらないと感じられたかもしれません。
むしろ、ここで重要な点は、上記の通り普通のルータと同じような設定を、特別に機器を用意することなく仮想化環境上で実現できるという点です。仮想ルータとしてのVyattaがどのようなものか、何となく感じをつかめていただけたでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.