如何使VirtualBox来宾共享主机的VPN连接?


50

当我在充当路由器的ubuntu台式计算机上启动VPN时,所连接的子网失去Internet连接,但仍可访问(LAN)。理想情况下,我想知道如何在VPN处于活动状态时通过VPN隧道路由来使连接的子网重新获得Internet访问。

语境

我具有以下网络布局:

我的VirtualBox虚拟机在eth0上的子网172.16.0.0/20。

eth0:0上的子网192.168.0.0/24,它连接到可以访问Internet的网关192.168.0.1。

这显示在/ 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:0转发eth0上的数据包,并且正常的Internet连接正常。但是,当我在此路由器上启动我的VPN隧道时,eth0子网上的VM失去了Internet连接(但路由器仍然存在)。

下面是隧道处于活动状态时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

Vms的Virtualbox配置:

在此处输入图片说明

VM /etc/network/interfaces文件之一:

# 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 2014年

桥接到eth0-向问题添加了信息。
Programster

我知道这并不是您问题的确切答案,但是对我来说,建立2个VPN连接反而会更容易:1个来自主机,另一个来自访客计算机
Zhenya

Answers:


28

这在桥接网络设置中不起作用。从VirtualBox文档中

桥接网络

这是为了满足更高级的网络需求,例如网络模拟和在来宾中运行服务器。启用后,VirtualBox会连接到已安装的网卡之一并直接交换网络数据包,从而规避了主机操作系统的网络堆栈。

由于您的虚拟机eth0直接使用,因此它们不知道在其上tun0运行的隧道的接口。您将需要使用其他虚拟网络配置。

您(其中包括)以下选项:

  • 到目前为止,网络地址转换(NAT)是最简单的解决方案。VirtualBox将通过主机可用的任何Internet连接对VM进行NAT。这对VM完全透明。但是,这排除了从主机到VM的连接或VM之间的连接。

  • 使用“ 仅主机网络”来创建包含VM和主机的正确子网。这将需要在接口配置方面,你现在在虚拟机没有变化,但你将需要设置主机是网关和路由器,使其NAT虚拟机与外部(无论是在其eth0tun0)。

  • 结合以上内容:为每个VM提供两个接口,一个接口到外部世界(跨VirtualBox的NAT),另一个接口连接到仅主机的LAN

  • 尝试VirtualBox的实验性NAT网络配置。 2019年更新:此功能现已成熟:附加到主机的NAT并选择准虚拟化网络(virtio-net)适配器类型。


34

对于具有Windows主机和linux(mint)来宾的VirtualBox,请转到“网络UI”选项卡,并将其设置为“适配器” =>“附加到:NAT”和“适配器类型:半虚拟化网络”。之后,启动您的VM,您应该能够使用VPN网络。


1
这对我来说很棒,谢谢!使用Ubuntu 16.04LTS作为我的客户机和Windows 10主机,以及Virtual Box 5.0.24。
womp '16

1
辉煌!这适用于我的Windows 10主机和VirtualBox(5.0.26)CentOS 7来宾。
扎基

1
惊人!应该是公认的答案。一直在寻找这种解决方案。非常感谢!
MrSpock'5

1
最好的答案在这里!
迈克”

为什么这不是公认的答案?如此简单,正确!
Michael Goldshteyn

6

在到处寻找该解决方案后,我终于找到了一个不需要大量配置更改且非常简单的可行解决方案。使用默认的NAT网络并在终端中键入以下内容:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

来源:https : //www.virtualbox.org/ticket/13993


4

有同样的问题。这是我解决的方法:

  1. 将来宾系统的网络类型更改为“仅主机”
  2. 使Guest的默认网关指向Host的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。在Host OS中,只有配置为通过VPN的IP才会在Guest中通过。


3

这是一些使用主机vpn的无聊盒子的有用信息。基本上你需要设置natdnshostresolver1选项 。注意,这将虽然使用流浪的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选项。
kol
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.