MacのVirtualBoxに作ったゲストOSにホストオンリーアダプターを設定する
MacのVirtualBoxに仮想マシンを作ってインターネットに接続できることを確認できたのでホストOSからアクセスできるようにします。
ponsuke-tarou.hatenablog.com
ホストOSからゲストOSへアクセスできるようにホストオンリーアダプタを設定します。
VirtualBoxの仮想マシンではデフォルトでNAT*1に設定されており、DHCPでIPアドレスなども自動的に割り当てられるため何もしないでもインターネットに接続できました。
しかし、この状態ではホストOSからはアクセスできないので、さまざまな検証を行うための環境としては不十分です。
gihyo.jp
■ホストオンリーアダプター
・ゲストOSとホストOS間のみ通信ができるネットワーク
・外部との通信はできない
Virtual Boxのネットワーク設定 - ぐ~だらびより。
VirtualBoxにホストオンリーネットワークを作ります。
- Oracle VM VirtualBox Managerのメニューにある[VirtualBox] > [Preference...]を選択します。
- [Network] > [Host-only Network] > [+]アイコンを選択すると「vboxnet0」が追加されます。
- ドライバアイコンを選択してダイアログを開きます。
- [DHCP Server] > [Enable Server]チェックボックにチェックを入れます。
- 各パラメータに値を設定し、[OK]ボタンを押下して設定を完了します。
サーバーアドレス:VirtualBoxに作成されるDHCPサーバーのIPアドレスを指定
サーバーマスク:ゲストOSにDHCPで割り当てるIPアドレスのネットマスクを指定
アドレス下限:ゲストOSにDHCPで割り当てるIPアドレスの範囲の最小値を指定
アドレス上限:ゲストOSにDHCPで割り当てるIPアドレスの範囲の最大値を指定
VirtualBox CentOS6.7 64bitでNAT、ホストオンリーアダプターを使用 | kakiro-web カキローウェブ
Oracle VM VirtualBox Managerで設定します。
この時点で仮想マシンが起動している場合は停止してから追加します。
$ shutdown -h now
- Oracle VM VirtualBox Managerから仮想マシンを選択して右側のウィンドウから[Network]リンクを押下してダイアログを開きます。
- [Adapter 2] > [Enable Network Adapter]チェックボックにチェックを入れます。
- [Attached to]で「Host-only Adapter」を選択します。(Host-only Adapterが複数無ければ[Name]に先程作成した「vboxnet0」が表示されるはず)。
- [OK]ボタンを押下してダイアログを閉じます。
- ホストオンリーアダプタが追加されました。
ゲストOSの状態を確認します。
- ゲストOSを起動してログインします。
- 「ip addr show」「nmcli c(connection)」「nmcli d(device)」で現状を確認します。
- enp0s8がホストオンリーアダプターです。
- ホストOSから接続できることを確認します。
- ホストオンリーアダプターのIPアドレスはまだ固定されていないので変わることがあります。
ホストOSからゲストOSへ接続してみます。
$ ping 192.168.56.201 PING 192.168.56.201 (192.168.56.201): 56 data bytes 64 bytes from 192.168.56.201: icmp_seq=0 ttl=64 time=0.541 ms 64 bytes from 192.168.56.201: icmp_seq=1 ttl=64 time=0.494 ms 64 bytes from 192.168.56.201: icmp_seq=2 ttl=64 time=0.337 ms <省略> $ ssh mana@192.168.56.201 mana@192.168.56.201s password: Last login: Mon Oct 23 21:39:48 2017 $ nmcli c 名前 UUID タイプ デバイス enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 有線接続 1 320cd23e-b9a4-324d-b0ff-3dd16b0544db 802-3-ethernet enp0s8
NetworkManagerを使って新しいConnectionを作成します。
前回は、「nmtuiコマンドを使ってGUIで設定」をやったので
今回は、「nmcliコマンドを使って設定」する方法にします。
# 「enp0s8」Connectionを追加します。 $ sudo nmcli c add type ethernet con-name enp0s8 ifname enp0s8 接続 'enp0s8' (0cf4cb12-cd52-463e-91eb-5990197860b6) が正常に追加されました。 # Connectionが作成されたことを確認します。 $ sudo ls -la /etc/sysconfig/network-scripts/ifcfg-enp0s* -rw-r--r--. 1 root root 226 10月 23 21:20 /etc/sysconfig/network-scripts/ifcfg-enp0s3 -rw-r--r--. 1 root root 282 10月 23 22:36 /etc/sysconfig/network-scripts/ifcfg-enp0s8 $ nmcli c 名前 UUID タイプ デバイス enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 有線接続 1 320cd23e-b9a4-324d-b0ff-3dd16b0544db 802-3-ethernet enp0s8 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet -- $ nmcli d デバイス タイプ 状態 接続 enp0s3 ethernet 接続済み enp0s3 enp0s8 ethernet 接続済み 有線接続 1 lo loopback 管理無し -- # IPv4を手動に設定します。 $ sudo nmcli c modify enp0s8 ipv4.method manual # IPアドレスを固定します。 $ sudo nmcli c modify enp0s8 ipv4.addresses '192.168.56.202/24' ipv4.dns '8.8.8.8' # IPv6は使わない設定をします。 $ sudo nmcli c modify enp0s8 ipv6.method ignore # NetworkManagerを再起動します。 $ sudo systemctl restart NetworkManager # なぜか既存の「有線接続 1 」のNIC名が「enp0s8」になりました・・・。 $ nmcli c 名前 UUID タイプ デバイス enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 enp0s8 cb2d1cde-9064-4dfb-89c2-3a6246ce916e 802-3-ethernet enp0s8 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet -- $ nmcli d デバイス タイプ 状態 接続 enp0s3 ethernet 接続済み enp0s3 enp0s8 ethernet 接続済み enp0s8 lo loopback 管理無し -- # 既存の「enp0s8(有線接続 1 )」をNIC名では区別がつかないのでUUIDで削除します。 $ sudo nmcli c del cb2d1cde-9064-4dfb-89c2-3a6246ce916e 接続 'enp0s8' (cb2d1cde-9064-4dfb-89c2-3a6246ce916e) が正常に削除されました。 # 当然ですが、IPアドレスが変わったのでここでホストOSとの接続が一旦切れます。 # 再び新しく設定したIPアドレスで接続します。 $ ssh mana@192.168.56.202 The authenticity of host '192.168.56.202 (192.168.56.202)' can't be established.<------------- ☆' ECDSA key fingerprint is SHA256:j+mhEbwrkV5GaVU8gat34VZs2A4+q4q8HaKjOg9m33I. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.202' (ECDSA) to the list of known hosts. mana@192.168.56.201s password: Last login: Mon Oct 23 23:29:33 2017 # NetworkManagerを再起動します。 $ sudo systemctl restart NetworkManager
☆で表示されたメッセージは初回接続(今回はIPアドレスが変わって初回)でしか出ません。
SSHで接続するとホストOS側の公開鍵の有無を確認し、公開鍵がないことからホストOSの~/.ssh/known_hostsファイルに設定するかを尋ねられています。
ここで「yes」を入力することでknown_hostsに公開鍵を保存し、次回接続からはメッセージは表示されなくなるのです。
http://www.turbolinux.co.jp/products/server/11s/user_guide/sshconnect.html
今回使われたのはECDSA*2というデジタル署名です。
やり方はこちらを参考にさせて頂きました。
ゲストOSの状態を確認します。
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:67:e7:fc brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3 valid_lft 86387sec preferred_lft 86387sec inet6 fe80::a00:27ff:fe67:e7fc/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ce:e2:cd brd ff:ff:ff:ff:ff:ff inet 192.168.56.202/24 brd 192.168.56.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fece:e2cd/64 scope link valid_lft forever preferred_lft forever $ nmcli c 名前 UUID タイプ デバイス enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet enp0s8 $ nmcli d デバイス タイプ 状態 接続 enp0s3 ethernet 接続済み enp0s3 enp0s8 ethernet 接続済み enp0s8 lo loopback 管理無し --
設定できました。