Как я могу сделать так, чтобы гости VirtualBox совместно использовали VPN-подключение хоста?

Вопрос

Когда я запускаю VPN на настольном компьютере с Ubuntu, который действует как маршрутизатор, подключенная подсеть теряет подключение к Интернету, но остается доступной (LAN). В идеале я хотел бы знать, как разрешить подключенной подсети повторно получать доступ в Интернет путем маршрутизации через VPN-туннель, когда VPN активна.

Контекст

У меня есть следующая схема сети:

подсеть 172.16.0.0/20 на eth0 для моих виртуальных машин VirtualBox.

подсеть 192.168.0.0/24 на eth0: 0, которая подключается к шлюзу 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 пересылаются через eth0: 0 с маскировкой, и нормальное подключение к Интернету в порядке. Однако когда я запускаю свой VPN-туннель на этом маршрутизаторе, подключение к Интернету теряется для виртуальных машин в подсети eth0 (но остается для маршрутизатора).

Ниже приведен вывод 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

Конфигурация Virtualbox для Vms:

enter image description here

Один из файлов виртуальных машин /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
51
задан 13 February 2014 в 13:56

5 ответов

Это не будет работать в Соединенной мостом Сетевой установке. Из документации VirtualBox:

Соединенные мостом сети

Это для более усовершенствованных сетевых потребностей, таких как сетевые моделирования и рабочие серверы в госте. При включении, подключения VirtualBox к одной из установленных сетевых плат и обмене сетевыми пакетами непосредственно, обходя сетевой стек хостовой операционной системы.

Так как Ваши виртуальные машины используют eth0 непосредственно, они не знают tun0 взаимодействуйте через интерфейс к туннелю, работающему на основе его. Необходимо будет использовать другую виртуальную сетевую конфигурацию.

У Вас есть (среди других) эти опции:

  • Преобразование сетевых адресов (NAT) является безусловно простым решением. VirtualBox будет NAT, VMs через любое интернет-соединение доступен хосту. Это полностью очевидно для VMs. Однако это устраняет соединения от хоста до VMs или соединения между VMs.

  • Используйте Сети Только для хоста для создания надлежащей подсети, содержащей VMs и хост. Это не потребует никаких изменений в интерфейсной конфигурации, которую Вы теперь имеете в VMs, но необходимо будет настроить хост, чтобы быть шлюзом и маршрутизатором, и сделать его NAT VMs к внешней стороне (ли через eth0 или tun0).

  • Вышеупомянутое объединения: дайте каждому VM два интерфейса, один gatewaying к внешнему миру (через NAT VirtualBox) и другое приложенное к LAN Только для хоста.

  • Попробуйте экспериментальную Сетевую конфигурацию NAT VirtualBox. Обновление 2019: эта функция с тех пор назрела: присоедините к NAT хоста и выберите сеть Paravirtualized (virtio-сеть) тип адаптера.

28
ответ дан 13 February 2014 в 13:56
  • 1
    Для шифрования раздела, необходимо стереть содержание, записать контейнерные данные LUKS в него, смонтироваться и отложить файлы. Вы не можете удалить корневой раздел рабочей системы (хорошо, Вы можете, но это хитро), таким образом, я говорю, что Вы лучше используете загрузочный LiveUSB. Загрузчик GRUB can' t дешифруют раздел LUKS, таким образом, Вам нужен / незашифрованный раздел начальной загрузки, таким образом, Вы храните его на другом USB и делаете его загрузочным. По существу Вы делаете LiveUSB, но с корневыми данными не на палке, а на зашифрованном разделе Вашего ПК. – Barafu Albino 11 August 2015 в 14:48

Для VirtualBox с хостом Windows и гостевым linux (mint) перейдите на вкладку «Интерфейс сети» и установите для «Adapter» => «Attached to: NAT» и «Тип адаптера: паравиртуализированная сеть». После этого запустите виртуальную машину, и вы сможете использовать сеть VPN.

0
ответ дан 13 February 2014 в 13:56
  • 1
    Можно сохранить отдельный / жесткий диск раздела начальной загрузки и только файл ключей на USB. Но если взломщик когда-нибудь получит незамеченный доступ к тому / разделу начальной загрузки, будет тривиально легко измениться так, чтобы это отправило Ваш файл ключей взломщику при начальной загрузке его в следующий раз. Если Вы не видите проблемы в этом (никто не может работать Ваш ПК и уйти незамеченный), чем можно сохранить / раздел начальной загрузки на жестком диске. – Barafu Albino 11 August 2015 в 17:05

После поиска этого решения повсюду, я наконец нашел рабочее решение, которое не требует больших изменений конфигурации и действительно простое. Используйте сеть NAT по умолчанию и введите ее в терминале:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

source: https://www.virtualbox.org/ticket/13993

0
ответ дан 13 February 2014 в 13:56
  • 1
    почему это не показывает человечность установки рядом?? во время установки это просит, чтобы я установил код загрузчика в раздел и выбрал BIOS типа reserved.why?? – SemiColon 31 July 2015 в 14:59
1112 У меня была та же проблема. Вот как я это решил:

  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.5 - ваш шлюз tun0, а 192.168.5.0/24 - диапазон вашей сети vboxnet0.

Если вы только маршрутизируете определенный трафик через 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. .

Примечание. Это решение позволяет обрабатывать гостевую ОС точно так же, как и хост-ОС. Только IP-адреса, настроенные для прохождения VPN в Host OS, будут проходить через него в гостевой системе.

0
ответ дан 13 February 2014 в 13:56

Вот некоторая полезная информация для бродячих ящиков, использующих хост 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. ком / 2016/05 / распределения хост-VPN-с-бродяга-грабят-allen.html

0
ответ дан 13 February 2014 в 13:56

Другие вопросы по тегам:

Похожие вопросы: