LoginSignup
2
0

More than 5 years have passed since last update.

【IDCFクラウド】cloudstack-apiでFWの設定をする。

Last updated at Posted at 2016-06-16

はじめに

ちょっと予定がずれまして前々回に【IDCFクラウド】cloudstack-apiで仮想マシンにパブリックIPを付与する。を行いました。
さらにその前の回(前々々回)では【IDCFクラウド】cloudstack-apiで仮想マシンを作成する。を行いました。
これよって「仮想マシンを作成し、パブリックIPの付与」まで完了しました。
ただ、これでは外部との通信ができません。IDCFクラウドのFWはホワイトリスト方式のため、必要なポートを指定して開けてあげる必要があります。
ということで、今回はcloudstack-apiコマンドでFWの設定を行います。

事前確認

まずは現在のFW状況を確認します。

コマンド
$ cloudstack-api listFirewallRules --ipaddressid 8ac2bf54-e238-43b2-89be-4bec101d694e -t ipaddress,startport,endport,protocol,ciderlist,id
戻り値
no data found
オプション 内容
--ipaddressid パブリックIPアドレス

指定したパブリックIPに何もFWの設定がないためno data foundとなっています。

FWルールの作成

FWルールの作成はcreateFirewallRuleコマンドで行います。

コマンド
$ cloudstack-api createFirewallRule --ipaddressid 8ac2bf54-e238-43b2-89be-4bec101d694e --protocol TCP --startport 80 --endport 80
戻り値
{
  "createfirewallruleresponse": {
    "id": "f47780b8-0507-4b10-9c8c-0ff08d0456ac",
    "jobid": "61c80d83-6e0b-4302-b004-738dbc40ba59"
  }
}

それではもう一度FWの設定を確認してみましょう。

確認
$ cloudstack-api listFirewallRules --ipaddressid 8ac2bf54-e238-43b2-89be-4bec101d694e -t ipaddress,startport,endport,protocol,ciderlist,id
戻り値
+----------------+-----------+---------+----------+-----------+--------------------------------------+
|   ipaddress    | startport | endport | protocol | ciderlist |                  id                  |
+----------------+-----------+---------+----------+-----------+--------------------------------------+
| 210.129.22.172 | 80        | 80      | tcp      | None      | f47780b8-0507-4b10-9c8c-0ff08d0456ac |
+----------------+-----------+---------+----------+-----------+--------------------------------------+

80番ポートが解放されたのが確認できました。

FWの解放は範囲を指定して行うことができます。その場合は--startportの値に始まりとなるポート番号、--endportに終わりとなるポート番号を指定します。

コマンド
$ cloudstack-api createFirewallRule --ipaddressid 8ac2bf54-e238-43b2-89be-4bec101d694e --protocol TCP --startport 8000 --endport 8100
戻り値
{
  "createfirewallruleresponse": {
    "id": "a3d25f8c-ebd0-458c-b86b-49cfcb6592d1",
    "jobid": "aeaa1a60-a754-40bb-8bc0-142fa7eee3a5"
  }
}
コマンド
$ cloudstack-api listFirewallRules --ipaddressid 8ac2bf54-e238-43b2-89be-4bec101d694e -t ipaddress,startport,endport,protocol,ciderlist,id
戻り値
+----------------+-----------+---------+----------+-----------+--------------------------------------+
|   ipaddress    | startport | endport | protocol | ciderlist |                  id                  |
+----------------+-----------+---------+----------+-----------+--------------------------------------+
| 210.129.22.172 | 80        | 80      | tcp      | None      | f47780b8-0507-4b10-9c8c-0ff08d0456ac |
| 210.129.22.172 | 8000      | 8100    | tcp      | None      | a3d25f8c-ebd0-458c-b86b-49cfcb6592d1 |
+----------------+-----------+---------+----------+-----------+--------------------------------------+

また、特定IPのみを許可する場合は--cidrlistを使います。

コマンド
$ cloudstack-api createFirewallRule --ipaddressid e72d0249-b3e1-4841-9463-2f56ee9964f5 --protocol TCP --startport 22 --endport 22 --***.***.***.***/32
戻り値
{
  "createfirewallruleresponse": {
    "id": "2fa54ca1-0ed9-4bd3-a977-a0b1bb5f19cc",
    "jobid": "109e9497-36bc-4250-84ca-bb9a8d89796c"
  }
}
コマンド
$ cloudstack-api listFirewallRules --ipaddressid e72d0249-b3e1-4841-9463-2f56ee9964f5 -t ipaddress,startport,endport,protocol,ciderlist,id
戻り値
+----------------+-----------+---------+----------+-----------+--------------------------------------+
|   ipaddress    | startport | endport | protocol | ciderlist |                  id                  |
+----------------+-----------+---------+----------+-----------+--------------------------------------+
| 210.129.22.172 | 22        | 22      | tcp      | None      | 2fa54ca1-0ed9-4bd3-a977-a0b1bb5f19cc |
| 210.129.22.172 | 80        | 80      | tcp      | None      | f47780b8-0507-4b10-9c8c-0ff08d0456ac |
| 210.129.22.172 | 8000      | 8100    | tcp      | None      | a3d25f8c-ebd0-458c-b86b-49cfcb6592d1 |
+----------------+-----------+---------+----------+-----------+--------------------------------------+

以下、利用したオプションについてです。

オプション 内容
--ipaddressid パブリックIPアドレスID
--protocol プロトコル(TCP/UDP)
--startport スタートポート
--endport エンドポート
--cidrlist 許可IP及びNW

FWルールの削除

作成したFWルールの削除はdeleteFirewallRuleコマンドで行います。

コマンド
$ cloudstack-api deleteFirewallRule --id a3d25f8c-ebd0-458c-b86b-49cfcb6592d1
{
  "deletefirewallruleresponse": {
    "jobid": "cf419432-24dc-404c-a4bf-8b478cfdf9ff"
  }
}
オプション 内容
--id FWルールID
$ cloudstack-api listFirewallRules --ipaddressid 8ac2bf54-e238-43b2-89be-4bec101d694e -t ipaddress,startport,endport,protocol,ciderlist,id
+----------------+-----------+---------+----------+-----------+--------------------------------------+
|   ipaddress    | startport | endport | protocol | ciderlist |                  id                  |
+----------------+-----------+---------+----------+-----------+--------------------------------------+
| 210.129.22.172 | 22        | 22      | tcp      | None      | 2fa54ca1-0ed9-4bd3-a977-a0b1bb5f19cc |
| 210.129.22.172 | 80        | 80      | tcp      | None      | f47780b8-0507-4b10-9c8c-0ff08d0456ac |
+----------------+-----------+---------+----------+-----------+--------------------------------------+

削除されました。

おわりに

 FWルールはあくまでもパブリックIPアドレスに対して行う設定です。なのでプライベートIPに対しては行えません。
もしプライベートネットワーク間での設定を行いたい場合は各サーバでiptablesの設定を行う必要があります。
 また、今回設定したFWルールは「仮想マシンにNAT接続している限り有効」という点にも注意が必要です。
一旦、IPの割り当てを解除してしまうと、そのパブリックIPに設定したFWルールは全て消えてしまいます。
そのためFW設定を行う際は「IPは使いまわせても、FWルールは使い回せない」ということに気をつけておきましょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0