При настройке виртуальных машин с помощью VirtualBox мне часто требуются следующие характеристики
Виртуальная машина имеет статический IP-адрес
хост может получить доступ к виртуальной машине без переадресации портов
Виртуальная машина может получить доступ к Интернету
Я могу перемещать свой ноутбук из сети в сеть (например, из дома в офис или в кафе), не беспокоясь о защите или перенастройке виртуальной машины
Ни один из методов сетевого подключения VirtualBox сам по себе не удовлетворяет этим требованиям.
натуральный Требуется переадресация портов, если вы хотите подключиться к виртуальной машине с хоста.
Только для хоста Виртуальная машина не может получить доступ к Интернету, если хост не является маршрутизатором.
Соединенный Предоставляет доступ к виртуальной машине в сети; не переносится.
Я могу получить нужную настройку, настроив два адаптера на виртуальной машине.
VirtualBox 4.2.12 Ubuntu 12.04 гость
>>В настройках сети VirtualBox настройте сеть только для хоста.
Мой называется vboxnet0, он настраивается вручную: ip 192.168.56.1 маска сети 255.255.255.0 нет dhcp
Затем в настройках сети для виртуальной машины настройте два адаптера:
Адаптер 1 только хост, vboxnet0
Адаптер2 натуральный
Загрузите виртуальную машину и войдите в систему через консоль, предоставляемую VirtualBox.
Запустите это, чтобы увидеть ваши адаптеры:
ls /sys/class/net
В моем случае адаптеры были названы eth1 и eth2 (и вот, интерфейс обратной связи).
Затем отредактируйте свою сетевую конфигурацию.
sudoedit /etc/network/interfaces# The loopback network interfaceauto loiface lo inet loopback# Host-only interfaceauto eth1iface eth1 inet static address 192.168.56.20 netmask 255.255.255.0 network 192.168.56.0 broadcast 192.168.56.255# NAT interfaceauto eth2iface eth2 inet dhcp
Обратите внимание, что eth1
не указан шлюз по умолчанию. eth2
получит шлюз по умолчанию от dhcp.
Обновление за март 2018 года Видеть этот ответ от @Hugo14453 для обновленной версии, которая работает с Ubuntu 17.10 и новее.
Plat0n
18.Апрель.2022 12:09:02
3
Я мог бы решить свою проблему с помощью сочетания христианского длинного решения.Я добавил 2 адаптера:
Адаптер 1 - NAT
Адаптер 2 - только для хоста, vboxnet0
Единственное различие было в файле интерфейсов виртуальной машины:
sudoedit /etc/network/interfaces# The loopback network interfaceauto loiface lo inet loopback# NATauto eth0iface eth0 inet dhcp# Host onlyauto eth1iface eth1 inet dhcp
В конфигурации сети VirtualBox я оставил DHCP отмеченным.
После перезагрузки виртуальной машины все работало нормально.
Конфигурация сети изменилась в 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 generatesudo 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 0enp0s8: 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
Есть еще один простой способ, с помощью которого нам не нужно создавать новый адаптер 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 ACCEPTsudo iptables -A POSTROUTING -t nat -j MASQUERADE
Вам также нужно будет включить переадресацию IP-адресов на хосте, выполнив следующую команду:
sudo sysctl -w net.ipv4.ip_forward=1
Я только что добавил 2 адаптера:
Только адаптер 1host, vboxnet0
Адаптер2NAT
И это работает идеально, я могу получить доступ к виртуальной машине с хоста, и у меня есть Интернет на виртуальной машине.
Maxx
18.Апрель.2022 12:26:22
7
Да, у меня была эта проблема, это была настоящая боль! Но я решил это, просто установив прокси-сервер Squid Cache на свой физический компьютер, и таким образом - мои компьютеры virtualbox, доступные только для хостинга, могли подключаться к Интернету!
Я сделал краткое 3-минутное руководство для всех, кто хочет знать, как это работает.