Vous pouvez utiliser macvlan pour créer plusieurs interfaces virtuelles avec différentes adresses MAC.
ip link add link eth0 address 00:11:11:11:11:11 eth0.1 type macvlan
ip link add link eth0 address 00:22:22:22:22:22 eth0.2 type macvlan
En théorie, cela devrait être tout ce dont vous avez besoin, bien qu'à un moment donné, quelque chose se soit cassé dans le noyau et qu'il obligerait à utiliser un MAC pour tout. Je ne sais pas quel est le statut de cela; j'espère que c'est réparé.
Sinon, vous pouvez utiliser des arptables pour réécrire les adresses MAC sur la sortie basée sur l'interface de sortie ou sur l'entrée basée sur l'IP de destination:
arptables -A OUT -o eth0.1 --arhln 06 -j mangle --mangle-hw-s 00:11:11:11:11:11
arptables -A OUT -o eth0.2 --arhln 06 -j mangle --mangle-hw-s 00:22:22:22:22:22
arptables -A IN -d 192.168.1.1 --arhln 06 -j mangle --mangle-hw-d 00:11:11:11:11:11
arptables -A IN -d 192.168.1.2 --arhln 06 -j mangle --mangle-hw-d 00:22:22:22:22:22
Malheureusement, arptables est également assez buggé dans mon expérience.
La raison pour laquelle votre pont et votre interface TAP partagent la même adresse MAC est que le pont n'a pas de MAC jusqu'à ce qu'il soit lié à une interface. Si vous créez un pont avec BRCTL et faites un "show brctl", vous trouverez que le pont a des ports vides. (Aucune interface ne lui est liée) En liant TAP0 à br0, naturellement, il apparaîtra comme le même MAC. J'ai créé un pont de test, pour illustrer.
# brctl addbr testbr0
J'ai créé trois TAPS de test. La sortie de "brctl showmacs testbr0".
Comme vous pouvez le voir, chaque port de pont a une adresse MAC unique, et le pont doit afficher son MAC, en tant que première interface liée. Si vous pontez une interface réseau physique, le pont Ethernet héritera de son adresse MAC et déplacera toutes les interfaces virtuelles vers le bas. Exemple de liaison eth0, au pont de test.
Utiliser à nouveau "brctl show";
les interfaces TAP ont baissé d'une, même si eth0 est toujours sur PORT 4. Vous avez toujours des adresses MAC uniques. Si le pont Ethernet est lié à une interface source-route, vous n'avez pas le choix d'utiliser une adresse IP ou DHCP. Pour ce que ça vaut, si vous pontez une interface source-route, vous afficherez une adresse MAC "non locale". Il s'agit de l'adresse MAC du routeur du saut suivant. Je sais que dans RedHat, il y a une option pour spécifier une IP source, en utilisant IFCONFIG. Ma première option serait de consulter la référence de commande IP, car je pense que vous pouvez spécifier une IP source. Je ne l'ai jamais essayé.
la source
Essayez de créer des
tap
périphériques ou tout autre périphérique Ethernet virtuel avec les adresses MAC et IP nécessaires, puis connectez-les à un pont avec eth0.la source
Il semble que vous puissiez utiliser vconfig pour créer plusieurs adresses vlan sur le même Ethernet physique, chacune avec des adresses mac différentes.
la source