Tech Sketch Bucket of Technical Chips by TIS Inc.

ネットワーク仮想化ソフトウェアのOpenVNetでセキュリティグループを使う

Pocket

 以前の「OpenVNetの紹介」の記事でオープンソースのネットワーク仮想化ソフトウェアであるOpenVNetの仕組みやOpenVNetのもつ機能を紹介いたしました。今回は、OpenVNetの持つさまざまな機能の中のひとつであるセキュリティグループの設定方法及びその性質を解説します。

セキュリティグループとは

 セキュリティグループとは仮想のファイアウォールです。セキュリティグループを設定することで、セキュリティグループが許可しない通信を遮断することができます。

インストール

 OpenVNetの動作環境はCentOS 6となっているので今回はCentOS 6.7 x86_64をminimalインストールしました。

 OpenVNetおよびLXCのインストールは公式のドキュメントのLXC SetupのAttach them to Open vSwitchまでの手順を行います。これを行うと以下の図のようにOpenvSwitch(br0)と作成される仮想ネットワークのテストに使用するLXCのインスタンス2つ、OpenVNetのvna、vnmgr、webapi、DBの準備ができ、仮想ネットワークを設定するためのコマンドラインインタフェースであるでvnctlコマンドが使えるようになります。

  ( http://openvnet.org/installation/ より引用)

OpenVNetの設定

 OpenVNetの設定はvnctlコマンドを用いて行います。まずは、datapathとnetworkを作成します。ここはドキュメントと同じです。

 次にinterfaceを作成します。セキュリティグループを使用する場合、「ingress_filtering_enabled」という項目をtrueにする必要があります。

セキュリティグループの設定

 まずは、inst1からinst2への疎通確認を以下のように行います。

 OpenVNetのセキュリティグループはホワイトリスト方式で、現在、inst1、inst2には何も許可されていないので、どちらも失敗します。

 次にセキュリティグループを作成します。セキュリティグループではインバウンドの制御が行えます。項目の中の「rules」に許可する内容を記述し、<プロトコル>:<ポート番号>:<送信元IP>の形式で設定します。この時、ポート番号を「-1」とするとすべてのポートを意味し、 送信元IPも「0.0.0.0/0」とするとすべてのIPを意味します。また複数のルールを設定する場合、「 tcp:22:10.100.0.10, tcp:22:10.100.0.11 」のようにします。

 今回は、inst1からのsshを許可するセキュリティグループとinst2からのsshを許可するセキュリティグループの二つを作成します。

 最後に、inst1にinst2からのsshを許可するセキュリティグループを、inst2にinst1からのsshを許可するセキュリティグループを設定します。

 そして、これらの設定を反映させるため、vnaのrestartを行います。

 動作確認として、inst1からinst2への疎通確認を以下のように行います。

 先ほどはどちらも失敗しましたが、今回はsshの許可を追加したので、pingは失敗し、sshは成功します。

同一のセキュリティグループを持つinterface

先ほどはinst1、inst2に異なるセキュリティグループを持たせましたが、今度は同じセキュリティグループを持たせます。inst1のsg-test1を削除し、sg-test2を追加します。

また同じように動作確認を行います。

今度はping、sshともに成功します。sg-test2が許可しているのはsshのみですが、OpenVNetでは同一セキュリティーグループ内では制限されないようになっているため、pingも成功しました。

まとめ

以上のことをまとめると以下のようになります。

  • セキュリティグループはホワイトリスト方式である。
  • セキュリティグループはinterfaceに設定される。
  • 同一セキュリティグループ内では制限されない。

OpenVNet_SG

今回はセキュリティグループの使い方とその性質について説明しましたが、公式のドキュメントではOpenVNetによる仮想のDHCPサーバやルーターの構築方法なども記載されていますので、ぜひそちらも参照下さい。

エンジニア採用中!私たちと一緒に働いてみませんか?