Interfaces de rede física e virtual com o mesmo MAC. É possível?

0

Primeiro de tudo, sou um novato em redes, então, talvez em algum lugar haja uma resposta para a minha pergunta, mas não consegui encontrar uma resposta.

Bem, eu tenho muitos dispositivos que tem uma conexão com a Internet. Eu quero conectar todos eles em uma rede usando tecnologias VPN. Eu uso tinc-vpn para resolver minhas necessidades e quero usar o DHCP para configurar minha rede.

O problema está aqui: eu configurei com sucesso o servidor DHCP e ele atende bem a todos os dispositivos conectados, mas quando eu zero o dispositivo, ele obtém um novo endereço do DHCP.

Pelo que entendi, quando o dispositivo se torna on-line, ele envia uma solicitação de transmissão especial para a rede, o que contém o MAC do dispositivo. DHCP processa qual solicitação e envia resposta com configurações de rede de volta ao dispositivo. Bem, ifconfig up interface virtual para VPN no dispositivo e atribuir MAC aleatório para ele. Por que eu sempre recebo IP aleatório? Acho que se eu pedir a ifconfig para atribuir o endereço MAC da rede física à interface virtual, resolverei meu problema. É possível? Se não como posso resolver o meu problema? Eu não me preocuparia com isso se o pool de IPs DHCP fosse muito grande, mas ele servisse apenas 250 dispositivos, e o dispositivo se tornasse offline com muita frequência.

Obrigado antecipadamente.

    
por ArhiChief 20.08.2016 / 11:07

3 respostas

0

Mais um.

Eu encontrei um problema porque não posso receber configurações do meu DHCP no dispositivo quando a conexão é estabelecida. O motivo é que tinc-up ou outros scripts que tinc executam após a criação do túnel são síncronos com os serviços tinc e meu cliente dhcp sai por tempo limite antes de tinc fazer o aperto de mão.

Para resolver esse problema, executo o cliente dhcp em segundo plano dentro do script tinc-up .

O script

tinc-up agora é assim:

#!/bin/sh

ifconfig $INTERFACE hw ether fe:fd:00:00:00:00 # set interface hw address to get same IP from leases every time, connection established

dhcpcd -w $INTERFACE & # start dhcp client parralel with handshake proccess of tinc
    
por 22.08.2016 / 11:25
2

Obrigado a todos pela resposta.

Acho que encontrei uma solução excelente, sem DHCP. Baseia-se no cálculo do endereço IP estático exclusivo usando o endereço MAC físico do dispositivo.

Na minha solução, usarei a sub-rede / 16 (10.1.0.0, por exemplo). Então, para todos os dispositivos eu tenho que calcular os últimos 2 octetos de IP. Para os meus cálculos eu uso a função hash CRC-16 no endereço MAC real do dispositivo. No resultado, recebo um inteiro de 2 bytes que contém octetos de endereços IP.

Um exemplo. O endereço MAC do dispositivo é 22-23-B2-72-99-3A . O CRC-16 do MAC será 0x2e49 . 0x2e == 46 e 0x49 = 73, então, o IP do dispositivo será 10.1.46.73.

Prós:

  • Sem DHCP;
  • Já conhecido, IP permanente e exclusivo do dispositivo para todas as redes.

Contras:

  • Colisões do CRC-16 para MAC (dois dispositivos em uma sub-rede com o mesmo IP, mas com um MAC diferente). Mas a probabilidade da situação é insignificante, eu acho.

Todas as sugestões e críticas são bem-vindas.

    
por 20.08.2016 / 17:28
1

Para responder ao título: É possível definir o mesmo MAC em duas interfaces, mas isso pode levar a alguns problemas de rede ou a um comportamento inesperado.

Existem quatro maneiras (estou ciente) de resolver o seu problema:

  1. Como o grawity sugeriu: reservar o endereço IP no servidor DHCP para um nome de host específico.
  2. Depois que o dispositivo de rede virtual é criado, atribua-lhe um endereço MAC específico. No linux isso pode ser automatizado com script.
  3. Solicite um endereço IP específico com seu cliente DHCP. Para tornar isso confiável, você deve tornar a duração da concessão do DHCP muito curta (como 5 minutos ou 1 hora, dependendo da frequência de login da VPN), para que o IP solicitado ainda não seja ocupado por uma concessão ativa.
  4. Como é improvável que seu gateway de VPN mude frequentemente, você pode usar a configuração de IP estático. Você quer que o ip em todos os momentos - por que se preocupar com DHCP, então? Torne o intervalo de IP DHCP menor e use parte do espaço liberado para IPs estáticos ...

Editar:

O script é executado várias vezes para automatizar a criação de novos dispositivos. Nesse caso, você pode calcular o IP (ou MAC) do nome do dispositivo. Exemplo:

PREFIX='tap'
DEV_NUM=${INTERFACE#$PREFIX}
# it's good idea to increment, because devices usually number from 0
# and ip ending with .0 and .1 generally shouldn't be used by a client
DEV_NUM=$(($DEV_NUM+2))
ifconfig ${INTERFACE} 10.0.1.${DEV_NUM} netmask 255.255.0.0
MAC_NUM='printf "%02d\n" ${DEV_NUM}'
ip link set dev ${INTERFACE} address ba:df:ace:00:00:${MAC_NUM}

Ou manter o arquivo atribuindo IP ao nome do dispositivo. Exemplo:

ADDRESS_MAP='/etc/vpn-ip-mapping.conf'
while IFS='='; read -ra line; do
  if [ "${line[0]}" == "${INTERFACE}" ]; then
    IP_ADDRESS=${line[1]}
    ifconfig ${INTERFACE} ${IP_ADDRESS} netmask 255.255.0.0
    break
  fi
done < ${ADDRESS_MAP}
    
por 20.08.2016 / 11:35