仮想マシンからプロキシサーバーを経由して外部ネットワークに接続するまでの手順（VirtualBox、Windows10、CentOS7）

仮想マシンの環境構築を行なったので、その手順を備忘録として残します。
ホストOSとゲストOS間のネットワーク接続および、外部ネットワークへの接続までの手順です。
VirtualBoxはすでにインストール済みとします。

#環境
仮想マシン：VirtualBox
ホストOS：Windows10
ゲストOS：CentOS7

#CentOSダウンロード

以下のページからダウンロードします。
https://www.centos.org/download/


##古いバージョンのダウンロードする場合は以下の流れ
Old versionのthen click here >ArchiveVersionsの欲しいバージョンのtree（今回は7.6）>
http://archive.kernel.org/centos-vault/ >7.6.1810/ >isos>x 86 6 4>centos-7x86_64-DVD-1810.iso

ファイルにはDVDやEverything、Minimalなどの種類がありますが、DVDを選んでおけばいいようです。
それぞれの違いは参考記事で確認してください。

<参考>
https://shsm385.hatenablog.com/entry/2018/08/10/160345

#VirtualBoxの設定

VirtualBoxの設定部分は以下の記事とほぼ同じ内容なので、そちらを見ていただいた方がいいかもしれません。

<参考>
https://shsm385.hatenablog.com/entry/2018/08/10/160345

VirtualBox起動し仮想マシンの作成・設定を行います。

##仮想マシンの作成
名前とオペレーションシステム
名前を入力。
今回はCentOS.7としました。
タイプはLinux、バージョンはRedHot(64-bit)

メモリサイズ
メモリは2048にしました。
ハードディスク
仮想ハードディスクを作成するにチェック。

##仮想ハードディスク設定

ファイルの場所
デフォルトで大丈夫です。

ファイスサイズ
80GBくらいは必要です。

メモリ、ストレージサイズには注意が必要です。
ストレージサイズが小さすぎると後の環境構築で必要なプログラムをインストールする時につまずきます。

ストレージサイズは後から変更することもできるようですが、それがうまくいかず僕は仮想マシンを一度最初から作り直す羽目になりました、、、

ハードディスクのファイルタイプ
VDIを選択。

物理ハードディスクにあるストレージ
可変サイズを選択。

以上の設定で仮想マシンを作成します。

##仮想マシンの設定
仮想マシンを作成したら設定を行います。

設定>一般>高度A>クリップボードの共有とドラッグ＆ドロップを双方向にする

設定>ストレージ>空>属性>光学ドライブの右のディスクのアイコン>仮想光学ディスクフィアル選択>ダウンロードしたCentOSのファイルを選択して開く>OKで保存

#CentOSのインストール
作成した仮想マシンを起動するとCentOSのインストーラが起動します。
Install CentOS7を選択してエンター。
言語選択で日本を選択し続行。
インストールの概要画面に移ります。

##GUIを有効にする
GUIは初めから有効にしておきましょう。
ソフトウェアの選択をクリック>サーバー（GUI仕様）と開発ツールにチェック>完了

インストール開始をクリック。

##ROOTパスワードとユーザの作成
インストールしている間にROOTパスワードとユーザの作成を行う。
インストールが完了したら再起動をクリック。

初期セットアップ画面に移るのでLICENSINGをクリックし、ライセンス契約に同意しますにチェックを入れて完了をクリック。

ここまででCentOSの設定は完了です。
GUIを有効にしたのでインストールには結構時間がかかります。

#ネットワーク設定

続いてネットワークの設定を行います。
結構ここで詰まりました。

設定が必要なネットワークは2つです。

①ホストOSとゲストOS間のネットワーク接続
②外部ネットワークへの接続

##VirtualBoxの設定
設定>ネットワーク>アダプター1>ネットワークアダプターを有効化にチェック>割り当てはNAT>アダプター2>ネットワークを有効化にチェック>割り当てはホストオンリーアダプター>名前VirtualBox Host-Only Ethernet Adapter>ok

アダプター1にNATを、アダプター2にホストオンリーアダプターを設定します。

NATでゲストOS（CentOS）はホストOS（Windows）経由でインターネットへ接続でき、ホストオンリーアダプターでホストOSとゲストOS間の接続が可能。

この2つの設定をすることで、①②のネットワーク接続が可能になります。

詳しくはこちらの記事をご覧ください。
<参考>
https://qiita.com/feifo/items/0fde474005589afcff68

##CentOSの設定
以下ではGUIでの設定とNetworkManagerの設定を書きましたが、設定を行うのは片方だけで十分のはずです。
どちらか好きな方法で設定してください。
GUIの方がわかりやすいかとは思います。

##GUIでの設定
アプリケーション>システムツール>設定>ネットワーク 
・enp0s3 >自動接続する・他のユーザーも利用可能チェック
・enp0s8>自動接続する・他のユーザーも利用可能チェック
・ネットワークプロキシ>手動チェック、HTTPプロキシ　http://プロキシサーバーアドレス　8080

enp0s3：デフォルトのNATコネクション
enp0s8：ホストオンリーアダプターのコネクション

<参考>
https://qiita.com/9ryuuuuu/items/c604d8d086f62aaf2362

##NetworkManagerでの設定
上記のGUIの設定で問題ないはずですが、場合によってはNetworkManagerでの設定が必要になるかもしれないので、
予備知識として簡単にまとめました。

###IPv4のCONFIGURATIONの設定の意味
Automatic
・IPアドレス、ゲートウェイ、DNSの各設定にDHCPサーバを使う
・IPアドレス、ゲートウェイ、DNSの設定不要
Manual
・IPアドレス、ゲートウェイ、DNSを固定する
・IPアドレス、ゲートウェイ、DNSの各項目を自分で入力

DHCPとは
・IPv4ネットワークにおいて通信用の基本的な設定を自動的に行うためのプロトコル
・DHCPを利用すると、個々のホストはDHCPサーバに問い合わせをすることで、 各種設定に必要な情報を入手して、自動的に設定を行えるようになる

<参考>
https://www.server-memo.net/centos-settings/network/nmtui.html
https://server-setting.info/centos/network-config-c7.html
https://www.unix-power.net/networking/post-676
https://www.nic.ad.jp/ja/basics/terms/dhcp.html

###手順
$ nmtui #NetworkManager起動
Enp0s3とenp0s8の両方で以下の設定にします。

Automatically connect
・OS起動時にNICを有効化させる
・チェック

Available to all users
・すべてのユーザがNICを使用できる
・チェック

##プロキシ設定
今回はプロキシサーバーを使うので、プロキシの設定をします。
最低限登録が必要なのは次の3つです。
・bash
・yum
・git

<参考>
https://qiita.com/egnr-in-6matroom/items/5b9c0ce91d4d203c8ede

```~/.bashrc
PROXY=http://プロキシサーバーアドレス:8080

export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
```

```/ets/yum.conf
PROXY=http://プロキシサーバーアドレス:8080

export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
```

```~/.gitcinfig
[http "https://github.com" ]
    proxy=http://プロキシサーバーアドレス:8080
```

これで仮想マシンから外部ネットワークに接続できるはずです。
お疲れ様でした。