VirtualBox-ホストがVPNに接続するとゲストUbuntuがDNSを失う


11

eth0のデフォルトNATを使用して、VirtualBoxにUbuntuゲストOSがあります。

自宅からオフィスVPNを使用している場合を除いて、オフィスおよび自宅で問題なく機能します。

ホストOS(Windows 7)がVPNに接続されている場合、DNSルックアップはVirtualboxゲスト内では機能しません。ホストでのDNSルックアップは問題ありません。Virtualbox内では、VPN内と外部の両方で直接IPにpingできるので、接続の問題ではありません。

Ubuntuのゲストはに従って、DNSエントリポイントとしてlocalhostを使用しているように見えます/etc/resolv.confnslookup。そのため、ローカルで何かが他の基礎となるDNSにディスパッチしているように見えます。

これをトラブルシューティングするにはどうすればよいですか?


VPNには何を使用していますか?これらのマシンが接続しているデバイスのVPN設定にアクセスできますか?通常、VPNに接続するマシンは、VPNデバイスから設定を取得します。
jmreicha 2013年

ホストのDNSルックアップが正しく機能していることを明確にするために、影響を受けるのはVirtualboxゲストのみです。
wrschneider 2013年

回答:


17

これは何らかの理由でうまくいきました

C:\...\VirtualBox\VBoxManage modifyvm "VM name" --natdnshostresolver1 on

VPNがアクティブなとき、ホストがDNSルックアップのために、VirtualBoxがWindows構成から取得した指定のDNSサーバーにリクエストを転送するだけでなく、特別な何かを行っているためだと思います。


1
あなたは男を救った。
CantGetANick 2013

私には完璧に働きました!
ハイミングエン

1

Lubuntu 16.04でも非常によく似た状況がありましたが(他のUbuntuでも同じです)、この修正で状況が改善されませんでした。少なくとも16.04では、NetworkManagerがローカルDNSプロキシ(dnsmasq)を使用することが問題であるように思われ、少なくともデフォルトの構成では、これはVPN接続ではうまく機能しません。

/etc/NetworkManager/NetworkManager.conf内のdns = dnsmasqのコメント/削除

[main]
plugins=ifupdown,keyfile,ofono
# dns=dnsmasq

おそらくdnsmasqを設定する方法はありますが、これにより、ホスト(dnsなど)への同等のアクセスが(私に)与えられるため、調査していません。YMMV。


1

TL; DR:

  • その間、ホストのVPNステータス(接続または切断)が変化しないことを確認してVMを再起動します。
  • VirtualBox NATエンジンにDNSリクエストをインターセプトさせ、それらをホストのリゾルバーに転送します。つまり、ホストのDNS APIを使用して情報を照会し、ゲストに返します。これを設定するには:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on


VPNに接続されたホストでVMを実行すると、VPNステータスが変化するたびにDNSの問題が発生する可能性があります。2つのシナリオがあります。

  1. VMはVPN接続されたホストで生成され、特定の時点でVPNが切断されます。
  2. VPNに接続されていないホストでVMが生成され、特定の時点でVPNが接続する

1)VPN接続-> VPN接続解除

この場合、VMはおそらくVPNプロバイダーネットワークの一部であるDNSアドレスを受信して​​います。これは通常、内部プライベートIPアドレスです。の内容を確認してくださいcat /etc/resolv.conf。私の場合、私は以下を得ます:

nameserver 10.8.8.1 <---これはVPNプロバイダーネットワークの内部にあります

nameserver 192.168.178.1 <---これは私のホームゲートウェイ(ルーター)です

次に、ホストをVPN接続から切断します。

  • VMのDNS構成は変更されません-> VMはDNSリクエストを宛先IP 10.8.8.1に送信し続けますが、ホストがVPNに接続されていないため到達できません

詳細:

  • パケットは、VirtualBox NATネットワークによって定義されたdef GWに送信され、送信元NATTされ(ホストIPアドレスを使用)、最終的にはホームゲートウェイに転送するホストのルーティングテーブルによって処理されます。
  • ここでは、ホームゲートウェイにLAN側(プライベートアドレス)に10.8.8.1のエントリがなく、WAN側(パブリックアドレス)にプライベートアドレスとして転送できないため、パケットはドロップされます。

2)VPN接続解除-> VPN接続

この場合、VMの起動時にホストがVPNに接続されていなかったため、VMはVPNネットワークプロバイダーの一部であるDNSアドレスを受信しません。の内容を確認してくださいcat /etc/resolv.conf。私の場合、私は以下を得ます:

nameserver 192.168.178.1 <---これは私のホームゲートウェイ(ルーター)です

次に、ホストをVPN接続に接続します。

  • VM内のDNS構成は変更されません-> VMは引き続きDNS要求を宛先IP 192.168.178.1に送信しますが、到達できません(pingは引き続き機能します)。 192.168.178.1(内部ホームゲートウェイIPアドレス)に到達できないVPNネットワークにパケットを転送するVPN Tapインターフェイス。

詳細:

  • パケットは、VirtualBox NATネットワークで定義されたdef GWに送信され、VPNタップインターフェイスに送信されます。これにより、IPヘッダーが変更され、VM IP送信元アドレスがVPNネットワークによってホストに割り当てられたIPアドレスに置き換えられます。アドレスはDNSアドレス192.168.178.1のままです。
  • 次に、このパケットは外部IPヘッダーにカプセル化され、送信元としてホストIPアドレス(後でホームゲートウェイの送信元NATに置き換えられます)と宛先アドレスとしてVPNサーバーが含まれます。
  • パケットがVPNネットワークに到達すると、カプセル化が解除されます。ここでも、宛先IPアドレスは、VPNプロバイダーネットワークが到達できないDNSアドレス192.168.178.1になります(これが、VPNネットワークプロバイダーがDNSサーバー用に使用しているIPアドレスとまったく同じであるという特別な場合を除いて)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.