方法
3つあります。
- A. conoha-netコマンドを使う
- ポート開放できればそれでいい人向け
- ネットワーク機能に絞っているのでサブコマンド名が短い
- B. openstackコマンドを使う
- ポート開放以外にもCLIで積極的にConohaを操作してみたい人向け
- サブコマンド名が長い
- C. 「接続許可ポート」で「全て許可」を選択してfirewalld/iptables等で開ける
- 勉強したくない人向け
手順
A/B. conoha-net/openstackコマンドを使う
- 全体の流れ
クライアントを導入
-> セキュリティグループ作成
-> セキュリティグループにルールを追加
-> セキュリティグループをサーバーにアタッチ
-
コントロールパネル https://manage.conoha.jp/API/ からAPIユーザを作成
-
コントロールパネルを見ながら認証に必要な情報をファイルに書き出す
$ cat conoharc export OS_TENANT_ID=1234567890abcdef1234567890abcdef #テナントID export OS_USERNAME=gncu12345678 #ユーザー名 export OS_PASSWORD=tsuyotsuyoPasuw@-do #パスワード export OS_AUTH_URL=https://identity.[リージョン].conoha.io/v2.0 #Identity ServiceのエンドポイントURL
-
クライアントのインストール
- conoha-net
- openstack
-
sudo dnf install python3-openstackclient
またはsudo yum install python-openstackclient
(python2系はこっち)
またはpip install python-openstackclient
-
-
認証テスト
- conoha-net
$ source conoharc $ ./conoha-net list NameTag IPv4 IPv6 SecurityGroups #この1行が見えればok
- openstack
$ source conoharc $ openstack security group list +--------------------------------------+---------+-------------+---------+------+ | ID | Name | Description | Project | Tags | +--------------------------------------+---------+-------------+---------+------+ | afd90680-9ace-46eb-957c-44b34e4b323c | default | default | None | [] | #defaultが見えればok +--------------------------------------+---------+-------------+---------+------+
- conoha-net
-
セキュリティグループの作成
- conoha-net
$ ./conoha-net create-group test-group-a
- openstack
$ openstack security group create test-group-b
- conoha-net
-
ルールの追加(例:12345/tcp受信を開放する場合)
- conoha-net
$ ./conoha-net create-rule -p 12345 -P tcp test-group-a
- openstack
$ openstack security group rule create --dst-port 12345 --protocol tcp test-group-b
- conoha-net
-
追加されたルールの確認
- conoha-net
$ ./conoha-net list-group UUID SecurityGroup Direction EtherType Proto IP Range Port 8c44791a-4ff8-44eb-b660-b7a0d8f569c5 test-group-a ingress IPv4 tcp 12345 - 12345 a9a3bf17-c442-4a61-b119-c6e9d4355404 test-group-a egress IPv4 ALL ALL cd590260-fece-4929-ac52-d5d93c34aabe test-group-a egress IPv6 ALL ALL
- openstack
$ openstack security group rule list test-group-b +--------------------------------------+-------------+-----------+-----------+-------------+-----------+- | ID | IP Protocol | Ethertype | IP Range | Port Range | Direction | +--------------------------------------+-------------+-----------+-----------+-------------+-----------+- | 022a83b6-80c4-4394-bbb7-f07549112396 | tcp | IPv4 | 0.0.0.0/0 | 12345:12345 | ingress | | b65fa2e5-f736-4b95-adb6-25e2a26d3bb5 | None | IPv6 | ::/0 | | egress | | fc59cbf8-ad44-4a63-80cc-3947037cda32 | None | IPv4 | 0.0.0.0/0 | | egress | +--------------------------------------+-------------+-----------+-----------+-------------+-----------+-
- conoha-net
-
セキュルティグループをサーバーにアタッチ(即時反映)
- conoha-net
$ conoha-net attach -n [サーバー名] test-group-a
- openstack
$ openstack server add security group [サーバー名] test-group-b
- conoha-net
-
(補足)セキュルティグループの外し方
- conoha-net
$ conoha-net detach -n [サーバー名] test-group-a
- openstack
$ openstack server remove security group [サーバー名] test-group-b
- conoha-net
C. firewalld/iptables等で開ける
-
コントロールパネルから「接続許可ポート」で「全て許可」を選択
-
OSでfirewalld/iptablesを有効化して設定
あとがき
conoha-net/openstackコマンドでポート開放する方法が通常は推奨されます。
Conohaに限らずほとんどのIaaSでは、仮想サーバーのポート管理サービスはデフォルトで無効化されています。
これはポート管理する役割がIaaS側にあるからです。ポート管理を仮想サーバー内のサービスでやるのは巨大なデプロイメントでは大変な作業になります。
個人ユースではfirewalld/iptablesでも間に合うと思いますが、自宅サーバでポートスキャン&&sshリバースブルートフォースの被害にあった自分からすると、ログイン失敗のログがsyslogに大量に流れてきたり無駄なCPUリソースを食ったりするのであまりおすすめしません。