web-dev-qa-db-ja.com

VirtualBox VMにHostのDNSを使用させるにはどうすればいいですか?

私のVMにはVirtualBoxを使います。私のオフィスのネットワーク設定は無線です、すなわち私は私達の会社のWiFiネットワークに接続します。そしてそれはローカル名を解決するためにローカルDNSを持っています(something.mycompany.comのように123.45.67.89に行く)。新しいVMを構築すると、ホストの接続を継承した外部インターネットに接続できますが、ローカルDNSを使用してローカル名を解決することはできません。そのため、VMの/etc/hostsに入り、ホスト上の名前を解決した後に手動で入力する必要がありますが、これは面倒です。

この手動の手順を実行する必要がないように、VirtualBoxが自動的にゲストをホストのDNSに接続する方法はありますか?私のホストはOSX Mountain Lionです、VMは通常Ubuntuですが、私はそれが問題になるはずです。

64
amphibient

ホストのリゾルバを使用したDNSプロキシモード を有効にするには、次のコマンドを実行します。

VBoxManage modifyvm "<VMname>" --natdnshostresolver1 on

その結果、ゲストOSのDNS要求は、--natdnsproxy1 onのようにゲストOSが外部のDNSサーバーに接続するのではなく、ホストDNS APIを使用して傍受および解決されます。

VBoxManage list runningvmsを実行すると、VMの名前を取得できます。

92
Josiah

はい、可能です。 VirtualBoxには、ゲストとホスト間のネットワークを確立するためのモードが多数あります。 NATモード(デフォルト)を使用するのではなく、ゲストマシンをネットワーク上でまったく別のエンティティとして扱うことができるブリッジモードを使用できます。したがって、あなたのホストだけでなく、他のマシン(あなたのDNSサーバなど)もあなたのゲストを別のマシンとして見るでしょう。

ブリッジモードを設定したら、あなたのubuntuゲストに行き、あなたの会社のDNSサーバー名またはIPを使うようにしてください。詳細については、このチュートリアルを読んでください。 http://prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine- using-Oracle-virtualbox /

5
Prahlad Yeri

これはグーグルの最高の結果だったので、私は他の人たちのために明確にしたかった。 Josiahの解決策は私には以下の行を追加することでうまくいった。

「hosts:files dns」から/etc/nsswitch.confに

他の人が指摘したように、オリジナルの解決策はUbuntu 16.04以上では機能しません。私のゲストVMはUbuntu 16.04です。

参考 Linuxサーバの作成

5
pretzel11

私はまた私のVPN接続がvagrantインターネット接続を妨害しているのに気づきました。

このスタック交換のおかげで、私はVagrantファイルに埋め込むことで解決することができました。

config.vm.provider "virtualbox" do |vb|
  vb.cpus = 1
  vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  vb.memory = "2048"
end

そして、コマンドラインで変更するためにボックスをシャットダウンしてから再プロビジョニングする必要があるという面倒を避けました。

export PATH=$PATH:/c/Program\ Files/Oracle/VirtualBox/
VBoxManage list runningvms
export vbox=`VBoxManage list runningvms | cut -d '"' -f 2`
VBoxManage controlvm $vbox poweroff
VBoxManage modifyvm $vbox --natdnshostresolver1 on
vagrant.exe up --provision
1

私にとっては、最初の(NATモード)を維持したまま、ホストオンリーアダプターで別のアダプターを追加するのに役立ちました。

[screenshot1]

0
Michel Samia