Múltiplas concessões de DHCP na interface única

6

Se eu quiser ter dois endereços IP estáticos, posso fazer algo assim:

auto eth0
    iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    broadcast 192.168.1.255

auto eth0:0
    iface eth0:0 inet static
    address 192.168.1.11
    netmask 255.255.255.0
    broadcast 192.168.1.255

No entanto, gostaria de usar o DHCP para obter endereços. Eu tentei o seguinte:

auto eth0
    iface eth0 inet dhcp

auto eth0:0
    iface eth0:0 inet dhcp

... mas só acabo com eth0 e sem segundo IP. Existe uma maneira simples de fazer isso?

    
por Dan 06.08.2014 / 20:24

2 respostas

5

Depois de um pouco de pesquisa, aparentemente você não pode fazer isso.

A subinterface não pode solicitar outro endereço IP porque está usando o mesmo endereço MAC da interface física e, como as solicitações DHCP são pelo endereço MAC, não é possível obter dois IPs para a mesma interface.

Uma resposta do SuperUser sugere os dois métodos a seguir:

  

Método 1

     

Crie um script que faça algo assim (com uma subinterface   definido no primário):

     
  1. A interface principal emite o DHCP e obtém o endereço IP,
  2.   
  3. macchanger altera o endereço MAC da interface,
  4.   
  5. A subinterface emite o DHCP e obtém o endereço IP,
  6.   
  7. Reverter o endereço mac com o macchanger.
  8.   
  9. Mate o cliente DHCP para que ele não seja executado automaticamente mais tarde.
  10.   

Calcule o tempo de concessão do endereço IP que você recebe e agende   este script para ser executado novamente antes da expiração da concessão.

     

Método 2

     

Para isso, você precisará do iproute2 instalado. O seguinte comando   adiciona uma interface virtual vinculada a uma interface eth0 existente:

ip link add link eth0 address 00:11:22:33:44:55 virtual0 type macvlan
     

Substitua o mac e o nome "virtual0" da interface para o que você quiser   gostar. Ligue-o:

ip link set virtual0 up
     

Em seguida, configure usando dhcpd ou dhclient ou ifconfig conforme necessário. eu tenho   testado isso no Debian squeeze - sua distro pode não ter tudo   necessário ativado no kernel (particularmente em macvlan).

Fonte: SuperUser: Obtendo dois endereços IP em uma placa de rede, usando DHCP

Outras fontes:

por Alaa Ali 08.08.2014 / 00:19
6

Você também precisa verificar se a interface principal está configurada para o modo promíscuo:

ip link set dev eth0 promisc on

Se estiver usando uma máquina virtual, verifique também se o host da VM permite que o convidado use o modo promíscuo.

Você pode reunir tudo isso em /etc/network/interfaces da seguinte forma:

# Primary interface
auto eth0
iface eth0 inet dhcp
    up ip link set dev eth0 promisc on

# Macvlan interfaces
auto vir1
iface vir1 inet dhcp
    pre-up ip link add link eth0 address 02:cd:ab:00:10:01 vir1 type macvlan
    post-down ip link delete vir1

auto vir2   
    iface vir2 inet dhcp
    pre-up ip link add link eth0 address 02:cd:ab:00:10:02 vir2 type macvlan
    post-down ip link delete vir2

... etc

    
por David Harrold 13.06.2017 / 13:53