VPNを介したvirtualboxゲストOS


43

Windows 7ホスト上のVirtualBoxでWebサーバーを実行しているOracle Linuxゲストがあります。3つのことを行えるようにネットワークを設定する必要があります。

  1. ホストはブラウザとsshを介してゲストに接続できます
  2. ゲストはホストのVPNを介して内部ネットワーク上の他のサーバーと通信できます
  3. ゲストは外部のインターネットにアクセスできます

私はいくつかの答えを読んで、いくつかの構成を試しましたが、ここで何が起こりますか:

ブリッジド

  1. ホストはゲストに到達できません
  2. ゲストはVPNを通して見ることができません
  3. ゲストはインターネットにアクセスできます

NAT

  1. ホストはゲストに到達できません
  2. ゲストはVPNを通して見ることができます
  3. ゲストはインターネットにアクセスできません

ホストオンリー

3つの条件はすべて失敗します。

NATネットワーク

  1. ホストはゲストに到達できません
  2. ゲストはVPNを通して見ることができます
  3. ゲストはインターネットにアクセスできません

また、ホストがVPNを介して接続されている場合もあれば、単に企業ネットワークに直接接続されている場合もあることを指摘する必要があります。直接接続すると、ブリッジアダプターは3つの条件をすべて満たします。理想的には、VPN接続か直接接続かに関係なく、3つの条件すべてを満たす構成があります。


通常、VPN接続には独自のアダプターがあるため、最初に考えたのは、VPN接続(VPNに接続されている場合)に接続する必要があるということです。
Ƭᴇcʜιᴇ007

VMをVPNアダプターにブリッジしたが、IPアドレスを取得できない
-ewok

これがlayer2アダプターかlayer3アダプターかを言えますか?
MariusMatutiae

@MariusMatutiaeごめんなさい、どういう意味かわかりません。
ewok

どの種類のVPNですか?
MariusMatutiae

回答:


63

私はまったく同じ問題を抱えていたので、それを解決まで見通したので、問題と解決策を詳細に説明させていただきます。

VPNを含まない

VPNを使用せずに要件を満たすために必要な構成を理解することが重要です。また、この情報は、ホストでもゲストでも、ソフトウェアファイアウォールが干渉していないことを前提としています。

VPNがない場合、これは通常、仮想マシンの構成に2つのネットワークアダプターを作成することで解決されます。

最初のアダプタはNATモードに設定する必要があります。これにより、ゲストはホストのネットワークインターフェイスを介してネットワークリソース(インターネットを含む)にアクセスできます。

アダプター1:NAT

2番目のアダプターはに設定する必要がありますHost-only。これにより、ホストとゲスト間の双方向通信が可能になります。

このアダプターは、ホスト専用アダプターを構成するためにVirtualBoxのグローバルネットワーク設定を変更する必要があるため、最初のアダプターよりもセットアップがやや複雑です(注:これには管理者権限が必要です)。

VirtualBoxで、に進みFile -> Preferences -> Networkます。クリックしてHost-only Networksタブをクリックし、少し+新しいアダプタを追加するためにアイコンを。VirtualBoxの権限を上げるように求められます。

