さんごー日記。

映画や本やゲームの感想をゆるく記録したり、プログラミングの勉強をゆるく記録するゆるい日記です。

【Laravel Homesteadのエラー解決】vagrant upで「We couldn't detect an IP address that was routable to this machine from the guest machine!」が出た時の対処

f:id:thirtyfive:20180908134538p:plain

こんにちは。さんごーです。
Windows10でLaravel Homesteadをセットアップした時に、共有フォルダの設定でエラーになってしまった時の解決方法を書きます。

vagrant upすると下記エラーが出ました。

==> homestead-7: Mounting SMB shared folders...
We couldn't detect an IP address that was routable to this
machine from the guest machine! Please verify networking is properly
setup in the guest machine and that it is able to access this
host.

As another option, you can manually specify an IP for the machine
to mount from using the `smb_host` option to the synced folder.

↓翻訳

ゲストマシンからこのマシンにルーティング可能なIPアドレスを検出できませんでした。
ネットワークがゲストマシンで適切に設定されており、このホストにアクセスできることを確認してください。

別のオプションとして、マシンのIPを手動で指定することもできます
`smb_host`オプションを使って同期フォルダにマウントします。

共有フォルダがうまくいってない。

では解決方法です。

動作環境

動作環境は以下です。

  • ホストOS:Windows10 Pro
  • 仮想化システム:Hyper-V

vagrant destroy

いったん環境を作り直すので、vagrant destroyで仮想環境を削除しておきます。

> vagrant destroy

仮想スイッチのIPアドレスを確認する

ipconfigで「vEthernet (既定のスイッチ)」のIPアドレスを確認しておきます。

コマンドプロンプトでipconfigを実行。

> ipconfig
(略)
イーサネット アダプター vEthernet (既定のスイッチ):
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: fe80::3121:9f04:1be2:420c%8
IPv4 アドレス . . . . . . . . . . . .: 172.19.34.1
サブネット マスク . . . . . . . . . .: 255.255.255.240
デフォルト ゲートウェイ . . . . . . .:

ここで確認したIPv4アドレス「172.19.34.1」の部分をHomestead.yamlで設定します。
IPアドレスの値は環境によって違います。

Homestead.yamlの設定

Homestead.yamlは以下のように設定しています。

  • providerを「hyperv」に変更。
  • foldersに「smb_host: "172.19.34.1"」を追加。(IPアドレスはipconfigで確認したものを指定)
  • foldersのmapとto、sitesの内容はお好みで。
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: hyperv

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: "C:/hoge/fuga"
      to: /home/vagrant/code
      smb_host: "172.19.34.1"

sites:
    - map: homestead.test
      to: /home/vagrant/code/public
(以下略)

vagrant up時の指定

vagrant upした時に、上で設定したIPアドレスに対応する「既定のスイッチ」を選びます。

homestead-7: Please choose a switch to attach to your Hyper-V instance.
homestead-7: If none of these are appropriate, please open the Hyper-V manager
homestead-7: to create a new virtual switch.
homestead-7:
homestead-7: 1) 新しい仮想スイッチ
homestead-7: 2) DockerNAT
homestead-7: 3) 既定のスイッチ
homestead-7:
homestead-7: What switch would you like to use? 3

ここでは「3」を入力します。

これで「We couldn't detect an IP address…」のエラーが出なければ成功です。

うまくいかない時

以下を試すと解決する場合があります。(理屈はよく分かりません…)

  1. 「vagrant destroy」で仮想マシンを削除する
  2. PCを再起動する
  3. 再度「vagrant up」する

書籍紹介

Vagrantを使うなら、基本的な機能は知っておくと幸せになれます。

実践 Vagrant

実践 Vagrant


Laravelを学ぶときはサンプルコードを読むのが効率的。本だと説明が多いのでオススメです。

Laravel 5.5 サンプルプログラム

Laravel 5.5 サンプルプログラム