VirtualBoxで稼働するUbuntu 20.04LTS(Desktop) でSamba環境を構築する方法

# VirtualBox上で稼働するUbuntu 20.04LTS(Desktop) でSamba環境を構築する方法

VirtualBox上で稼働するUbuntu 20.04 LTS (Desktop)でSamba環境を構築する際の手順をまとめました。

## ネットワーク設定
ホストPCから仮想PCにアクセスするには、ポートフォワーディングを設定する方法もありますが、ホストオンリーアダプターを設定する方法のほうが便利です。（便利だと知りました。）

自分はこの設定について、時間がかかってしまったので参考にしたサイトを紹介しつつ、備忘録として残しておきます。

まず参考になったのは以下の記事です。

https://blog.proglus.jp/3315/

この記事の場合、ホストOSがMacOSXで、仮想OSがCentOS 7.8 を使った方法なのでそのものずばりという訳ではないのですが、参考になりました。

自分の環境は、ホストOSはWindows10で、仮想OSがUbuntu 20.04 LTS(Desktop)です。

わざわざ、(Desktop) と注記したのは、UbuntuのDesktop版とUbuntuのサーバー版でネットワークを設定するデフォルトのツールが異なります。Desktop版の場合、GUIで操作する関係上、デフォルトの設定ツールは、従来のNetworkManagerというツールとなっています。サーバー版ではネットワークの設定は、systemd-networkdとnetplanが使われるようになったようです。

インターネットで斜め読みで調べていると、そういった重要な情報を読み飛ばしてしまい、Server版における設定記事をDesktop版でやろうとして、うまくいかずにはまりました。

## VirtualBoxの設定（確認）
はじめにVirtualBoxの設定（確認）を行います。参考にした記事ではホストオンリーアダプターを作成するとありましたが、WindowsのVirtualBoxの場合、通常のインストールを行なうと自動で設定されるようです。

VirtualBoxを起動し、ツールの横にある横線３つのボタンをクリックし、メニューが表示されるので「ネットワーク」を選択します。

![pic071.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/d29b0d8a-8bfb-e8af-bf3d-7c0d52112756.png)

ネットワークを選択すると、VirtualBox Host-Only Ethernet Adapterという仮想ネットワークアダプターがすでにあるはずです。
この仮想ネットワークアダプターのプロパティに表示されているIPv4アドレスの内容をメモします。
この設定されているIPv4アドレスは、後でUbuntuの設定で使用します。

※アドレスはそれぞれの環境で異なります。

![2021-06-06 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/1ad975d2-f697-f2cc-9115-0170e7c1708b.png)

## 仮想マシンの設定
まず、設定対象となる仮想マシン（今回の場合、Ubuntu 20.04 LTS(Desktop)）を選択し「設定」ボタンをクリックします。

## NATの設定
まず、設定対象となる仮想マシン(ここでは、Ubuntu 20.04 LTS(Desktop版))を選択し、「設定」ボタンをkリックします。
![2021-06-06 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/6ad9f794-7fa3-1e60-6d29-59170d44551b.png)

設定ウィンドウが開かれるので、左ペインから「ネットワーク」を選択します。
以下のように「アダプター１」のデフォルトの割り当てが「NAT」になっていることを確認します。
「NAT」になっていなかったら、プルダウンリストから選択して変更してください。

![2021-06-06 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/e329b32e-f65c-8229-2a91-2364c35190b5.png)

## ホストオンリーアダプターの設定
次にホストオンリーアダプターの設定を行います。

「アダプター２」を選択し、「ネットワークアダプターを有効化」というチェックボックスにチェックを入れます。
![2021-06-06 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/ceeb625e-7232-9ae4-7db4-499113ed1f59.png)

※アダプター２が非活性で選択できない場合には、起動している仮想マシンを一旦停止してください。仮想マシンのウィンドウのｘボタンを押して、「Power off the machine」を選択後、「OK」ボタンを押すことで停止できます。

「ネットワークアダプターを有効化」にチェックを入れた後、設定が変更できるようになるので、割り当てのプルダウンリストから、「ホストオンリーアダプター」を選択します。
名前には、「VirtualBox Host-Only Ethernet Adapter」を選択します。

設定ができたら、「OK」ボタンをクリックして、ホストオンリーアダプターの設定は完了です。

