ホストオンリーアダプター設定がうまくいかず、ssh で仮想マシンへつながらない><
[virtualbox centos7 ssh] などで検索し、CentOS7 の仮想マシンへ ssh 接続する方法を調べておりました。
ところが、どうしてもつながりません><。ping
を打ってみても、[要求がタイムアウトしました。] と言われるばかりですの。。。
試しにと CentOS6 で ssh 接続できるようセットアップしてみますと、うまく接続できました。ですのでホストオンリーアダプターに異常がある、ということではないようです。
一時期は、CentOS7 に特有なバグかしら?とさえ考え始めておりました。もちろんそんなことはなく、解決してしまえばわたくしたちの勉強不足が原因でしたの。今回は、解決するまでの内容をノートいたします。
環境
- ホスト: Windows7 Professional 32bit
- VirtualBox 5.0.14 r105127
- 仮想マシン: CentOS7.2.1511
原因
- サブネットマスク設定に異常があった。
具体的には、次の箇所でした。
- VirtualBox > 環境設定のホストオンリーネットワークの詳細の次の値がおかしかった。Windows のシャットダウン、起動すると勝手に値が書き換わっていることがある。
- アダプターの、IPv4 アドレス
- アダプターの、IPv4 ネットマスク
- 仮想マシンのホストオンリーアダプターと紐づく enp0s8 のプレフィックス (サブネットマスク) の値設定がおかしかった。
enp0s8 のプレフィックス値を変えてみたら解決してようやく解決できたのでした。
以下、はじめから丁寧に設定していく手順を記します。
手順 1. 丁寧にサブネットマスクを確認
仮想マシンに使用できる IP アドレスを VirtualBox の設定から確認しますけれども、そのとき、サブネットマスク情報も確認いたします。
- VirtualBox > 環境設定… > ネットワーク > ホストオンリーネットワーク
- 一覧から [vboxnet0] などを選択、右のドライバーアイコンの [編集]
- [DHCP サーバー] タブ > [サーバー マスク] の値を見る。
255.255.255.0 でしたの。このサブネットマスク値に対応するプレフィックスは、/24 ですから、仮想マシンのネットワーク設定はこれを前提とした値を入れることになりますの。
手順 2. 仮想マシンのネットワーク設定
nmtui
で NetworkManager Text User Interface を起動。- [Edit a connection]
- enp0s8 (ホストオンリーアダプターと紐づくものを選択)
- [IPv4 CONFIGURATION]
- [Addresses] 192.168.56.111/24 ← 32 などとなっていたら、/24 へ修正
- [IPv4 CONFIGURATION]
systemctl restart NetworkManager
- 仮想マシン CentOS7
reboot
なおこの操作により、/etc/sysconfig/network-scripts/ifcfg-enp0s8 が次のように変わりまた。
PREFIX=32
↓
PREFIX=24
サブネットマスクとは何か?
- IP アドレス = ネットワーク部 + ホスト部
- ネットワーク部: どのネットワークに属しているかを表す。
- ホスト部: どのコンピューターであるかを表す。
- IP アドレスのどの部分がネットワーク部でどの部分がホスト部かは、IP アドレスだけでは判別不可能。
ネットワーク部とホスト部を判別するのに必要なのが、サブネットマスクです。
- サブネットマスク: IP アドレスの左からどこまでがネットワーク部なのか、そしてホスト部 (残りの部分) となるのかを表す。
- サブネットマスクは、255.255.255.0 といった 10 進数表記で表す。他に、/24 といったプレフィックス表記でも表す。
以上のことから、
- IP アドレスとともに、サブネットマスク (もしくはプレフィックス) がネットワーク設定時には必要
と言えます。今回のトラブルはまさに、プレフィックスを無視したが故に発生いたしました。
今回のトラブルの振り返り
VirtualBox 側の設定が、サブネットマスク値: 255.255.255.0 (=プレフィックス: /24) であるのに対して、仮想マシン側の設定は、サブネットマスク値: 255.255.255.255 (=プレフィックス: /32) であったため、今回の問題が起きた。
- ホスト (VirtualBox 本体) 設定
- 192.168.56.1/24
- ホストアドレス (使用可能 IP): 192.168.56.1 〜 192.168.56.254
- 仮想マシン (CentOS7) 設定
- 192.168.56.112/32
- ホストアドレス (使用可能 IP): サブネットマスク「/32」はネットワークとなりません
仮想マシンからホストへは通信できるものの、ホストから仮想マシンは別のネットワークとして認識される、、、というよりもネットワークに属していないとみなされているのだと思いましたけれども、そのような状態だったため ssh 接続ができませんでした。。。
次のように修正しますと、
- 仮想マシン (CentOS7) 設定
- 192.168.56.112/24
- ホストアドレス (使用可能 IP): 192.168.56.1 〜 192.168.56.254
となって、ホストと仮想マシンが属するネットワークがぴったり一致して、仮想マシンからホストへも通信が可能になりました。
ちなみに、上記を確かめるのに次のツールが大変便利でした♪
おわりに
- プレフィックス表記とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
[PREFIX=24] で検索。このページがきっかけで、サブネットマスクを見直す視点が得られました! - IPアドレスの基礎知識 – Qiita
特に理解が進んだのが、4-5. サブネットマスクの効果を体感する、でした。
以上です。