Назначение статического IP-адреса гостевой системе VirtualBox с сетью NAT без доступа к гостевой системе

Назначение статического IP-адреса гостевой системе VirtualBox с сетью NAT без доступа к гостевой системе

Я использую VirtualBox 5.2.18 на Ubuntu Server 18.04. У меня есть несколько гостевых машин VirtualBox, которые совместно используют сеть NAT intnet. В настоящее время intnetесть DHCP-сервер (настроенный VirtualBox), который автоматически назначает динамические IP-адреса гостям. Это работает нормально, но я бы хотел, чтобы DHCP-сервер назначал статические IP-адреса определенным гостям на основе MAC-адреса их сетевого интерфейса. Статические IP-адреса можно задать внутри гостей, но это занимает время и зависит от гостевой ОС. Есть ли способ в VirtualBox назначать статические IP-адреса гостям?

В папке установки VirtualBox есть исполняемый файл под названием VBoxNetDHCP. Судя по выводу VBoxNetDHCP, он, похоже, позволяет назначать статический IP по MAC-адресу. Но я не могу заставить его работать, а документация для него фактически отсутствует.

решение1

Обычно, когда я делаю что-то подобное (а делаю я это часто), я использую виртуальную машину, работающую в качестве сетевого сервера, который выполняет такие функции, как DHCP, DNS — как кэширование для всего мира, так и локальный спуфинг и fake.tldт. д.

Самый простой способ — выполнить базовую, чистую установку Debian через образ netinstall — не выбирая ни одну из групп пакетов, кроме опции сервера ssh и, возможно, «стандартных утилит».

После того, как он будет запущен и запущен, чтобы превратить его в DHCP-сервер для вашей внутренней сети виртуальных машин, установите пакет isc-dhcp-server. Затем отредактируйте/etc/dhcp/dhcpd.conf

Вот простой пример из моего. Это устанавливает короткое время аренды (5 минут), устанавливает клиентский домен поиска и т. д. на "fake.tld", направляет их запросы DNS на 192.168.1.2 и выдает адреса в диапазоне 10.99.98.80-100 с 24 битами сетевой маски. Обратите внимание, что виртуальная машина, которая это делает, должна иметь адаптер, настроенный с IP в пределах подсети 10.99.98.0/24.

В дополнение к общему пулу я даю устройству с MAC-адресом 80:c1:6e:2b:b6:cdявно определенной аренды (а также любой другой, optionнапример, DNS-сервер для использования, шлюз и т. д.) для .110ip. Любые такие «статические аренды» должны быть для адресов ВНЕ вашего динамического диапазона, но в пределах подсети, настроенной как в файле конфигурации, так и на сетевом адаптере машины, на которой размещена служба.

Когда вы добавляете новый хост и хотите, чтобы у него был определенный IP, просто добавьте еще одну строфу хоста — имя хоста не обязательно должно совпадать с тем, что отправляет клиент, но оно должно быть уникальным в файле. После того, как вы его добавили, перезапустите службуservice isc-dhcp-server restart

ddns-update-style none;
option domain-name "fake.tld";
option domain-name-servers 192.168.1.2;
option domain-search "fake.tld";
default-lease-time 600;
max-lease-time 720;
authoritative;
log-facility local7;

subnet 10.99.98.0 netmask 255.255.255.0{
    range 10.99.98.80 10.99.98.100;
    option routers 10.99.98.1;
}

host lr-tv {
    hardware ethernet 80:c1:6e:2b:b6:cd;
    fixed-address 10.99.98.110;
    option routers 10.99.98.1;
    option domain-name-servers 192.168.1.2;
}

решение2

Это можно сделать на внутреннем DHCP-сервере VBOX:

1.- Найдите сетевое имя для сервера DHCP:

./VBoxManage list dhcpservers
NetworkName:    HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter
Dhcpd IP:       192.168.56.100
LowerIPAddress: 192.168.56.101
UpperIPAddress: 192.168.56.254
NetworkMask:    255.255.255.0
Enabled:        Yes
Global Configuration:
    minLeaseTime:     default
    defaultLeaseTime: default
    maxLeaseTime:     default
    Forced options:   None
    Suppressed opts.: None
        1/legacy: 255.255.255.0
Groups:               None
Individual Config:

2.- Вам также понадобится MAC-адрес интерфейса вашей виртуальной машины.

PS C:\Program Files\Oracle\VirtualBox> ./VBoxManage list vms
"accadev-ubuntu20.04" {2a98947e-4b8c-4bc3-9441-2b556d0b33a1}
"accadev-ansible01" {1d261714-9b49-47e2-a634-bc0677f5b707}

PS C:\Program Files\Oracle\VirtualBox> ./VBoxManage showvminfo accadev-ubuntu20.04 | Select-String -Pattern 'MAC'

NIC 1:                       MAC: 0800275452FB, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82543GC, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 2:                       MAC: 08002703E954, Attachment: Host-only Interface 'VirtualBox Host-Only Ethernet Adapter', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none

3.- Настройте статическую аренду для этого MAC.

./VBoxManage dhcpserver modify --ifname "VirtualBox Host-Only Ethernet Adapter" --mac-address=08:00:27:f8:31:fa --fixed-address=192.168.56.20

4.- Перезапустите DHCP-сервер, чтобы изменения вступили в силу.

./VBoxManage dhcpserver restart --ifname "VirtualBox Host-Only Ethernet Adapter"

И это все. Вы можете сделать это не только для сетей host-only, но и для любой сети Vbox с подключенным DHCP-сервером.

Ссылка

решение3

Вам не нужно дополнительное программное обеспечение DHCP-сервера, с помощью NAT Network intnetмы можем настроить VirtualBox dhcpserver

VBoxManage dhcpserver add --netname intnet --ip 10.13.13.100 --netmask 255.255.255.0 --lowerip 10.13.13.101 --upperip 10.13.13.254 --enable

Скопируйте гостевой MAC-адрес из настроек, как показано на скриншоте.

введите описание изображения здесь

В нашем dhcpserver давайте добавим Individual Configраздел

VBoxManage dhcpserver modify --netname intnet --mac-address=080027D23E28 --fixed-address=10.13.13.254

P.S. Я помню, что dhcpserver не смог назначить первый IP-адрес диапазона нашего подмножества, тогда я попробовал последний IP-адрес, и это сработало. С тех пор я использую только последний IP-адрес как статический.

Перезагрузите или запустите гостевую виртуальную машину.

На гостевой системе Linux вы можете проверить, назначил ли DHCP IP-адрес, например, из терминала.

$ ip a

Если вы не видите освобожденного IP-адреса, вам необходимо отредактировать файл конфигурации адаптера, например:

$ nano|vi /etc/sysconfig/network-scripts/ifcfg-[ethN|enp0sN]

Обычно ONBOOT=yesэту проблему решает добавление, и, конечно, одна из перезагрузок systemctl restart network systemctl restart network.service, shutdown -h now, reboot now:)

Связанный контент