VirtualBoxゲストにホストのVPN接続を共有させるにはどうすればよいですか?


50

質問

ルーターとして機能するUbuntuデスクトップコンピューターでVPNを起動すると、接続されたサブネットはインターネット接続を失いますが、まだアクセス可能(LAN)です。理想的には、VPNがアクティブなときにVPNトンネルを介してルーティングすることにより、接続されたサブネットがインターネットアクセスを回復できるようにする方法を知りたいと思います。

状況

次のネットワークレイアウトがあります。

VirtualBox仮想マシンのeth0上のサブネット172.16.0.0/20。

インターネットにアクセスできるゲートウェイ192.168.0.1に接続するeth0:0のサブネット192.168.0.0/24。

これは/ etc / network / interfacesファイルに示されています。

auto lo
iface lo inet loopback

# This is the subnet dedicated to VB
auto eth0
iface eth0 inet static
    address 172.16.0.1
    netmask 255.255.0.0
    gateway 192.168.0.164
    dns-nameservers 8.8.8.8

# normal DHCP internet
auto eth0:0
iface eth0:0 inet static
    address 192.168.0.164
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8
    gateway 192.168.0.1

eth0のパケットは、マスカレードでeth0:0を介して転送され、通常のインターネット接続は問題ありません。ただし、このルーターでVPNトンネルを開始すると、eth0サブネット上のVMのインターネット接続が失われます(ルーターにはまだ残っています)。

以下は、トンネルがアクティブな場合のifconfig出力です

eth0      Link encap:Ethernet  HWaddr 00:1f:bc:01:c3:ab  
          inet addr:172.16.0.1  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::21f:bcff:fe01:c3ab/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:165426 errors:0 dropped:0 overruns:0 frame:0
          TX packets:182601 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:208264321 (208.2 MB)  TX bytes:16660945 (16.6 MB)
          Interrupt:16 

