0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VirtualBoxのゲストOS内のPostgreSQLとIISに外部からアクセスする方法

Last updated at Posted at 2021-10-26

はじめに

日本のコロナ禍は以前よりは収束してきましたが、海外の方はまだまだです。その影響で海外の工場は稼働停止状態となり、国内で海外で製造するはずだった部品を作ることになりました。
PCサーバー(Windows Server 2016 + PostgreSQL)を置いていない環境でラインが稼働することになり、サーバー内で運用している一部のアプリケーションを、ノートPC(Windows 10 + PostgreSQL)で動かせないか検証して欲しい旨の要望がありました。

検証ということで何度もやり直せる方が良いだろうと、VirtualBoxを用いた仮想環境で検証環境を構築すればスナップショットで指定の状態に戻すことが出来るので、採用することにしました。性能検証は実機を使用します。

VirtualBox

VM VirtualBoxとは、Oracleが開発しているx86仮想化ソフトウェア・パッケージである。

インストール

Windows版ダウンロード
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp

ゲストOSの構築

64bit OS

最初に社内の仮想サーバー(Windows Server 2016)内にVirtualBox をインストールして仮想マシンを作成しようとした際、 64bitが選択肢に表示されませんでした。

64bit OS(例 Windows/Ubuntu)を構築するには、Hyper-Vが有効化されている必要がありました。社内の仮想環境ではHyper-Vが有効化できないようなので、物理サーバー(Windows Server 2016)内に構築しました。

32bit OS

32bit OS(例 Windows/Ubuntu)を構築するには特に制限はない。

Guest Additions

VirtualBox Guest AdditionsはゲストOSにインストールすることで、ホストOSとゲストOS間のより緊密な統合を行い、ゲストOSをより使いやすくするための以下の機能が利用できるようになります。

  • シームレスなマウス操作
  • 共有フォルダー
  • デスクップ解像度の変更
  • シームレスなウィンドウサイズの変更
  • ホストとの時刻の同期
  • クリップボードの共有
  • オートログオン

ネットワーク設定

デフォルトは、「NAT」となっている。
image.png

ネットワークアドレスは、10.0.2.0/24 で、ゲストOSのIPアドレスは、10.0.2.15 が割り当てられます。
10.0.2.2 はゲートウェイ、10.0.2.3 はネームサーバ、10.0.2.4 はTFTPサーバーが割り振られます

ネットワーク設定は幾つかあるが、NATとポートフォワーディングで用は足せる。

ポートフォワーディング

ポートフォワーディングとは、インターネットから特定のポート番号宛てに届いたパケットを、あらかじめ設定しておいたLAN側の機器に転送する機能です。

ゲストOSのIPアドレスは、10.0.2.15 が割り当てられるが、ホストや外部から10.0.2.15にPINGしても応答しません。
ゲストOSのPostgreSQLにアクセスしたい場合、ポートフォワーディングの機能を使用する。

ネットワーク設定で割り当てに「NAT」を選択すると「ポートフォワーディング」ボタンが表示されるのでクリックします。
ポートフォワーディングの設定例として、IISとPostgreSQLを設定します。ゲストIPは空欄でも構いません。
image.png

ホストPCにもPostgreSQLとIISが入っており、どちらもデフォルトポートを使用しているため、今回ポートフォワーディング用ポートとして54358080を使用しています。

ファイアウォール

それにともないホスト側のファイアウォールで、PostgreSQLならポート5435およびIISならポート8080を受信許可にしておく必要があります。
image.png

外部アクセス

ポートフォワーディング機能により、指定したポートがゲストOS内のポートに置き換わることでアクセスができるようになる。

データベース接続

データベース接続ツール(例 A5:SQL Mk-2)のサーバー名には、ホストのIPアドレスを指定しポート(例 5435)を指定することで、ゲストOS内のPostgreSQLにアクセスが出来るようになる。

Web接続

ゲストOS内IISにアクセスするには、ホストのIPアドレスを指定しコロン(:)後にポート(例 8080)を付与する。

http://ホストIPアドレス:8080/Test/sample.aspx

最後に

これでノートPC(Windows 10 + PostgreSQL)を使用した検証環境の構築ができるようになりました。
これまで社内のVirualBoxを使用方法として、アプリケーションのインスートール検証やプログラムの不具合検証といったくらいだったので、ゲストOS内のPostgreSQLとIISを外部からアクセスするには、どうやればいいのか知識が足りなかったので調べながら半日くらいかかってしまった。
ゲストOSのIPアドレスは、10.0.2.15が割り当たっていますが、このIPアドレスでは外部からはPING応答しないし、VirtualBoxのネットワーク設定を読んでも方法が幾つもあって理解がすすまなかった。それはポートフォワーディングの意味をちゃんと理解できてなかったからですね。ポートフォワーディングの意味を理解したら、そういうことかとあっさり解決しました。

0
2
1

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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?