結論
# natdnsproxy1は各自の環境に合わせて番号を変えること
$ VBoxManager modifyvm $vm_name --natdnsproxy1 on
以下の設定だと,docker run
のたびにネットワークの接続が切れる場合があるようなので使わないこと(原因不明).
# natdnshostresolver1は各自の環境に合わせて番号を変えること
$ VBoxManager modifyvm $vm_name --natdnshostresolver1 on
単にこうやったらうまくいったというだけの話で,問題の原因も不明だし,発生した現象を詳細に解析したわけでもないので,本当に正しい方法なのかは不明..
事の発端
ゲストOS上でVPN接続先ネットワーク内のサーバー名をnslookup
したところ,ゲストOS起動直後としばらく経過した後で返ってくるIPアドレスが異なるという現象に遭遇した.
原因は分からないが,何らかの理由でDNSの検索順が変わってしまう,もしくはDNSサーバーの設定が変わってしまうのだろうと推測.そこで,ホストOS(Windows 10)でもnslookup
を実行してみた.結果,返ってくるIPアドレスは変化しないことがわかった.
どうやらゲストOSからの名前解決のみおかしくなっているようなので,ホストOSのリゾルバーを使用するようにしてみた.
$ VBoxManager modifyvm $vm_name --natdnshostresolver1 on
これでホストOSと同じ名前解決手順になるはず.
しばらく使っていると,Googleスプレッドシートが編集できなくなった.どうやら接続が切れているようだ.しばらく待つと回復する.
現象を調べてみたことろ,どうやらdocker run
(正確にはdocker-compose run --rm
だが,同じことが起こるだろう)が終了したときに接続が切れることがあるように見える(docker engineは同じゲストOS上で動かしている).ちゃんと調べればわかるのだろうが,コンテナとの通信のためにdocker engineはネットワークをいじっているようだ.それが影響しているのかもしれない.
そこでホストOSのリゾルバー使用を無効にし,
$ VBoxManager modifyvm $vm_name --natdnsproxy1 on
としてみたところ,接続が切れなくなった.