Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (3) ネットワーク構成

# はじめに
ここでは先に作成したWazi aaSの環境を使用するためのネットワーク構成について記載していきます。
※ここで記載している内容はWazi aaSの仮想サーバーにアクセスする想定で記載していますが、ネットワーク構成についてはWazi aaS以外の仮想サーバー(x86のLinuxサーバーや、Windowsサーバーなど)でも基本的には同じです。

## 関連記事


[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (1) 概要](https://qiita.com/tomotagwork/items/487d91ea8ddfb50e7257)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (2) 仮想サーバー作成](https://qiita.com/tomotagwork/items/9cea4c804f260d609eed)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (3) ネットワーク構成](https://qiita.com/tomotagwork/items/be2803e504b87cf364e5)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (4) Wazi aaS への接続](https://qiita.com/tomotagwork/items/b59717d767a91628b825)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (5) Stock Iamge確認](https://qiita.com/tomotagwork/items/40b7eaec61e31f830cbe)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (6) Stock Iamge基本操作/カスタマイズ](https://qiita.com/tomotagwork/items/0f2e914fd6263f2b40db)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (7) Wazi Image Builder](https://qiita.com/tomotagwork/items/fcfd295aaa54fa597c4b)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (7)' Wazi Image Builder - Trouble Shootingメモ](https://qiita.com/tomotagwork/items/fd804734595644a09d47)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (8) Wazi aaS仮想サーバーの複製](https://qiita.com/tomotagwork/items/ef23025b1ca3800b73c1)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (9) TerraformによるWazi aaS仮想サーバーの管理](https://qiita.com/tomotagwork/items/883652c1534d12f2b042)
# ネットワーク構成概要

参考: [ネットワーキングについて](https://cloud.ibm.com/docs/vpc?topic=vpc-about-networking-for-vpc&interface=ui)

上の参考に上げた情報にあるように、IBM Cloud上のVPCのネットワーク構成の概念図としては以下のイメージになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/c24f175e-69b6-0fa4-3616-a4332b989b0e.png)

図中の"VSI"(Virtual Server Instance)と書かれた緑色の丸いアイコンが1つの仮想サーバーなので、これがWazi aaSのインスタンスに相当します。
このVPC上のWazi aaS(VSI)を外部(例えばインターネットに接続できるPC)から使用するためにはいくつかネットワーク構成方法がありますが、ここでは、以下の2つの方法について見ていきたいと思います。

**(1) Floating IP(浮動IP)を使用する方法**: Wazi aaSの仮想サーバーにGlobalのIPアドレスを割り当てて、インターネット接続可能なPCからアクセスする方法
**(2) VPNを使用する方法**: PC上にVPNクライアントを導入/設定し、VPCとの間でVPN接続を行ってWazi aaSの仮想サーバーにアクセスする方法


# (1) Floating IP(浮動IP)を使用する方法

## 概要
参考:[IBM Cloud 浮動 IP について](https://cloud.ibm.com/docs/vpc?topic=vpc-fip-about&interface=ui)

浮動IPを使用する方法をためてみます。先の全体像のイメージでいうと、以下の赤線の経路でアクセスするイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/5d1f8cdb-a361-050c-da2b-5c4737750c3b.png)


## 設定例

### 浮動IPの付与
参考: [ネットワーク・インターフェースの追加または編集](https://cloud.ibm.com/docs/vpc?topic=vpc-using-instance-vnics&interface=ui#editing-network-interfaces)

上のガイドに従って、先に作成したWazi aaS仮想サーバーに浮動IPを割り当てます。

仮想サーバー・インスタンスの一覧から、対象のWazi aaSのサーバーを選択し、詳細画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b7860274-c657-9d25-5d7e-f9f0d0894a24.png)

仮想サーバー詳細画面の一番下にネットワーク・インターフェースの欄があります。デフォルトだとeth0というインターフェースが割り当てられていますので、その右端の編集アイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/85aa89c4-c049-53c9-e924-5ac970991e9e.png)
※この時点ではeth0には浮動IPが付与されていないので浮動IPの列は「-」という表記になっています。

浮動IPアドレス欄で「新規の浮動IPを予約する」を選択して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/545e8f24-ed77-3513-c22f-ca96d56641e1.png)
※ネットワーク・インターフェースに関連づけるセキュリティー・グループは、IBM Cloud管理者に確認し適切なセキュリティー・グループを選択してください(セキュリティー・グループについては後述)。

Global IPアドレスがアサインされ、浮動IPの欄にそのIPアドレスが表示されます(画像はIPアドレスの一部をマスキングしています)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/54f4b4af-a4cc-9191-2d18-b7f03777465b.png)


