ほぼ自分の覚え書き。解決してしまえば何てことはないのはITあるある。
現象
・vagrantで仮想環境を構築する
↓
・vagrant内でWindowsフォルダをnfsでマウントしている
↓
・VPN接続するとマウントしたフォルダがハングする
↓
・ついでに言うとVPN接続した状態でvagrant up
すると最初からマウントされない
↓
・なんでだ
調べたこと
・まずVagrantfileの書式とかプロトコルはいの一番に疑った
→とはいえプロジェクトで提供されてるものだし問題があったら誰か声をあげるだろうよ
・仮想環境の設定で見落としがあるか
→これも一緒じゃろうて
・Windows側の設定に不備があるのか?
→これはもう知識とカンで調べまくったけどピンとくるものはなかった
・ファイアウォールか?
→実はこの一歩手前の段階でnfsでのマウントそのものができない問題があり、それはESET ENDPOINT Securityが許可していなかった。今回もそれかと思って疑ったがどうもピンとくるものがなかった。
解決方法
一言でいってしまえばプロトコルを変えてしまえばよかった。
具体的なVagrantfileの書式(一部抜粋)は以下の通り
## これが提供された初期状態
#config.vm.synced_folder "../..", "/vagrant" , type: "nfs"
## rsyncでも接続するがWindow->仮想環境の片方向同期なのでイマイチ
## さらにリアルタイム同期するには[vagrant up]したところで[vagrant rsync-auto]しないとダメ
## しかも[vagrant rsync-auto]を実行するとサーバ起動状態になってプロンプトが返ってこない
#config.vm.synced_folder "../..", "/vagrant" , type: "rsync", rsync__auto:true, rsync__exclude:".git/"
## Sambaにしたら双方向リアルタイム同期になったのでこれにした
config.vm.synced_folder "../..", "/vagrant" , type: "smb", smb_username:"WindowsログインユーザID", smb_password:"Windowsログインパスワード"
windows10でのSamba有効化
[コントロールパネル]->[プログラム]->[プログラムと機能]にある[Windowsの機能の有効化または無効化]クリックして立ち上がった小窓で[SMB 1.0/CiFSファイル共有のサポート](画像)をクリック
原因について
よくわからんけどnfsってMac|Linux用のフォルダマウントプロトコルらしいからWindows上にインストールされたVPN接続アプリ(FortiClient)だとトンネリングで問題があるんじゃない?知らんけど。
雑感
今時はMacOS前提で環境構築する事が多いのでWindowsだと見えないところで問題が噴出しまくるという症例のひとつ。nfsなんてなんとなくは聞いたことあるなあくらいでMac|Linux専用とか知らなかったし。そもそもここに書いたのも何日も悩み苦しんだ上で霊感が舞い降りてたまたま解決しただけで理由とかよくわからぬ。