При настройке виртуальных машин с VirtualBox я часто хочу, чтобы следующие характеристики
Ни один из VirtualBox Методы сетевого подключения удовлетворяют этим требованиям самостоятельно.
NAT
Требуется переадресация портов, если вы хотите подключиться к виртуальной машине с хоста.
Только для хоста
VM не может получить доступ к Интернету, если хост не является маршрутизатором.
Bridged
Выставляет VM в сети; не переносимый.
Я могу получить нужную настройку, настроив два адаптера на виртуальной машине.
VirtualBox 4.2.12
Ubuntu 12.04 guest
В VirtualBox> Настройки> Сеть настройте сеть только для хоста.
Шахта называется vboxnet0, она настраивается вручную:
ip 192.168.56.1
маска сети 255.255.255.0
no dhcp
Затем в настройках сети для виртуальной машины установите два адаптера:
Адаптер 1
только хост, vboxnet0 [ 1121]
Adapter2
NAT
Загрузите виртуальную машину и войдите в систему через консоль VirtualBox.
Запустите это, чтобы увидеть ваши адаптеры:
ls /sys/class/net
В моем случае адаптеры были названы eth1 и eth2 (и вот, интерфейс обратной связи).
Затем отредактируйте конфигурацию вашей сети.
sudoedit /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# Host-only interface
auto eth1
iface eth1 inet static
address 192.168.56.20
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
# NAT interface
auto eth2
iface eth2 inet dhcp
Обратите внимание, что для eth1
не указан шлюз по умолчанию. eth2
получит шлюз по умолчанию от dhcp.
См. этот ответ из @ Hugo14453 для получения обновленной версии, которая работает с Ubuntu 17.10 и новее.
Я мог бы решить мою проблему с помощью решения Кристиана Лонга. Я добавил 2 адаптера:
Адаптер 1 - NAT
Адаптер 2 - только хост, vboxnet0
Единственное отличие было в файле интерфейсов ВМ:
sudoedit /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp
[ 115] В конфигурации сети VirtualBox я оставил проверенный DHCP.
После перезагрузки виртуальной машины все работало нормально.
Я только что добавил 2 адаптера:
Адаптер 1 только для хоста, vboxnet0
Адаптер 2 NAT
И он отлично работает, я могу получить доступ к виртуальной машине с хоста, а у меня интернет на вм.
Конфигурация сети изменилась в Ubuntu 17.10.1. Теперь вы используете конфигурацию netplan.
Я следовал этому руководству здесь
В качестве миграции ответа Кристиана сделайте следующее:
Создайте новый файл конфигурации в / etc / netplan для хранения ваша конфигурация адаптера только для хоста.
Например, sudo nano /etc/netplan/02-netcfg.yaml
Введите следующее, чтобы настроить статический IP-адрес 192.168.56.12, где enp0s3
- это имя вашего адаптера только для хоста.
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 192.168.56.12/24
dhcp4: no
Затем выполните следующие две команды:
sudo netplan generate
sudo netplan apply
NAT должен работать без конфигурации, запустите ifconfig
, чтобы увидеть результат:
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.12 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::a00:27ff:fe06:6cdd prefixlen 64 scopeid 0x20<link>
ether 08:00:27:06:6c:dd txqueuelen 1000 (Ethernet)
RX packets 252 bytes 23076 (23.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 208 bytes 30015 (30.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.3.15 netmask 255.255.255.0 broadcast 10.0.3.255
inet6 fe80::a00:27ff:fe4d:a6b8 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:4d:a6:b8 txqueuelen 1000 (Ethernet)
RX packets 95 bytes 94894 (94.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 85 bytes 7436 (7.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Да, у меня была эта проблема, это была полная боль! Но я решил эту проблему, просто установив прокси-сервер Squid Cache на свой физический ПК, и таким образом - мои виртуальные ПК с виртуальной коробкой только для хоста могли подключаться к Интернету! кто хочет это как работает! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/
Существует еще один простой способ, при котором нам не нужно создавать новый адаптер NAT.
На хост-машине добавьте следующие правила iptables. Это будет пересылать пакеты через хост и в Интернет:
sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Вам также необходимо включить переадресацию IP на хосте, введя следующую команду:
sudo sysctl -w net.ipv4.ip_forward=1