web-dev-qa-db-ja.com

Vagrant / VirtualBox DNS 10.0.2.3が機能しない

Linux Mint Nadia(14)の新規インストールを実行しています。 Vagrant Getting Started の指示に従っていますが、 Provisioning で行き詰まっています。 Vagrantボックスは外部に接続できないため、ChefまたはPuppetを使用して何もインストールできません。

基本的なVagrantでは、resolve.confにはnameserver 10.0.2.3が含まれます。しかし、そのセットではus.archive.ubuntu.comにpingできません。

これを8.8.8.8に変更すると、us.archive.ubuntu.comにpingを実行できますが、設定されたままではなく、再起動後に10.0.2.3に戻るため、プロビジョニングが再び失敗します。

理想的には、10.0.2.3が私のセットアップで機能することを望みます。プロビジョニングを実行できるようにresolv.confを永久に変更する方法が欲しいと思っていません。

79
Rudolf Vavruch

この問題は2つの方法のいずれかで回避できます。どちらも VirtualBoxのマニュアルでは です。

NATモードでDNSプロキシを有効にする

NATエンジンは、デフォルトで、ホスト上に構成されているのと同じDNSサーバーをゲストに提供します。シナリオによっては、DNSサーバーのIPをゲストから非表示にすることが望ましい場合があります。 DHCPリースの期限切れが原因で、この情報がホストで変更される可能性があります。この場合、次のコマンドを使用して、NATエンジンがDNSプロキシとして機能するように指示できます。

VBoxManage modifyvm "VM name" --natdnsproxy1 on

NATモードでホストのリゾルバをDNSプロキシとして使用する

ネットワーク名を解決するために、NATエンジンのDHCPサーバーは、ホストの登録済みDNSサーバーのリストを提供します。何らかの理由でこのDNSサーバーリストを非表示にし、ホストのリゾルバー設定を使用する必要がある場合、それにより、VirtualBox NATエンジンにDNSリクエストをインターセプトしてホストのリゾルバに転送するように強制するには、次のコマンドを使用します。

VBoxManage modifyvm "VM name" --natdnshostresolver1 on

この設定はDNSプロキシモードに似ていますが、プロキシモードはDNSリクエストを適切なサーバーに転送するだけですが、リゾルバーモードはDNSリクエストを解釈し、ホストのDNS APIを使用して情報をクエリし、ゲストに返します。 。

83
Michael Hampton

https://serverfault.com/a/453260/14832 をフォローアップし、バージョン2のVagrantfile構成フォーマットを使用している場合は、次のようになります。

Vagrant.configure("2") do |config|

次に、これをその構成ファイルに追加することができます。

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

古い構成形式を使用しているが、Vagrant 1.1+を使用している場合は、ファイルの最後にこれを追加できます。

Vagrant.configure("2") do |config|
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end
end
73
JonTheNiceGuy