VirtualBoxでCentOsの仮想マシンを作成して最初にやること

# VirtualBoxでCentOsの仮想マシンを作成して最初にやること

## 目次
1. 前提
1. キーボードを日本語設定にする。
1. NAT経由でインターネットに接続できるようにする
1. ホストオンリーアダプタでホストから接続できるようにする

## 前提
* 以下の設定でCentOSの仮想マシンを作成していること
   * CentOS7
   * 最小構成でインストール
   * US英語ヴァージョンでインストール
* VirtualBoxに以下のネットワーク設定がされていること
   * ネットワークアダプタ1: NAT
   * ネットワークアダプタ2: ホストオンリーアダプタ

## キーボード配列を日本語にする。

* 概要
   * localectl コマンドを使用して、キーボードマッピングを変更する。

* キーボードマッピングの初期設定を確認する。
   * US英語ヴァージョンでインストールしているため、キーボードマッピングがusになっている。

   ```
   # localectl status
   System Locale: Lang=en_US.UTF-8
   VC Keymap: us
   X11 Layout: us
   ```


* キーボードマッピングのリストを表示
   * キーボードマッピングののうち、jpを含むものは下記。jp106が一般的な日本語キーボード。

   ```
   # localectl list-keymaps | grep jp
   jp
   jp-0ADG109A
   jp-dborak
   jp-kana86
   jp106
   ```

* キーボードマッピングを変更する。

   ```
   # localectl set-keymap jp106
   ```

* キーボードマッピングが変更されたことを確認する。

   ```
   # localectl status
   System Locale: Lang=en_US.UTF-8
   VC Keymap: jp106
   X11 Layout: jp
   X11 Model: jp106
   X11 Options: terminate:ctrl_alt_bksp
   ```

## NAT経由でインターネットに接続できるようにする

* 概要
   * `nmcli` コマンドを使用してコネクションを起動する。

* ネットにつながらないことの確認
   * インターネット接続設定がされていないのでpingは通らない。

   ```
   # ping www.google.co.jp
   ping: www.google.co.jp: Name or service not known
   ```


* デバイスの初期状態を確認

   ```
   # nmcli device status
   DEVICE  TYPE      STATE        CNNECTION
   enp0s3  ethernet  disconncted  --
   enp0s8  ethernet  disconncted  --
   ```

* コネクションの初期状態を確認

   ```
   # nmcli connection show
   NAME                UUID                                  TYPE      DEVICE
   Wired connection 1  ********-****-****-****-************  ethernet  --
   enp0s3              ********-****-****-****-************  ethernet  --
   ```

* 解説
   * `enp0s3` はVirtualBoxのネットワーク構成がデフォルト(ネットワークアダプタ1がNAT)のときから存在するもの
   * `enp0s8` と `Wired connection 1 ` は、ネットワークアダプタ2にホストオンリーアダプタを設定すると出現する。
   * そのため、enp0s3にNAT用の設定をする。

* コネクションenp0s3の状態を確認
   * コネクションの自動起動設定がされていない。

   ```
   # nmcli connection show enp0s3
   connection.autoconnect  no
   ```

* コネクションの自動起動設定をする。

   ```
   # nmcli connection modify enp0s3 connection.autoconnect yes
   ```

* デバイスの状態を確認

   ```
   # nmcli device status
   DEVICE  TYPE      STATE        CNNECTION
   enp0s3  ethernet  conncted     enp0s3
   enp0s8  ethernet  disconncted  --
   ```

* コネクションの状態を確認

   ```
   # nmcli connection show
   NAME                UUID                                  TYPE      DEVICE
   enp0s3              ********-****-****-****-************  ethernet  enp0s3
   Wired connection 1  ********-****-****-****-************  ethernet  --
   ```

* これで仮想マシンから外部への接続ができるようになる。(yumなどが使用可能になる)

## ホストオンリーアダプタでホストから接続できるようにする

* 概要
   * `nmcli` コマンドを使用してコネクションにIPアドレスを設定する。

* 設定前のデバイスの状態を確認

   ```
   # nmcli device status
   DEVICE  TYPE      STATE        CNNECTION
   enp0s3  ethernet  conncted     enp0s3
   enp0s8  ethernet  disconncted  --
   ```

* 設定前のコネクションの状態を確認

   ```
   # nmcli connection show
   NAME                UUID                                  TYPE      DEVICE
   enp0s3              ********-****-****-****-************  ethernet  enp0s3
   Wired connection 1  ********-****-****-****-************  ethernet  --
   ```

* コネクションの名前を変更する。
   * `Wired connection 1` では使いづらいので 'enp0s8' に変更する。

   ```
   nmcli connection modify 'Wired connection 1' connection.id enp0s8
   ```

* コネクションの名前が変更されたことを確認する。

   ```
   # nmcli connection show
   NAME    UUID                                  TYPE      DEVICE
   enp0s3  ********-****-****-****-************  ethernet  enp0s3
   enp0s8  ********-****-****-****-************  ethernet  enp0s8
   ```

* 設定可能なIPアドレスの確認

   * ホストでipconfigを打つ。
   * `VirtualBox Host-Only Network` のIPv4 アドレスが `192.168.56.1`、サブネットマスクが `255.255.255.0`となる。
   * 仮想マシンに設定可能なIPは `192.168.56.2`～ `192.168.56.254` 。

   ```Powershell
   ipconfig

   イーサネット アダプター VirtualBox Host-Only Network #3:

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::d42e:b04e:2015:54a0%9
   IPv4 アドレス . . . . . . . . . . . .: 192.168.56.1
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .:
   ```

* コネクションのIPアドレスを設定

   ```
   # nmcli connection modify enp0s8 ipv4.method manual ipv4.addresses 192.168.56.99/24
   ```

* デバイスを確認すると、connected になっている。

   ```
   # nmcli device status
   DEVICE  TYPE      STATE     CNNECTION
   enp0s3  ethernet  conncted  enp0s3
   enp0s8  ethernet  conncted  enp0s8
   ```

* ネットワークを再起動
   * いつも設定が即時反映されるとは限らないので、ネットワークを再起動する。

   ```
   # systemctl restart network
   ```

* IPアドレスが設定されたことを確認する。

   ```
   # ip a
   enp0s8
   inet 192.168.56.99/24
   ```

* ホストからssh接続できるようになる

   ```Posershell
   ssh root@192.168.56.99
   ```