Вопрос
Когда я запускаю 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:
Один из /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 :
Поскольку ваши виртуальные машины используют
eth0
напрямую, они не знают обtun0
интерфейсе туннеля, проходящего через него. Вам нужно будет использовать другую конфигурацию виртуальной сети.У вас есть (среди прочих) эти варианты:
Трансляция сетевых адресов (NAT) - безусловно, самое простое решение. VirtualBox будет NAT виртуальных машин через любое подключение к Интернету, доступное для хоста. Это полностью прозрачно для виртуальных машин. Однако это исключает подключения от хоста к виртуальным машинам или соединения между виртуальными машинами.
Используйте сеть только для хоста, чтобы создать правильную подсеть, содержащую виртуальные машины и хост. Это не потребует никаких изменений в конфигурации интерфейса, которую вы сейчас имеете в виртуальных машинах, но вам нужно будет настроить хост в качестве шлюза и маршрутизатора и сделать его NAT виртуальными машинами для внешней среды (будь то ее
eth0
илиtun0
).Объедините все вышеперечисленное: предоставьте каждой виртуальной машине два интерфейса, один шлюз к внешнему миру (через NAT VirtualBox ), а другой подключен к локальной сети только для хоста .
Попробуйте экспериментальную конфигурацию NAT для VirtualBox . Обновление 2019: эта функция с тех пор переросла: подключитесь к NAT хоста и выберите тип адаптера паравиртуализированной сети (virtio-net) .
источник
Для VirtualBox с хостом Windows и гостевым linux (mint) перейдите на вкладку «Сетевой интерфейс» и установите для «Adapter» => «Attached to: NAT» и «Тип адаптера: паравиртуализированная сеть». После этого запустите виртуальную машину, и вы сможете использовать сеть VPN.
источник
После повсеместного поиска этого решения я, наконец, нашел работающее решение, которое не требует больших изменений конфигурации и является действительно простым. Используйте сеть NAT по умолчанию и введите это в терминале:
источник: https://www.virtualbox.org/ticket/13993
источник
Была такая же проблема. Вот как я это решил:
ifconfig vboxnet0
чтобы найти его.Последний шаг - маршрутизация пакетов, поступающих из vboxnet0 в вашу VPN.
Если вы маршрутизируете весь трафик через VPN:
Где
10.8.0.5
находится ваш шлюз tun0 и192.168.5.0/24
диапазон сети vboxnet0.Если вы только маршрутизируете определенный трафик через VPN:
Где
10.8.0.5
ваш tun0 шлюз и192.168.43.95
вашwlan0
шлюз «s и192.168.5.0/24
ваш диапазон vboxnet0 сети.Примечание. Это решение позволяет обращаться с гостевой ОС так же, как и с хост-ОС. Только IP-адреса, настроенные для прохождения VPN в Host OS, будут проходить через него в гостевой системе.
источник
Вот некоторая полезная информация для бродячих ящиков, использующих хост vpn. По сути, вам нужно установить параметр natdnshostresolver1. Обратите внимание, что это НЕ будет работать при использовании параметра public_network в Vagrant.
http://renier.morales-rodriguez.net/post/90674523562/sharing-host-vpn-with-virtualbox-guest http://blog.geekslikeshinythings.com/2016/05/sharing-host-vpn-with-vagrant Роб-allen.html
источник