1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vagrantの「synced_folder」でマウントしようと思ったらノートン360に邪魔されてた話

Last updated at Posted at 2021-06-09

Docker全盛だけど、未だにVagrant(VirtualBox)を使う機会があってですね。
Vagrantの起動のタイミングでローカルの指定ディレクトリをマウントする機能(synced_folder)をVagrantfileに記述したら、エラーが表示されたのでその現象を解決した話です。

今回の実行環境

  • macOS Catalina 10.15.7
  • Vagrant 2.2.14
  • VirtualBox 6.1.18
  • ノートン360 8.6.4

config.vm.synced_folder の使い方

VagrantのドキュメントにSynced FoldersのBasic Usageのページがあるので、このページを参考に今回は以下のように設定してみました。
Vagranfileを置いているカレントディレクトリをVagarantのBox内の「/vagrant」に割り当てるという設定にしています。

Vagrantfile
config.vm.synced_folder ".", "/vagrant", :nfs => true

発生したエラーの内容

上記の設定を行ってVagrantを起動すると以下のエラーが発生しました。

% vagrant up
Bringing machine 'default' up with 'virtualbox' provider..
・
・
・
==> 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=3,udp 192.168.33.1:/System/Volumes/Data/Users/akase244/synced_test/vagrant

Stdout from the command:



Stderr from the command:

mount.nfs: Connection timed out

エラー内容の最後の1行に「mount.nfs: Connection timed out」という記載があり、この情報を頼りにググってみると同じエラーが発生したという記事がいくつか見つかりましたが、解決までには至りませんでした。

ノートン360の存在を思い出す

色々と試行錯誤したあとに、このMacは業務用PCなので「ノートン360」をインストールしていることを思い出しました。
ノートン360のファイアウォールが原因かも。ということを閃いたので、以下の手順を試しました。

  1. Macのネットワーク設定から有線LANとWiFiをオフに。(業務用PCを危険に晒すわけにはいかないので)
  2. ノートン360のファイアウォールをオフに。
  3. Vagrantを起動。
  4. 以下のように仮想環境にログインして、「/vagrant」配下にマウントされていることが確認できました。
% vagrant ssh
$ ls -l /vagrant
合計 16
-rw-r--r-- 1 501 games 551  6月  9 14:46 Vagrantfile
-rw-r--r-- 1 501 games  38  6月  6 10:06 ansible.cfg
-rw-r--r-- 1 501 games  33  6月  6 09:39 hosts
-rwxr-xr-x 1 501 games 134  6月  6 09:11 playbook.yml
drwxr-xr-x 6 501 games 192  6月  5 15:26 roles

はい、見事に当たりです。ということで、ノートン360の設定状況を確認して解決していきます。

ノートン360のログを確認

ノートン360の設定画面を開き、「アクティビティ」から「セキュリティ履歴」をクリックします。
スクリーンショット_2021-06-09_15_31_07.png

セキュリティ履歴画面のファイアウォールの「接続の遮断」という項目に、Vagrantfileの「config.vm.network "private_network"」で指定したIP(192.168.33.10)とlocalhost(127.0.0.1)が遮断されている記録がありました。
Vagrantfileの「config.vm.synced_folder」では「:nfs => true」のようにNFSを指定していました。
rpcbindはNFSで利用されるプロトコルですね。もう、絶対にこれやん。。。
スクリーンショット_2021-06-09_15_33_57.png

解決方法

先程の「接続の遮断」の対象行を右クリックすると、「アドレスを信頼」という項目が表示されますのでこれを選択します。
スクリーンショット 2021-06-09 15.38.40.png

今回はlocalhost(127.0.0.1)とVagrantfileの「config.vm.network "private_network"」で指定したIP(192.168.33.10)のどちらも許可するように設定しました。

ノートン360の設定を確認

ノートン360の設定画面を開き、「ファイアウォール」のメニューの「接続の遮断」のスパナアイコンをクリックします。
スクリーンショット_2021-06-09_15_41_45.png

「表示する」のプルダウンを「ゾーン」に変更すると、先程「アドレスを信頼」を行ったアドレスが追加されていることが確認できました。
スクリーンショット_2021-06-09_15_50_39.png

ノートン360のファイアウォールが有効な状態で「config.vm.synced_folder」が動作するか確認

今度は「default: Mounting NFS shared folders...」の後にエラーが発生せず正常に起動しました。

% vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
・
・
・
==> default: Mounting NFS shared folders...
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

仮想環境にログインして、「/vagrant」配下にマウントされていることも確認できました。めでたしめでたし。

% vagrant ssh
$ ls -l /vagrant
合計 16
-rw-r--r-- 1 501 games 551  6月  9 14:46 Vagrantfile
-rw-r--r-- 1 501 games  38  6月  6 10:06 ansible.cfg
-rw-r--r-- 1 501 games  33  6月  6 09:39 hosts
-rwxr-xr-x 1 501 games 134  6月  6 09:11 playbook.yml
drwxr-xr-x 6 501 games 192  6月  5 15:26 roles

まとめ

今回のように普段使用している環境にインストールしているアプリケーションが思わぬ影響を与えていることもあるので、ググっても答えが見つからない場合は、一旦落ち着いて発生している問題の切り分けを行うことが大事だなぁと。

おまけ

後日、再びVagrantの起動時にsynced_folderの処理に失敗するようになりました。
調べてみると、セキュリティ履歴画面のファイアウォールの「接続の遮断」の画面にまた「localhost」が遮断されている履歴が表示されていました。
前回の対応で確かに「127.0.0.1」については「アドレスを信頼」の対応を行ったはずです。

「接続の遮断」の画面で「アドレスを信頼」の対応を行った「localhost(127.0.0.1)」については、右クリックをするとこのように「アドレスの信頼を中止」と表示されるのですが。。。
スクリーンショット 2021-06-15 20.38.13.png

新たに遮断されているアドレスを右クリックすると「localhost」にも関わらず、「アドレスを信頼」のメニューが表示されていました。これは???
スクリーンショット 2021-06-15 20.37.59.png

ワケがわからず「アドレスを信頼」をクリックしてみると答えがわかりました。正体は「::1」でした。
スクリーンショット 2021-06-15 20.41.06.png

以下の方法IPv6を無効化してみましたが、

対象のサーバでIPv6を運用するのであれば「アドレスを信頼」の対応でもよいですが、利用しないのであれば nmcli コマンドでIPv6を無効化しておくという対応でもよさそうですね。

$ sudo nmcli connection modify インターフェース名 ipv6.method ignore

nmcli connection show でインターフェース名を確認して。

$ sudo nmcli connection show
NAME         UUID                                  TYPE      DEVICE 
System eth0  XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  ethernet  eth0   
System eth1  XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  ethernet  eth1  
ens3         XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  ethernet  --    

nmcli connection modify でインターフェース毎に無効化を行う。

$ sudo nmcli connection modify "System eth0" ipv6.method ignore
$ sudo nmcli connection modify "System eth1" ipv6.method ignore

もしくは sysctl コマンドを使って /etc/sysctl.conf に書き込む形でもよいかもです。

$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?