Atribuir um endereço IP estático a um convidado do VirtualBox com uma rede NAT sem acessar o convidado

Atribuir um endereço IP estático a um convidado do VirtualBox com uma rede NAT sem acessar o convidado

Estou usando o VirtualBox 5.2.18 no Ubuntu Server 18.04. Tenho várias máquinas convidadas do VirtualBox compartilhando uma rede NAT intnet. Atualmente, intnetpossui um servidor DHCP (configurado pelo VirtualBox) que atribui automaticamente IP's dinâmicos aos convidados. Isso funciona bem, mas eu gostaria que o servidor DHCP atribuísse IPs estáticos a convidados específicos com base no endereço MAC da interface de rede. IPs estáticos podem ser definidos dentro dos convidados, mas isso leva tempo e depende do sistema operacional convidado. Existe uma maneira, no VirtualBox, de atribuir IPs estáticos aos convidados?

Existe um executável na pasta de instalação do VirtualBox chamado VBoxNetDHCP. A julgar pela saída de VBoxNetDHCP, parece permitir a atribuição de IP estático por endereço MAC. Não consigo fazê-lo funcionar e a documentação é praticamente inexistente.

Responder1

Normalmente, quando faço coisas assim (e faço muito isso), costumo usar uma VM atuando como um servidor de rede que faz coisas como DHCP, DNS - tanto cache para o mundo quanto falsificação local fake.tld- etc.

A maneira mais simples é fazer uma instalação básica do Debian através da imagem netinstall - selecione nenhum dos grupos de pacotes além da opção do servidor ssh e talvez "utilitários padrão".

Quando estiver instalado e funcionando, para transformá-lo em um servidor DHCP para sua rede VM interna, instale o isc-dhcp-serverpacote. Então edite/etc/dhcp/dhcpd.conf

Aqui está um exemplo simples meu. Isso define um tempo de concessão curto (5 minutos), define o domínio de pesquisa do cliente, etc. como "fake.tld", aponta suas consultas de DNS para 192.168.1.2 e fornece endereços no intervalo de 10.99.98.80-100 com 24 bits de máscara de rede. Observe que a VM que faz isso deve ter um adaptador configurado com um IP na sub-rede 10.99.98.0/24.

Além do pool geral, forneço ao dispositivo o endereço MAC de 80:c1:6e:2b:b6:cduma concessão explicitamente definida (bem como qualquer outro optioncomo servidor DNS para usar, gateway, etc) para o .110ip. Qualquer "locação estática" deve ser para endereços FORA do seu intervalo dinâmico, mas dentro da sub-rede configurada no arquivo de configuração E no adaptador de rede da máquina que hospeda o serviço.

Quando você adiciona um novo host e deseja que ele tenha um IP específico, basta adicionar outra sub-rotina de host - o nome do host não precisa corresponder ao que o cliente envia, mas precisa ser exclusivo no arquivo. Depois de adicioná-lo, reinicie o serviçoservice 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;
}

Responder2

Isso pode ser feito no servidor DHCP VBOX interno:

1.- Nome da rede FindOut para servidor 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.- Você também precisa do endereço MAC da interface da sua VM

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.- Configure Static Lease para esse 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.- Reinicie o servidor DHCP para aplicar as alterações

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

E é isso. Você pode fazer isso não apenas para redes somente host, mas para qualquer rede Vbox com um servidor DHCP conectado

Referência

Responder3

Você não precisa de um software de servidor DHCP adicional, com rede NAT intnet, podemos configurar o 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

Copie o endereço MAC do convidado em Configurações, conforme visto na captura de tela

insira a descrição da imagem aqui

Dentro do nosso dhcpserver, vamos adicionar uma Individual Configseção

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

PS Lembro que o dhcpserver não conseguiu atribuir o primeiro endereço IP do intervalo do nosso subconjunto, então tentei o último IP e funcionou, desde então só uso o último IP como estático.

Reinicie ou inicie sua VM convidada

Em um Guest baseado em Linux, você pode verificar se o DHCP atribuiu um IP, como do terminal

$ ip a

Se você não vir um IP liberado, será necessário editar o arquivo de configuração do adaptador, como

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

Normalmente, adicionar ONBOOT=yescorrige esse problema e, claro, uma das reinicializações systemctl restart network systemctl restart network.service, shutdown -h now:)reboot now

informação relacionada