Interfaces virtuais com diferentes endereços MAC

3

Eu tento descobrir como configurar duas interfaces de rede lógicas (em uma interface física) com endereços MAC separados em uma máquina Linux.

Minha primeira tentativa foi usar o macvlan que parecia funcionar no começo:

[root@localhost ~]# ip link add link enp0s3 name veth0 type macvlan
[root@localhost ~]# ip link set veth0 up 
[root@localhost ~]# dhclient veth0 
[root@localhost ~]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.6  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fe3b:d08b  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:3b:d0:8b  txqueuelen 1000  (Ethernet)
        RX packets 356  bytes 58787 (57.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 210  bytes 24203 (23.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::2462:42ff:fecb:5090  prefixlen 64  scopeid 0x20<link>
        ether 26:62:42:cb:50:90  txqueuelen 0  (Ethernet)
        RX packets 83  bytes 9099 (8.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 34  bytes 3871 (3.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

No entanto, ao varrer a rede local de outra máquina, ambas as interfaces (192.168.1.6 e 192.168.1.11) são mostradas com o mesmo endereço MAC 08: 00: 27: 3b: d0: 8b.

Alguma idéia se isso for possível? Qual é o uso do macvlan se não posso usá-lo para este propósito?

Obrigado.

EDITAR:

Como sugerido por Otheus, tentei o mesmo de antes com as configurações

sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2

Isso aparentemente faz com que as interfaces respondam apenas àquelas solicitações arp explicitamente dirigidas a elas.

Na minha configuração, isso levou à falha de solicitações DHCP para atribuir um endereço IP a veth0. Com um endereço IP estático em veth0, não consegui acessar esse endereço de outros hosts na rede (tentei arp / nmap / ping).

Minha conclusão (preliminar) é que não é possível ter uma interface virtual com um endereço MAC diferente na mesma sub-rede. No entanto, ainda me pergunto qual é o propósito exato do macvlan e por que vejo a interface virtual com seu próprio endereço MAC na máquina local (onde configuro a interface virtual), mas não em outras máquinas.

    
por chwon 13.04.2015 / 13:41

1 resposta

0

O fato de o dhclient ter conseguido atribuir um endereço IP a veth0 indica que o endereço MAC separado está funcionando conforme o esperado. Como você "escaneou a rede"? Um teste melhor seria este: a partir do segundo host, cheirar os pacotes (eu sou old-school e use "tcpdump -e icmp". Então a partir deste host acima, ping via cada interface (ping-I permite que você faça isso) e observe os endereços MAC dos pacotes detectados.

Enquanto isso, existem algumas variáveis sysctl para lidar com pacotes ARP em interfaces IP virtuais. Uma postagem relacionada aqui aponta para esta página que discute o tópico em tamanho. A solução pode ser confundida pelo comutador de rede e como ele escolhe lidar com uma porta com vários MACs conectados diretamente.

    
por 13.04.2015 / 13:55