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

環境

原因

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のチケットにて発見した。

forums.virtualbox.org

しかし変更点を確認すると、きちんと書いてある。。。

www.virtualbox.org

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では空行が含まれても大丈夫になったのかもしれない(未確認)