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は下記の箇所のことです

f:id:swfz:20191115045003p:plain

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

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