設定後は、次のようになっているはずです。
![2021-06-06 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/2b1799e2-e221-3bd0-d2f9-428ade19406b.png)

![2021-06-06 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/0f831fa9-a73e-bb11-9f45-00908fe416e9.png)

## Ubuntu 20.04 LTS(Desktop)の設定（その１） 
まずは、設定したい仮想マシンを選択して起動してください。

インストール直後のUbuntu 20.04 LTS(Desktop)は、OpenSSHサーバーがインストールされていない状態です。
デスクトップ環境（クライアント）なので要らないという判断だからだと思います。
今回、デスクトップ版をインストールしましたが、Linuxはサーバーとして動作させるのが一般的です。
以下のコマンドを投入して、OpenSSHサーバーをインストールします。

```shell
$ sudo apt install -y openssh-server
```

デスクトップにカーソルを置いた状態で、右クリックし、端末で開くを選択し、端末（コンソール、Console）を開きます。

![pic072.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/90abe408-b6c1-ac37-a67e-0dc436088453.png)

端末が開かれたら、上記のコマンドを入力し、OpenSSHサーバーをインストールします

## NATの設定（その２）
OpenSSHサーバーに接続するには、ポートフォワーディング（ポート転送）の設定をしないと、ホストPCから仮想マシンで稼働しているSSHサーバーにアクセスすることができません。

