VirtualBox上で稼働するUbuntu 20.04LTS(Desktop) でSamba環境を構築する方法
VirtualBox上で稼働するUbuntu 20.04 LTS (Desktop)でSamba環境を構築する際の手順をまとめました。
ネットワーク設定
ホストPCから仮想PCにアクセスするには、ポートフォワーディングを設定する方法もありますが、ホストオンリーアダプターを設定する方法のほうが便利です。(便利だと知りました。)
自分はこの設定について、時間がかかってしまったので参考にしたサイトを紹介しつつ、備忘録として残しておきます。
まず参考になったのは以下の記事です。
この記事の場合、ホスト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を起動し、ツールの横にある横線3つのボタンをクリックし、メニューが表示されるので「ネットワーク」を選択します。
ネットワークを選択すると、VirtualBox Host-Only Ethernet Adapterという仮想ネットワークアダプターがすでにあるはずです。
この仮想ネットワークアダプターのプロパティに表示されているIPv4アドレスの内容をメモします。
この設定されているIPv4アドレスは、後でUbuntuの設定で使用します。
※アドレスはそれぞれの環境で異なります。
仮想マシンの設定
まず、設定対象となる仮想マシン(今回の場合、Ubuntu 20.04 LTS(Desktop))を選択し「設定」ボタンをクリックします。
NATの設定
まず、設定対象となる仮想マシン(ここでは、Ubuntu 20.04 LTS(Desktop版))を選択し、「設定」ボタンをkリックします。
設定ウィンドウが開かれるので、左ペインから「ネットワーク」を選択します。
以下のように「アダプター1」のデフォルトの割り当てが「NAT」になっていることを確認します。
「NAT」になっていなかったら、プルダウンリストから選択して変更してください。
ホストオンリーアダプターの設定
次にホストオンリーアダプターの設定を行います。
「アダプター2」を選択し、「ネットワークアダプターを有効化」というチェックボックスにチェックを入れます。
※アダプター2が非活性で選択できない場合には、起動している仮想マシンを一旦停止してください。仮想マシンのウィンドウのxボタンを押して、「Power off the machine」を選択後、「OK」ボタンを押すことで停止できます。
「ネットワークアダプターを有効化」にチェックを入れた後、設定が変更できるようになるので、割り当てのプルダウンリストから、「ホストオンリーアダプター」を選択します。
名前には、「VirtualBox Host-Only Ethernet Adapter」を選択します。
設定ができたら、「OK」ボタンをクリックして、ホストオンリーアダプターの設定は完了です。
Ubuntu 20.04 LTS(Desktop)の設定(その1)
まずは、設定したい仮想マシンを選択して起動してください。
インストール直後のUbuntu 20.04 LTS(Desktop)は、OpenSSHサーバーがインストールされていない状態です。
デスクトップ環境(クライアント)なので要らないという判断だからだと思います。
今回、デスクトップ版をインストールしましたが、Linuxはサーバーとして動作させるのが一般的です。
以下のコマンドを投入して、OpenSSHサーバーをインストールします。
$ sudo apt install -y openssh-server
デスクトップにカーソルを置いた状態で、右クリックし、端末で開くを選択し、端末(コンソール、Console)を開きます。
端末が開かれたら、上記のコマンドを入力し、OpenSSHサーバーをインストールします
NATの設定(その2)
OpenSSHサーバーに接続するには、ポートフォワーディング(ポート転送)の設定をしないと、ホストPCから仮想マシンで稼働しているSSHサーバーにアクセスすることができません。
設定したい仮想マシンのNATネットワークアダプターの高度な設定に、ポートフォワーディングの設定があります。
ポートフォワーディングのルールを以下のように設定してください。22というポートは、SSHで使用するポート番号です。この設定の意味は、ホストポート 22番のパケットを、ゲストポートの22番に割り当てるという意味です。その逆もしかりです。
この設定により、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)の設定(その2)
ネットワークマネージャを開くために、以下のコマンドを入力します。
$ sudo apt install -y network-manager
$ sudo nmtui
入力すると、このような画面が表示されます。
NetworkManager TUIというタイトルのウィンドウが開かれるので、
「接続の編集」を選択の上、リターンキーを押します。
有線接続 1の設定
まずは、有線接続 1の設定を行います。
次のような画面が表示されるので、有線接続1 を選択し、編集... を選択の上、リターンキーを押します。
タブキーでフォーカスを移動することができます。
デバイスに、enp0s3 となっているはずです。この仮想ネットワークデバイスは、NATに割り当てられています。
IPv6の<自動>を選択し、プルダウンリストから無視すると選択します。
自動的に接続するにチェックを入れて、OKで確定します。
※チェックは、スペースで入れることができます。
有線接続 2の設定
続いて有線接続 2の設定を行います。
次のような画面が表示されるので、有線接続 2 を選択し、編集... を選択の上、リターンキーを押します。
タブキーでフォーカスを移動することができます。
IPv4の設定を、自動から 192.168.56.2 に設定変更します。これは、上のほうで確認したVirtualBox Host-Only Ethernet Adapterという仮想ネットワークアダプターのIPv4アドレスの1つ増やした値となっています。
ゲートウェイは、仮想ネットワークアダプターのIPv4アドレスを設定します。
デバイスが、enp0s8 となっていること着目してください。これは VirtualBox Host-Only Adapterの仮想ネットワークアダプターに割り当てられた名前です。
IPv6の設定を、自動から無視するに変更してください。
自動的に接続するにチェックが入っていることを確認の上、OKを選択し、リターンキーを押して戻ります。
2種類のネットワークアダプターの設定が終わったので、戻るを選択の上、リターンキーを押して戻ります。
続いて接続をアクティベイトします。
有線接続2を選択し、タブキーで移動し、アクティベートを選択の上、リターンキーを押して確定します。
動作確認
ネットワークの設定がうまくいっているかどうか確認します。
仮想PCからpingコマンドを使ってGoogleに接続できるかどうか確認します。
$ ping google.com
ホストOSからssh接続で確認します。
コマンドプロンプトから、以下のコマンドを入力し、ホストOSから仮想PCに接続します。
※root(ユーザーID)、192.168.56.2(IPアドレス)は、個人の環境に合わせて変更してください。
ssh root@192.168.56.2
もしくは、TeraTermなどのSSHクライアントからIPアドレスを指定して接続します。
ポートフォワーディングの解除
動作確認で確認したとおり、ホストオンリーアダプター経由で、仮想PCに接続することができたので、ポートフォワーディングの設定は解除しても問題ありません。
ファイルサーバー(Samba)
開発サーバーの役割として定番なファイル共有サーバーを構築します。
ファイル共有サーバーとして定番なのは、Sambaサーバーです。
以下の記事を参考に構築します。
$ 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というリソースが見えることを確認できた。
VirtualBoxのネットワークについて
調べている途中で見つけたVirtualBoxのネットワーク設定についての解説記事があったので、
忘れないようにメモしておく。