Crie algum endereço MAC virtual

7

Eu quero fazer alguns endereços MAC virtuais para meu adaptador de rede ou adaptador sem fio, para que eu possa se conectar à rede com mais de um endereço IP de um computador ou laptop.

Como posso fazer isso? (Eu sei que é possível, porque um dos meus amigos fez isso na universidade e tem mais de um - às vezes até 255 - endereços IP em uma rede).

    
por Moein Hosseini 01.10.2011 / 15:37

4 respostas

14

Tudo o que você precisa fazer é

ip link add link eth0 address 00:11:11:11:11:11 eth0.1 type macvlan

ligue a interface de rede virtual

ifconfig eth0.1 up

e depois, opcionalmente, adquirir um ip via dhcp com

dhclient -v eth0.1
    
por 20.09.2014 / 19:21
12

Você não precisa mais de um endereço MAC para ter vários endereços IP em uma única interface de rede. Essa técnica é chamada de ip aliasing .

Cada sistema operacional tem uma sintaxe ligeiramente diferente, mas geralmente, para definir diferentes endereços IP na mesma interface, você precisa apenas fazer algo como:

ifconfig eth0 192.168.100.200 netmask 255.255.255.0
ifconfig eth0:1 192.168.120.200 netmask 255.255.255.0
ifconfig eth0:2 192.168.130.200 netmask 255.255.255.0

O exemplo acima funciona no Linux. No BSD, você precisa de algo como:

ifconfig lnc0 192.168.100.200 netmask 255.255.255.0
ifconfig lnc0 192.168.120.200 netmask 255.255.255.0 alias
ifconfig lnc0 192.168.130.200 netmask 255.255.255.0 alias
    
por 01.10.2011 / 16:43
4

Editar: adicione uma sugestão para configurar o dispositivo virtual:

Primeiro, configure um dispositivo adicional, por exemplo:

ifconfig eth0:1 up

Você também pode adicionar um IP a ele. por exemplo:

ifconfig eth0:1 10.0.0.20 broadcast 10.255.255.255 netmask 255.255.255.255

Se você realmente quiser, também pode alterar o endereço MAC:

ip link set eth0:1 address 02:73:53:00:ca:fe

Observe que o segundo bit do primeiro byte deve ser definido para sinalizar um endereço administrado localmente (LAA) - que diz que esse endereço MAC é válido apenas localmente (por exemplo, dentro da rede corporativa) e pode não ser um mundo exclusivo de largura (para que você possa atribuir seus próprios endereços MAC sem a necessidade de registrá-los oficialmente).

    
por 01.10.2011 / 21:27
3

Isso está funcionando para mim no Linux (Kali). Pode ser necessário alterar endereços, gateways ou netmasks com base na sua situação pessoal. Desculpe se você não precisa disso, para a próxima pessoa tropeçar aqui, como eu fiz momentos atrás.

Onde <your-nicN> é o que você vê de um ifconfig , como eth0 ou wlan0

sudo ip link add link <your-nicN> mac0 type macvlan && sudo ifconfig mac0 up

Isso cria uma nova interface "virtual" chamada mac0 e a traz. Eu adicionei o comando up porque primeiro pensei que isso não funcionava, mas sudo ip link show [tab][tab] mais uma tabulação dupla completa com uma lista que incluía o mac0 Eu então comecei a trazê-lo para ifconfig e atribuir um endereço a ele.

Lembre-se de atribuir um endereço IP ou dizer para usar o dhcp

ifconfig mac0 inet 192.168.1.107 netmask 255.255.255.0 #static/manual config

ou

dhclient mac0 # For a dhcp-client, to get ip from router.

se você precisar atribuir um gateway padrão:

sudo ip route add default via 192.168.1.1 

O lugar que eu tenho um pouco disso está aqui: link