eth0:0    Link encap:Ethernet  HWaddr 00:1f:bc:01:c3:ab  
          inet addr:192.168.0.164  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:16 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:381963 errors:0 dropped:0 overruns:0 frame:0
          TX packets:381963 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:22755054 (22.7 MB)  TX bytes:22755054 (22.7 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.10  P-t-P:10.8.0.9  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ソリューションがルーティングテーブルと関係があると思う。トンネルがアクティブ場合、次のように表示されます。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.8.0.9        128.0.0.0       UG    0      0        0 tun0
default         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
10.8.0.0        10.8.0.9        255.255.255.0   UG    0      0        0 tun0
10.8.0.9        *               255.255.255.255 UH    0      0        0 tun0
37.139.23.49    192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
128.0.0.0       10.8.0.9        128.0.0.0       UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.16.0.0      *               255.255.0.0     U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0

そして、次の時にトンネルが非アクティブ

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.16.0.0      *               255.255.0.0     U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0

VMのVirtualbox構成:

ここに画像の説明を入力してください

VM /etc/network/interfacesファイルの1つ:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 172.16.0.3
        netmask 255.255.0.0
        network 172.16.0.0
        broadcast 172.16.255.255
        gateway 172.16.0.1
        dns-nameservers 8.8.8.8

VirtualBoxでVMのネットワークはどのように構成されていますか?
zwets 14

eth0への橋-質問に情報を追加しました。
プログラマー14

ゲストマシンから別の、1ホストマシンから:私は、それは正確にあなたの質問への答えではないのですが、知っている私にとって、それは代わりに2つのVPN接続を設定する方が簡単であることが判明
ジェーニャ

回答:


28

これは、ブリッジネットワーク設定では機能しません。VirtualBoxドキュメントから:

ブリッジネットワーク

これは、ゲストでのネットワークシミュレーションやサーバーの実行など、より高度なネットワークニーズに対応しています。有効にすると、VirtualBoxはインストールされているネットワークカードの1つに接続し、ネットワークパケットを直接交換して、ホストオペレーティングシステムのネットワークスタックを回避します。

仮想マシンはeth0直接使用しているため、仮想マシンtun0上で実行されているトンネルへのインターフェースを認識しません。別の仮想ネットワーク構成を使用する必要があります。

(特に)これらのオプションがあります:

  • ネットワークアドレス変換(NAT)は、最も単純なソリューションです。VirtualBoxは、ホストで利用可能なインターネット接続を介してVMをNAT変換します。これは、VMに対して完全に透過的です。ただし、これにより、ホストからVMへの接続またはVM間の接続が除外されます。

  • 使用ホストオンリーネットワーク仮想マシンとホストを含む適切なサブネットを作成します。これは、あなたが今のVMを持っているインターフェイスの設定には変更を必要としませんが、あなたはゲートウェイやルータで、するようにホストを設定する必要がありますし、(その全体かどうかを外部に仮想マシン、それがNATにしますeth0tun0)。

  • 上記を組み合わせます。各仮想マシンに2つのインターフェイスを提供します。1つは外部へのゲートウェイ(VirtualBoxのNATを介して)、もう1つはホストオンリーLANに接続します。

  • VirtualBoxの実験的なNATネットワーク設定を試してください。 アップデート2019:この機能は成熟しており、ホストのNATに接続し、準仮想化ネットワーク(virtio-net)アダプタータイプを選択します。


34

Windowsホストとlinux(mint)ゲストを使用するVirtualBoxの場合、[ネットワークUI]タブに移動し、[アダプター] => [接続先:NAT]および[アダプタータイプ:準仮想化ネットワーク]に設定します。その後、VMを起動すると、VPNネットワークを使用できるようになります。


1
これは私にとってはうまくいきました、ありがとう!ゲストとしてUbuntu 16.04LTSを使用し、Virtual Box 5.0.24でWindows 10ホストを使用します。
16

1
ブリリアント!これは、Windows 10ホストおよびVirtualBox(5.0.26)CentOS 7ゲストで機能します。
ザキ

1
すごい!受け入れられた答えであるべきです。このソリューションを長年探していました。どうもありがとう!
-MrSpock

1
ここで最高の答え!
マイク

なぜこれが受け入れられた答えではないのですか?とても簡単で正しい!
マイケルゴールドシュテイン

6

どこでもこのソリューションを探した後、私は最終的に、多くの構成変更を必要とせず、本当にシンプルな実用的なソリューションを見つけました。デフォルトのNATネットワークを使用して、ターミナルでこれを入力します。

VBoxManage modifyvm "VM name" --natdnsproxy1 on

ソース:https : //www.virtualbox.org/ticket/13993


4

同じ問題がありました。ここに私がそれを解決した方法があります:

  1. ゲストシステムのネットワークタイプを「ホストのみ」に変更します
  2. ゲストのデフォルトゲートウェイがホストのIP ifconfig vboxnet0を指すようにします。

最後のステップは、vboxnet0からのパケットをVPNにルーティングすることです。

すべてのトラフィックをVPN経由でルーティングする場合:

iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o tun0 -j SNAT --to-source 10.8.0.5

10.8.0.5tun0ゲートウェイはどこにあり、192.168.5.0/24vboxnet0ネットワークの範囲です。

特定のトラフィックのみをVPN経由でルーティングする場合:

iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o tun0 -j SNAT --to-source 10.8.0.5
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o wlan0 -j SNAT --to-source 192.168.43.95

どこに10.8.0.5あなたのtun0ゲートウェイであると192.168.43.95あなたであるwlan0のゲートウェイと192.168.5.0/24あなたのvboxnet0のネットワーク範囲です。

注:このソリューションでは、ゲストOSをホストOSと同じ方法で処理できます。ホストOSでVPNを通過するように構成されたIPのみがゲストで通過します。


3

ホストvpnを使用した迷惑メールボックスに役立つ情報を次に示します。基本的に、natdnshostresolver1オプションを設定する必要がありますが 、Vagrantのpublic_network設定を使用する場合、これは機能しないことに注意してください。

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

http://renier.morales-rodriguez.net/post/90674523562/sharing-host-vpn-with-virtualbox-guest http://blog.geekslikeshinythings.com/2016/05/sharing-host-vpn-with-vagrant -rob-allen.html


1
最初のリンクには解決策がありました。VMのnatdnshostresolver1オプションをオンにする方法を示しています。
コル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.