充填アウトAdapterタブは必須です。次のようになります(ラベルの付いたアダプターは無視してください#2;これは無関係なものに使用されます)。

ネットワーク設定1

DHCP[サーバー]タブの値はオプションです。ゲストのネットワーク構成内でこのアダプターのIPアドレスをハードコーディングする場合、これらの値は不要です。一方、DHCPを使用する場合、値は次のようになります。

ネットワーク設定2

VirtualBoxの構成に関する最後の手順は、VMのネットワーク構成に戻り、作成したホスト専用アダプターを参照する2番目のアダプターを追加することです。

アダプター2:ホストのみ

次に、ゲストオペレーティングシステムで、これらの2つのネットワークインターフェイスを利用するようにネットワークを構成する必要があります。

DebianまたはUbuntu GNU / Linuxでは、設定は次の/etc/network/interfacesように変更するだけで簡単です。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The secondary network interface
auto eth1
iface eth1 inet static
     address 192.168.56.101
     netmask 255.255.255.0

(純粋主義者は/etc/network/interfaces.d代わりにディレクトリを利用することを好むかもしれませんが、それはこの説明の範囲を超えています)

ゲストのネットワークサービスを再起動するか、より簡単にゲストVM全体を再起動すると、すべてが「正常に動作する」はずです。

この時点で、ゲストVMをpingし192.168.56.101て応答を受信できるはずです(ソフトウェアファイアウォールが干渉していない場合)。

同様に、1でホストにpingできる必要があります10.0.2.2。このIPアドレスは、VirtualBoxのNAT実装に「ハードコード」されているか、少なくとも何らかの非自明の設定ディレクティブで指定されているようで、その起源に関する情報はほとんどありません。しかし、悲しいかな、「それはただ機能する」。

この構成を考えると、質問で概説した3つの条件がすべて満たされます。

入力:VPN

しかし、ここにこすります。VPNを導入すると、表示停止の問題が発生します(特定のVPNとその構成によって異なります)。

最新のVPNはスプリットトンネリングに対応しています。これは、前述のVirtualBox構成が3つの要件に従って機能するために必要です。(良い)セキュリティ上の理由から、スプリットトンネリングは多くの場合無効になっていますが、これはまさに(そして私の場合の)問題です。

VPNに接続すると、VPNクライアント(私の場合、Cisco AnyConnect Secure Mobility Client、3.1.02026)はホストコンピューターのルーティングテーブルを調べ、それらを記憶してから、一般的に中央から送られる値でそれらを舗装します。管理された場所(つまり、ローカルの管理者権限がある場合でも、設定を上書きすることはできません)。

command.exe(Windowsの場合)を開くと、ルーティングテーブルを確認できます。

C:\>route print

VPNに接続する前に、ルーティングテーブルには、このVirtualBox設定が正しく機能することを可能にする重要なエントリが含まれています。VPNに接続すると、これらのエントリが削除され、ホストとゲスト間の通信ができなくなります。

(他にも多くのエントリがありますが、この動作の根本的な原因とは無関係なので、ここでは省略しました。)

VPNに接続する前に:

     192.168.56.0    255.255.255.0         On-link      192.168.56.1    266
     192.168.56.1  255.255.255.255         On-link      192.168.56.1    266
   192.168.56.255  255.255.255.255         On-link      192.168.56.1    266
        224.0.0.0        240.0.0.0         On-link      192.168.56.1    266
  255.255.255.255  255.255.255.255         On-link      192.168.56.1    266

VPNに接続した後:

     192.168.56.1  255.255.255.255         On-link      192.168.56.1    266
        224.0.0.0        240.0.0.0         On-link      192.168.56.1    266
  255.255.255.255  255.255.255.255         On-link      192.168.56.1    266

VPNクライアントは次の行を削除します。

     192.168.56.0    255.255.255.0         On-link      192.168.56.1    266
   192.168.56.255  255.255.255.255         On-link      192.168.56.1    266

これらの最後の2つのエントリがないと、ホストとゲストは通信できません。これは、VPN構成でスプリットトンネリングが無効になっている場合の正確な動作です。

通常、これらの2つのコマンドはこれらのルートを復元します。

C:\>route ADD 192.168.56.0 MASK 255.255.255.0 192.168.56.1 METRIC 266
C:\>route ADD 192.168.56.255 MASK 255.255.255.255 192.168.56.1 METRIC 266

ただし、VPNクライアントは引き続き警戒します。ルーティングテーブルを変更しようとする試みを傍受します。私のクライアントは2番目のエントリを許可しているようですが、最初のエントリは許可していないようです。(そして、定期的に両方を舗装するかもしれません。私はそれについてテストしませんでした。)

場合は、あなたの特定のVPNとそれに付随設定を有効にするスプリットトンネリングを可能に、それは一般的にスイッチオンされ、このように:

Cisco VPNクライアント:LANリソースへのアクセスを許可します

VPNから切断すると、正常に動作するVPNクライアントは、接続前に配置されていたルーティングテーブルを復元します。私のVPNクライアントは確実にこれを行うようです。これは、VPNに接続または切断するときにゲストVMを再起動する必要がないことを意味するため、有益です。このような場合、VMのセカンダリアダプターはリセットされますが、IPアドレスを自動的かつ透過的に再取得し、ホストとゲスト間の通信をほぼ即座に復元します。さらに良いことに、ホストとゲスト間のNFSマウント(私はCIFSマウントを使用しています)は、VPN接続/切断操作を介して接続されたままです。

万が一、VPNでスプリットトンネリングが許可されている場合は、それを有効にするだけの単純な問題かもしれません。


5
この回答(画像およびすべて)のすべての努力に感謝します。あなたの説明に大いに役立ちました!
エデンショー

よくやった、ベン!これは、VPNに関する問題を理解するのに役立ち、ITへのインシデントレポートでケースを明確に明確にするのに役立ちました
マークマグラナ

1
参考までに、AnyConnectの「ローカル(LAN)アクセスを許可する」機能にアクセスできます。このチェックボックスをオンにして、ルートの削除が妨げられないことを確認できます。
Lqueryvg

-1

ゲストLinuxミントマシンでWindowsホストVPNを使用する方法

設定で固定ポート番号を使用するようにVPNを設定します

vmネットワークをNATに設定

IP 10.0.2.2(デフォルトの仮想ボックスNATゲートウェイ)でLinuxプロキシ設定を設定し、vpnを手動で入力したポート

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.