Obtendo 2 endereços IP em uma placa de rede, usando DHCP

7

Dado: Um computador rodando Linux (CentOS 5.x), uma placa de rede conectada ao switch LAN, uma segunda para o cable modem via cabo crossover. Este computador funciona como um roteador / firewall / traffic shaper para a rede local.

O computador obtém seu endereço IP público de um provedor via DHCP. Eu sei que o meu ISP pode fornecer 2 endereços IP para os clientes (quando o modem a cabo está conectado diretamente a um hub, etc.). Eu gostaria de obter 2 endereços IP em um computador conectado ao ISP. Isso simplificará a segregação de tráfego, NAT e modelagem.

Eu sei que provavelmente posso "falsificar" solicitações DHCP e compartilhar alguns scripts que farão isso, mas me pergunto se alguém sabe de uma maneira mais fácil e adequada.

Pergunta: Como posso fazer um computador Linux solicitar dois endereços IP via DHCP e atribuir os dois a uma placa de rede?

    
por haimg 09.10.2011 / 23:02

2 respostas

6

Como uma resposta DHCP é baseada no endereço MAC da interface solicitante, com uma única interface física, a resposta é "você não pode". A única maneira de fazer isso seria com um script.

Talvez algo como (com uma subinterface definida no primário):

  1. A interface primária emite o DHCP e obtém o endereço IP
  2. macchanger altera o endereço MAC da interface
  3. A subinterface emite o DHCP e obtém o endereço IP
  4. Reverter o endereço mac com o macchanger

Mate o cliente dhcp, para que ele não seja executado automaticamente mais tarde. Calcule o tempo de concessão do endereço IP que você recebe e programe esse script para ser executado novamente antes que a concessão expire.

Atualizar

Para isso, você precisará do iproute2 instalado. O comando a seguir 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 nome mac e "virtual0" da interface pelo que você quiser. Ligue-o:

ip link set virtual0 up

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

    
por 09.10.2011 / 23:21
4

Como o @JesseChisholm sugeriu, é mais fácil perguntar o que é certo ao servidor DHCP em vez de fazer configurações de rede complexas.

Para o OpenWRT, posso simplesmente executar:

 # udhcpc -i eth0:1 -x 0x3d:0100BEEFC0FFEE

O que resultou em ter dois endereços IP do mesmo servidor dhcp.

O 0x36 é a opção 61, que é a opção id do cliente. Após o: existe uma opção de byte hexadecimal. Isto veio da opção de ajuda do udhcpc:

 # udhcp --help
 BusyBox v1.22.1 (2014-10-08 16:34:50 HKT) multi-call binary.

 Usage: udhcpc [-fbqRB] [-t N] [-T SEC] [-A SEC/-n]
 [-i IFACE] [-s PROG] [-p PIDFILE]
 [-oC] [-r IP] [-V VENDOR] [-F NAME] [-x OPT:VAL]... [-O OPT]...

 ...
 -x OPT:VAL     Include option OPT in sent packets (cumulative)
                Examples of string, numeric, and hex byte opts:
                -x hostname:bbox - option 12
                -x lease:3600 - option 51 (lease time)
                -x 0x3d:0100BEEFC0FFEE - option 61 (client id)
    
por 03.06.2016 / 23:48