Edit3: Eu tentei brincar com "bond" e ifenslave , mas eu preciso estudar um pouco mais sobre isso, eu não consegui entender. O que eu fiz apesar de configurar o "EtherSwitch Router" no GNS3 e depois atribuir uma "nuvem" a dez dos dispositivos macN em um "end" e depois outra "cloud" para um adaptador somente do host vmware, o virtualbox provavelmente funcionam do mesmo jeito, no outro "fim", eu vou mexer com isso um pouco e ver se posso limitar a velocidade nos dispositivos macN para simular uma "agregação" ou se eu puder distribuir a carga pelo dez conexões para largura de banda "aumentada". Talvez se eu definir todos eles para txqueuelen: 10 no Linux. Eu tenho DragonflyBSD no outro "fim" deste, vou tentar conectá-lo ao meu roteador real via GNS3.

Edit2: Aqui está um script rápido para obter o máximo que você precisa com o dhclient. Precisa ser executado como root. Então, crie o arquivo e, em seguida, chmod 750 <script> e execute-o com sudo se puder / precisar. Eu uso assim: ./crazy-mac.sh 20 pega o primeiro argumento e cria muitas novas interfaces, cada uma com seu próprio endereço mac e ip. Não há verificações de sanidade, portanto use-as com sabedoria ou adicione você mesmo;)

Nota: Certifique-se de conectar primeiro com o seu wlan0 normal ou então isto não funcionará. como-conectar-manualmente-para- a-wireless-ap  Além disso, se a sua lista de controle de acesso for mac no roteador, talvez seja necessário fazer algumas sniffing para obter uma lista de endereços mac aceitos pelo roteador. Você precisará editar o script para analisar um arquivo com essa lista e usar uma linha para cada $i na sequência, em vez de permitir que isso crie endereços mac aleatórios.

Nota 2: Você pode querer colocar alguns sleep <N> no loop em algum lugar, isso trará muitos "dispositivos" sequencialmente e provavelmente aumentará algumas bandeiras vermelhas se alguém estiver prestando atenção na rede. Eu não acho que alguns dispositivos aparecerão dessa maneira em circunstâncias normais.

#!/bin/sh
## crazy-mac.sh
for i in $(seq ${1}); do
    ip link add link wlan0 mac${i} type macvlan && \
    ifconfig mac${i} up && \
    dhclient mac${i};
done

E para derrubá-los: Novamente, apenas um script rápido ...

#!/bin/sh
## crazy-down.sh
for i in $(seq ${1}); do
    ifconfig mac${i} down && \
    ip link delete mac${i};
done

E se você precisar de uma lista de endereços mac, isso está funcionando com o bash quando um arquivo é uma lista de um endereço mac por linha no arquivo.

#!/bin/bash
## crazy-mac2.sh
## Usage : crazy-mac2.sh <N> </path/to/mac-list.txt>
MACLIST=($(cat ${2}))

# This is for testing, comment this and uncomment out the other for loop
# if this one works the other should also.
for i in $(seq ${1}); do
    echo "mac${i} :  ${MACLIST[${i}-1]}"; done

#for i in $(seq ${1}); do
#    ip link add link wlan0 mac${i} address ${MACLIST[${i}-1]} type macvlan && \
#    ifconfig mac${i} up && \
#    dhclient mac${i};
#done

unset MACLIST

Edit: Eu estava apenas lendo sobre dispositivos "lagg" (pelo menos para unix) que podem ser usados para agregar várias interfaces em uma única interface "lagg" para aumentar o desempenho ou fornecer fallbacks caso se diminua por qualquer motivo .

Eu só estava pensando em como isso seria útil em uma situação em que a largura de banda era limitada por endereço MAC, ele poderia ser usado em tal situação para que você pudesse pegar todas as interfaces MACN virtuais e agregar as largura de banda em uma única interface e, em seguida, talvez tun / toque em um host virtual ou algo assim. Isso é interessante para mim, vou tentar configurar o limite de largura de banda no meu wifi pessoal por endereço MAC para recriar o cenário e tentar isso eu volto.

    
por 17.02.2014 / 03:30