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:
- Como o grawity sugeriu: reservar o endereço IP no servidor DHCP para um nome de host específico.
- Depois que o dispositivo de rede virtual é criado, atribua-lhe um endereço MAC específico. No linux isso pode ser automatizado com script.
- 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.
- 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}