Oracle Cloud上でubuntu18.04サーバを構築する(前編)

Oracle Cloud上に、Pi-holeの実行環境となるLinuxサーバ(ubuntu 18.04)を構築し、OSの基本的な設定を行う。

Pi-holeの実行環境にすることを目的としてサーバを構築しているが、本章の執筆にあたっては、Oralce Cloud上にubuntu18.04環境を構築する手順として、できる限り汎用的なものとなるよう心掛けている。

構成の検討

Pi-holeの対象環境とOracle Cloudが提供するイメージ・ソースを見比べ、ubuntuベースの仮想マシンを構築することとする。

ホスト名、プライベートIPアドレスなどは下表のとおりとする。

項目 設定値
ホスト名 ora1
プライベートIPアドレス 192.168.144.251

SSHキーの作成

Oracle Cloudのコンソールからインスタンスの作成に取り掛かる前に、SSH用のキーファイルを作成しておく。Puttyに同梱されている「puttygen.exe」で作るのが手軽。鍵の種類を「RSA」、鍵のビット長を「2048」に設定し、生成。

f:id:ttkw-y:20191208165044p:plain
仮想マシン用のSSHキーを作成

コメントは任意だが、適当に「The key for ora1 on Oracle Cloud」などと入力した。秘密鍵を「ora1.key」、公開鍵を「ora1.pub」というファイル名で、それぞれ保存しておく。

公開鍵を保存する際は、「公開鍵を保存」ボタンで保存するのではなく、画面上のキーをコピペでテキストファイルに貼り付ける。

インスタンスの作成

Oracle Cloudコンソールにサインインし、「インスタンスの作成」から、インスタンスを作成する。

インスタンス名は「vm_ora1」とする。イメージは、「Ubuntu 18.04 Minimal」を選択。

f:id:ttkw-y:20191214095428p:plain
インスタンス名を指定、イメージを選択

シェイプ(サーバスペック)が、AllwaysFree対象の「VM.Standard.E2.1.Micro」となっていることを確認する。CPU1コア、メモリ1GBと最小限の性能だが、VPN張ってPi-holeを動かすくらいなら十分なはず。

f:id:ttkw-y:20191214095557p:plain
シェイプの選択

続いてネットワークの設定。ネットワークセキュリティグループを有効にする。パブリックIPアドレスは、あとで固定アドレスを割り当てたいので、この段階ではパブリックIPアドレスは割り当てない。

f:id:ttkw-y:20191214095803p:plain
ネットワークオプションの設定

SSHキーとして、先ほど作成した公開鍵(ここでは、ora1.pub)を登録する。

f:id:ttkw-y:20191215100403p:plain
SSHキーの登録

最後の「拡張オプション」で、ネットワークの設定。プライベートIPアドレスを指定のアドレスに指定し、ホスト名を設定。(この手順では、インスタンス名を「vm_ora1」と指定したので、ホスト名を入力しないとホスト名も「vm_ora1」になってしまう。

f:id:ttkw-y:20191215100429p:plain
拡張オプションーネットワーキングの設定

すべての必要事項を正しく入力したことを確認したら、「作成」を押下。

f:id:ttkw-y:20191215102159p:plain
「作成」押下直後。インスタンスをプロビジョニング中、、、

数分待つと、インスタンスが起動する。

f:id:ttkw-y:20191215102317p:plain
インスタンスの作成が完了

なお、インスタンスの作成ボタンを押してた際に、「Out of host capacity.」なるエラーが発生することも。クラウド側のキャパシティ不足のようなので、待つしかなさそう。このときは、数日後にやり直すとインスタンスが作成できた。

f:id:ttkw-y:20191215102636p:plain
キャパシティ不足。数日待つしかない?

パブリックIPアドレスの割り当て

インスタンス作成後、インターネットから接続できるよう、パブリックIPアドレスを割り当てる。インスタンスの詳細画面から「アタッチされているVNIC」を開き、VNIC(仮想ネットワークインタフェース)の詳細画面へ。

f:id:ttkw-y:20191215102924p:plain
インスタンスの詳細画面からアタッチされたVNICを選択

VNICの詳細画面で、さらにIPアドレスの設定画面を開く。少しわかりにくいが、右側の「…」の部分を開いて、IPアドレスの編集画面を開く。

f:id:ttkw-y:20191215103017p:plain
IPアドレスの編集画面を開く

インスタンス作成時にパブリックIPアドレスを割り当てなかったので、「パブリックIPアドレスなし」になっている。これを、「予約済みパブリックIPアドレス」に変更する。名称は適当に「pip_ora1」と命名

f:id:ttkw-y:20191215103215p:plain
固定IPアドレスを割り当てる

「更新」を押下すると、IPアドレスの詳細画面に戻るが、パブリックIPアドレス替わり当たっている。

f:id:ttkw-y:20191215103902p:plain
予約済のパブリックIPアドレスが割り当てられた

これで、明示的にリリースしない限り同じIPアドレスが継続して利用できるので、DDNSなどを利用する手間が省ける。予約済IPアドレスはAzureでは有料だった記憶があるが、Oracle Cloudでは、AlwaysFreeでも1個まで予約済IPアドレスを使えるようだ。

NSG(ネットワークセキュリティグループ)の作成

続いて、VNICにNSG(ネットワークセキュリティグループ)を割り当てる。NSGとは、仮想マシンの通信可否をコントロールするファイアウォールのようなもの。Oracle Cloudでは、セグメント単位に設定ができる「セキュリティリスト」と、VNIC単位に設定ができる「ネットワークセキュリティグループ」の2つの仕組みがあるが、今後後者が推奨とのことなので、NSGを使って通信可否を設定する。

f:id:ttkw-y:20191215104306p:plain
NSGの新規作成画面

外部からSSHの接続を許可、外部に対する通信を許可するほか、Oracle Cloudの推奨するICMPの通信許可を加えた、以下の4つのルールを設定する。

方向 ソースまたは宛先 プロトコル 説明
イングレス CIDR: 0.0.0.0/0 TCP 宛先ポート22(SSH SSH接続を許可
イングレス CIDR: 0.0.0.0/0 ICMP タイプ3,4(Destination Unreachable , Fragmentation required) Oracle Cloud推奨ルール
イングレス CIDR: 192.168.144.0/21 ICMP タイプ3(Destination Unreachable) Oracle Cloud推奨ルール
エグレス CIDR: 0.0.0.0/0 すべてのプロトコル 外部に向けた通信はすべて許可

これでインスタンスの作成に関する作業はすべて終了。後編では、いよいよSSHでサーバにログインする。