### ネットワーク・セキュリティー
参考:
[VPC のセキュリティー - セキュリティー・グループ](https://cloud.ibm.com/docs/vpc?topic=vpc-security-in-your-vpc&interface=ui#sgs-security)
[セキュリティー・グループ](https://cloud.ibm.com/docs/vpc?topic=vpc-using-security-groups)

GlobalのIPアドレスをアサインしたということは、インターネットから誰でもこのIPアドレスにアクセスできるということになります。
Wazi aaSはz/OS開発環境として利用するものであり、例えば一般ユーザー向けにECサイトのようなサービスを提供するインフラとして利用するものではありません。つまり、どこからでも誰もが利用できるようにする必要は無く、むしろ利用者を限定するようにセキュリティーを設定するのが普通です。
"セキュリティー・グループ"という機能を使用すると、インバウンド、アウトバウンドそれぞれでポートやサブネット単位でのアクセス制御を行うことができます。
仮想サーバーを作成する際にデフォルト構成でセキュリティー・グループを作成すると、恐らく以下のような設定でセキュリティー・グループが作成されると思います。

浮動IPを割り当てたネットワーク・インターフェースに関連付けられているセキュリティー・グループの詳細画面から「ルール」タブを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/282b3c44-9e93-7c4d-e9e1-28f5c475f270.png)


デフォルトでは基本的に全てのインターネットからのリクエスト(インバウンド)を拒否し、SSH用に22番ポートとICMPのリクエストを任意の送信元から受け付けるようになっています。
また、すべてのインターネットへのリクエスト(アウトバウンド)を許可する設定になっています。

インバウンドのリクエストについては送信元を絞りたいので、22番ポートの設定を変更します。例えば、ある企業の社内ネットワークにあるPC(特定のサブネット)からのリクエストのみ許可するようにしたいと思います。

インバウンド・ルールのポート22の設定をしている行の右端のアクションアイコンからプルダウンメニューの「編集」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/53cee9a9-ef33-efdd-ec37-bd992c7623b1.png)

ソース・タイプとしてCIDRブロックを選択し、許可したいリクエスト元のサブネットをCIDR形式で指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ec295186-9efd-a9e4-f7a9-011cdb8d3ffe.png)

これで、SSH用のポート22番についてリクエスト元のサブネットが制限されるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/f0237b0f-6785-5cb7-53f3-5dd660919a4a.png)

同様に、他に外部から使用するポートについても特定のCIDRやIPアドレスを指定してアクセスを許可する設定を追加していきます。

設定例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/d6d5de82-e6cd-1df0-bcf3-6e12bbde920d.png)

Wazi aaS上で使用される主なポート番号は以下の通りです。

- SSH: 22
- TN3270(PCOM): 992
- z/OSMF: 10443
- RSE: 8137-8139
- DEBUG: 8135, 8191-8192, 8194

参考: [Configurations in z/OS stock images - Reserved configurations](https://www.ibm.com/docs/en/wazi-aas/1.0.0?topic=vpc-configurations-in-zos-stock-images)

<font color="red">※ここで設定しているのはあくまで接続元のネットワークとポート番号による接続制限です。後述のVPN接続とは違ってネットワーク上を流れる通信の暗号化や認証の仕組みなどが担保されるわけではありません。暗号化や認証については各接続で個別に考慮する必要がありますのでご注意ください。</font>


# (2) VPNを使用する方法

## 概要
参考: [クライアントとサイト間の VPN サーバーについて](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-client-to-site-overview&interface=ui)

IBM Cloud上のVPCのネットワーク構成の概念図としては以下のイメージになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/a2adb6f1-bc91-59c8-579b-948ddb7017f3.png)


## 設定

※ここでは参考になるガイド類のみ記載 

参考Qiita記事:
[Client VPN for VPC（Client to Site型VPN）でVPC環境に接続する](https://qiita.com/y_tama/items/16987e07842262cd9068)
[IBM Cloud：Client to Site型VPNでVPC環境に接続する (Secrets Manager)](https://qiita.com/takason/items/3d04e4e31daae4def1d7)
[IBM Cloud Virtual Private Cloud (VPC) 構築実践チュートリアル - パブリックゲートウェイによる外部への接続](https://qiita.com/6onoda/items/06f9a4b1090d05ea0813#%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4%E3%81%AB%E3%82%88%E3%82%8B%E5%A4%96%E9%83%A8%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A)


### 事前準備

#### Secrets Manager
参考: 
[Secrets Manager の使用を開始する](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-getting-started#getting-started)
[クライアントからサイトへの認証のセットアップ](https://cloud.ibm.com/docs/vpc?topic=vpc-client-to-site-authentication)

### VPNサーバーの作成

参考: [VPN サーバーの作成](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-create-server&interface=ui)

### VPN 経路の管理

参考: [VPN 経路の管理](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-client-to-site-routes&interface=ui)

### パブリック・ゲートウェイ

参考: [パブリック・ゲートウェイについて](https://cloud.ibm.com/docs/vpc?topic=vpc-about-public-gateways&interface=ui)

### PC側設定

参考: [クライアント VPN 環境のセットアップと VPN サーバーへの接続](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-client-environment-setup)