virtualbox-6.1.26からvirtualbox-6.1.28 以降に更新すると、nfsマウントができずにタイムアウトする
現象
virtualbox-6.1.26からvirtualbox-6.1.28 以降に更新すると、nfsマウントができずにタイムアウトする
$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Checking if box 'generic/debian11' version '3.5.4' is up to date... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: bridged default: Adapter 3: hostonly ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Running 'pre-boot' VM customizations... ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key ==> default: Machine booted and ready! ==> default: setting dns configuration ==> default: Checking for guest additions in VM... ==> default: Setting hostname... ==> default: Configuring and enabling network interfaces... ==> default: Exporting NFS shared folders... ==> default: Preparing to edit /etc/exports. Administrator privileges will be required... ==> default: Mounting NFS shared folders... The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! mount -o vers=4 192.168.33.1:/home/hoge/server/xxx/data /home/xxx Stdout from the command: Stderr from the command: mount.nfs: Connection timed out
環境
- HostOS: debian11
- vagrant-2.2.14
- 以下のvirtualboxバージョンで試した
- virtualbox-6.1.28
- virtualbox-6.1.30
- virtualbox-6.1.32
原因
virtualbox-6.1.28 にてホストオンリーネットワークの範囲が制限されたため。
vagarntではnfsにホストオンリーネットワーク(private_networkにて指定したもの)を設定する。
Vagrantfileを確認すると、以下のようになっている。
config.vm.network "private_network", ip: "192.168.33.50"
今回の変更にて、ホストオンリーネットワークはデフォルトで192.168.56.0/21
の範囲に制限されている(IPv6 では、リンクローカルアドレスのみに制限)。
そのため動かない。
なお、この現象はvirtualboxのチケットにて発見した。
しかし変更点を確認すると、きちんと書いてある。。。
Network: More administrative control over host-only network ranges to prevent trouble due to misconfiguration, see user manual. Check updated documentation or your VMs may stop working!
きちんと確認しよう
対策
対策1
ホストオンリーネットワークのIPAddressを192.168.56.0/21
から選択する
私の場合は、IPAddressに特にこだわりがあるわけではないため、この対策を採用した
config.vm.network "private_network", ip: "192.168.56.50"
対策2
/etc/vbox/networks.conf
を作成し許可する範囲を記載する
以下は、10.0.0.0/8
と 192.168.0.0/16 、2001::/64 範囲を許可する例
* 10.0.0.0/8 192.168.0.0/16 * 2001::/64
2021/10/27時点では/etc/vbox/networks.conf
に空行を含むことができない点に注意する。
もう一度 Changelog-6.1 – Oracle VM VirtualBox を確認すると、
Host-only networking: Fixed crash parsing /etc/vbox/networks.conf
6.1.30では空行が含まれても大丈夫になったのかもしれない(未確認)