notebook

都内でWEB系エンジニアやってます。

PCスリープ後のVirtualBoxのマシンのネットワークを復帰させる

最近会議が増えたのでPC(Windows)を閉じて移動→開いて作業が増えたのですがPCを閉じるとスリープになります

筆者はVagrantでVirtualBoxのマシンを用意してその中でDockerなりの環境を立てて開発しています

PCを開いて復帰後にVagrantで起動したVirtualBoxのマシンのNATのネットワークが機能しない状態になってしまい毎度vagrant reloadなどで再起動させていました

流石にこれは効率悪いなと思い探してみたところやはり先人が解決策を提示してくれていました

#14374 (Network adapters not working after host returns from sleep Win 7 host Linux Mint 17.2 guest) – Oracle VM VirtualBox

www.virtualbox.org

結論的には上記ページの中程の通り

VBoxManage controlvm "machine_name" setlinkstate1 off
VBoxManage controlvm "machine_name" setlinkstate1 on

setlinkstateはhelpを見るとsetlinkstate<1-N> on|offとのことでNICの順序による

今回vagrant経由で作成したマシンに関してはNATの設定がNICの1番目なのでこのコマンドで問題なく再接続ができるようになります

machie_nameは下記の箇所のことです

ということで上記コマンドを実行することで再度マシン内からネットワークにつなげることが可能になります

powershellやbatファイルはあまり馴染みが無かったのでgit bashで開いてshellscript書いてVagrantfileと同じ場所においてあげました

#!/bin/bash

echo 'network reconnect...'

cd /c/Program\ Files/Oracle/VirtualBox

./VBoxManage.exe controlvm "dev3_default_1571209188714_51579" setlinkstate1 off
./VBoxManage.exe controlvm "dev3_default_1571209188714_51579" setlinkstate1 on

ターミナルソフト経由でつないでいても接続が切れないので毎度ターミナルソフトを落として繋ぎ直す必要もなくなりストレスなく作業に復帰できます

思った以上に体験が良いですね

参考

Vagrant (provider Virtualbox) で network の promiscuous を設定する。 - Qiita

qiita.com