設定したい仮想マシンのNATネットワークアダプターの高度な設定に、ポートフォワーディングの設定があります。
![2021-06-06 (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/c6f7a0f0-3be8-fab1-21fb-3f59840eb6c2.png)

ポートフォワーディングのルールを以下のように設定してください。22というポートは、SSHで使用するポート番号です。この設定の意味は、ホストポート 22番のパケットを、ゲストポートの22番に割り当てるという意味です。その逆もしかりです。
![2021-06-06 (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/80397a94-35cf-ee87-77f7-678487537cb5.png)

この設定により、localhost:22 に接続すると、仮想PCの22に接続することになり、仮想PCで稼働しているSSHサーバーに接続することになります。

TeraTermのインストール方法については解説は省きますが、WindwosからLinuxサーバーを制御するには、TeraTermやPuttyなどのSSHクライアントソフトで制御するのは定番です。

この節で説明したポートフォワーディングの設定は、これから設定する VirtualBox Host-Only Ethernet Adapter を介した接続で不要となるので、面倒な場合には、スキップしてもらっても問題ありません。

なぜこんな面倒なことをやっているかいうと、ここまでの設定では　VirtualBoxとWindows間でのコピペができない状態なので面倒だからです。設定次第では可能ですが、TeraTermなどのSSHクライアントを使ったやり方のほうが楽だからです。

## Ubuntu 20.04 LTS(Desktop)の設定（その２）

ネットワークマネージャを開くために、以下のコマンドを入力します。


```shell
$ sudo apt install -y network-manager
$ sudo nmtui
```

入力すると、このような画面が表示されます。

![2021-06-06 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/d8b8694d-aecf-2abb-56e9-c31be94228c1.png)

NetworkManager TUIというタイトルのウィンドウが開かれるので、
「接続の編集」を選択の上、リターンキーを押します。

## 有線接続 1の設定
まずは、有線接続 1の設定を行います。
次のような画面が表示されるので、有線接続1 を選択し、編集... を選択の上、リターンキーを押します。
タブキーでフォーカスを移動することができます。

![2021-06-06 (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/213f022e-e502-5e41-cc8a-4900dfd7f6d7.png)

デバイスに、enp0s3 となっているはずです。この仮想ネットワークデバイスは、NATに割り当てられています。
![2021-06-06 (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/38188f36-fd98-1532-5448-060001a1cf4a.png)

IPv6の<自動>を選択し、プルダウンリストから無視すると選択します。
![2021-06-06 (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/2314f230-411c-03c7-bc86-60e60223f12b.png)

自動的に接続するにチェックを入れて、OKで確定します。
※チェックは、スペースで入れることができます。

![2021-06-06 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/69d092e7-6fac-bf74-445e-a06804741bdd.png)

## 有線接続 2の設定
続いて有線接続 2の設定を行います。
次のような画面が表示されるので、有線接続 2 を選択し、編集... を選択の上、リターンキーを押します。
タブキーでフォーカスを移動することができます。

![2021-06-06 (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/332f8d17-1e15-36aa-f45e-5f64414f1d7b.png)

IPv4の設定を、自動から 192.168.56.2 に設定変更します。これは、上のほうで確認したVirtualBox Host-Only Ethernet Adapterという仮想ネットワークアダプターのIPv4アドレスの1つ増やした値となっています。
ゲートウェイは、仮想ネットワークアダプターのIPv4アドレスを設定します。
デバイスが、enp0s8 となっていること着目してください。これは VirtualBox Host-Only Adapterの仮想ネットワークアダプターに割り当てられた名前です。

![2021-06-06 (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/34cc1690-b2f2-7f6b-5e3f-890770edc95d.png)


IPv6の設定を、自動から無視するに変更してください。

![2021-06-06 (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/36b14984-46f4-4cf0-f038-e2ee6c4f73a8.png)

自動的に接続するにチェックが入っていることを確認の上、OKを選択し、リターンキーを押して戻ります。

2種類のネットワークアダプターの設定が終わったので、戻るを選択の上、リターンキーを押して戻ります。

![2021-06-06 (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/45b06ebb-de7e-1fe2-c7ef-64a608795106.png)

続いて接続をアクティベイトします。
有線接続2を選択し、タブキーで移動し、アクティベートを選択の上、リターンキーを押して確定します。
![2021-06-06 (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/575832e5-310c-f500-f324-ac428831e6c0.png)


戻って終了します。
![2021-06-06 (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/baf12cbd-c3e6-1804-b250-4aebfc665a30.png)

## 動作確認
ネットワークの設定がうまくいっているかどうか確認します。

仮想PCからpingコマンドを使ってGoogleに接続できるかどうか確認します。

```shell
$ ping google.com
```

ホストOSからssh接続で確認します。
コマンドプロンプトから、以下のコマンドを入力し、ホストOSから仮想PCに接続します。
※root（ユーザーID)、192.168.56.2（IPアドレス）は、個人の環境に合わせて変更してください。

```dosbatch
ssh root@192.168.56.2
```

もしくは、TeraTermなどのSSHクライアントからIPアドレスを指定して接続します。

## ポートフォワーディングの解除
動作確認で確認したとおり、ホストオンリーアダプター経由で、仮想PCに接続することができたので、ポートフォワーディングの設定は解除しても問題ありません。

##ファイルサーバー(Samba)
開発サーバーの役割として定番なファイル共有サーバーを構築します。
ファイル共有サーバーとして定番なのは、Sambaサーバーです。

以下の記事を参考に構築します。

https://www.server-world.info/query?os=Ubuntu_20.04&p=samba&f=1

```shell
$ sudo apt-get install -y samba
$ sudo mkdir -p /home/share
$ sudo chown nobody:nogroup /home/share/
$ sudo chmod 777 /home/share/
$ sudo vi /etc/samba/smb.conf

[global]
# 25行目：追記 (文字コードを設定)
unix charset = UTF-8
dos charset = CP932

# 30行目：確認 (Windows に合わせる)
   workgroup = WORKGROUP

# 40行目：コメント解除してアクセス許可するネットワークを追記
   interfaces = 127.0.0.0/8 192.168.56.0/8 enp0s8

# 101行目：確認 (認証不要とする)
   map to guest = bad user

# 最終行に追記
# 任意の共有名を設定
[Share]
# 共有フォルダーを指定
path = /home/share
# 書き込みを許可する
writable = yes
# ゲストユーザー (nobody) を許可する
guest ok = yes
# 全てゲストユーザーとして扱う
guest only = yes
# ファイル作成時のパーミッションを [777] とする
force create mode = 777
# フォルダー作成時のパーミッションを [777] とする
force directory mode = 777

$ sudo systemctl restart smbd
```

## 動作確認
Windowsのエクスプローラーのメニューに、\\192.168.56.2 としたとき、
Shareというリソースが見えることを確認できた。

![2021-06-06 (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292074/b80b6963-b884-1893-dc5f-80d49c39bef4.png)

## VirtualBoxのネットワークについて
調べている途中で見つけたVirtualBoxのネットワーク設定についての解説記事があったので、
忘れないようにメモしておく。

https://qiita.com/feifo/items/0fde474005589afcff68