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」に設定し、生成。
コメントは任意だが、適当に「The key for ora1 on Oracle Cloud」などと入力した。秘密鍵を「ora1.key」、公開鍵を「ora1.pub」というファイル名で、それぞれ保存しておく。
公開鍵を保存する際は、「公開鍵を保存」ボタンで保存するのではなく、画面上のキーをコピペでテキストファイルに貼り付ける。
インスタンスの作成
Oracle Cloudコンソールにサインインし、「インスタンスの作成」から、インスタンスを作成する。
インスタンス名は「vm_ora1」とする。イメージは、「Ubuntu 18.04 Minimal」を選択。
シェイプ(サーバスペック)が、AllwaysFree対象の「VM.Standard.E2.1.Micro」となっていることを確認する。CPU1コア、メモリ1GBと最小限の性能だが、VPN張ってPi-holeを動かすくらいなら十分なはず。
続いてネットワークの設定。ネットワークセキュリティグループを有効にする。パブリックIPアドレスは、あとで固定アドレスを割り当てたいので、この段階ではパブリックIPアドレスは割り当てない。
SSHキーとして、先ほど作成した公開鍵(ここでは、ora1.pub)を登録する。
最後の「拡張オプション」で、ネットワークの設定。プライベートIPアドレスを指定のアドレスに指定し、ホスト名を設定。(この手順では、インスタンス名を「vm_ora1」と指定したので、ホスト名を入力しないとホスト名も「vm_ora1」になってしまう。
すべての必要事項を正しく入力したことを確認したら、「作成」を押下。
数分待つと、インスタンスが起動する。
なお、インスタンスの作成ボタンを押してた際に、「Out of host capacity.」なるエラーが発生することも。クラウド側のキャパシティ不足のようなので、待つしかなさそう。このときは、数日後にやり直すとインスタンスが作成できた。
パブリックIPアドレスの割り当て
インスタンス作成後、インターネットから接続できるよう、パブリックIPアドレスを割り当てる。インスタンスの詳細画面から「アタッチされているVNIC」を開き、VNIC(仮想ネットワークインタフェース)の詳細画面へ。
VNICの詳細画面で、さらにIPアドレスの設定画面を開く。少しわかりにくいが、右側の「…」の部分を開いて、IPアドレスの編集画面を開く。
インスタンス作成時にパブリックIPアドレスを割り当てなかったので、「パブリックIPアドレスなし」になっている。これを、「予約済みパブリックIPアドレス」に変更する。名称は適当に「pip_ora1」と命名。
「更新」を押下すると、IPアドレスの詳細画面に戻るが、パブリックIPアドレス替わり当たっている。
これで、明示的にリリースしない限り同じIPアドレスが継続して利用できるので、DDNSなどを利用する手間が省ける。予約済IPアドレスはAzureでは有料だった記憶があるが、Oracle Cloudでは、AlwaysFreeでも1個まで予約済IPアドレスを使えるようだ。
NSG(ネットワークセキュリティグループ)の作成
続いて、VNICにNSG(ネットワークセキュリティグループ)を割り当てる。NSGとは、仮想マシンの通信可否をコントロールするファイアウォールのようなもの。Oracle Cloudでは、セグメント単位に設定ができる「セキュリティリスト」と、VNIC単位に設定ができる「ネットワークセキュリティグループ」の2つの仕組みがあるが、今後後者が推奨とのことなので、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 | すべてのプロトコル | 外部に向けた通信はすべて許可 |