Eu tenho uma máquina com 2 placas ethernet. Um com interface única, um com 4.
Eu pretendo usar a placa de interface única (que deve ser conectada à minha LAN) como o meio de acessar (ssh etc) esta máquina (o host).
Eu, então, pretendo ter 4 VMs em execução (usando libvirt), uma em cada uma das quatro portas na segunda placa, usando o macvtap. Alguns estarão se conectando à minha LAN, alguns à minha DMZ (gerenciados por uma antiga sonicwall).
Exemplo:
<network>
<name>my-ubuntu-network</name>
<uuid>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</uuid>
<forward dev='e1' mode='bridge'>
<interface dev='e1'/>
</forward>
</network>
Eu configurei duas VMs e fiz elas funcionarem bem. Todas as minhas interfaces obtêm o IP correto do DHCP do Sonic pelo MAC. O MAC definido em ambos os meus domínios também obtém os IPs corretos da sonicwall (ambos estão na DMZ).
Eu, então, criei a terceira VM (novamente para minha DMZ). Ele obteve o IP correto da sonicwall, mas não consigo pingar do host.
Quando me conecto ao seu console, pode executar ping em outros dispositivos na DMZ. Se eu me conectar a um dos dois primeiros convidados, eu posso fazer pingar. Se eu tentar de uma máquina física diferente na minha LAN (quem pode ver a DMZ), eu posso fazer ping nela. Parece que o único lugar onde não consigo pingar o convidado é o host .
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: e4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:05 brd ff:ff:ff:ff:ff:ff
3: e0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:50 brd ff:ff:ff:ff:ff:ff
4: e3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:04 brd ff:ff:ff:ff:ff:ff
5: e2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:07 brd ff:ff:ff:ff:ff:ff
6: e1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:06 brd ff:ff:ff:ff:ff:ff
7: macvtap0@e2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 500
link/ether 00:00:00:00:00:73 brd ff:ff:ff:ff:ff:ff
8: macvtap1@e3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 500
link/ether 00:00:00:00:00:03 brd ff:ff:ff:ff:ff:ff
9: macvtap2@e4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 500
link/ether 00:00:00:00:00:33 brd ff:ff:ff:ff:ff:ff
As interfaces parecem certas (para mim).
A primeira VM está configurada para usar e2. A segunda VM está configurada para usar o e3. A terceira VM está configurada para usar e4.
Se eu arp (no host) antes de pingar qualquer VM, eu entendo isso.
arp -a
? (10.0.20.10) at 00:00:00:00:00:a6 [ether] on e4
? (10.0.10.100) at 00:00:00:00:00:cb [ether] on e0
10.0.20.10 é o gateway da DMZ.
10.0.10.100 é o IP do meu laptop que eu tenho SSH para o host usando.
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.20.10 0.0.0.0 UG 202 0 0 e4
default 10.0.10.10 0.0.0.0 UG 203 0 0 e0
default 10.0.20.10 0.0.0.0 UG 204 0 0 e3
default 10.0.20.10 0.0.0.0 UG 205 0 0 e2
default 10.0.10.10 0.0.0.0 UG 206 0 0 e1
10.0.10.0 0.0.0.0 255.255.255.0 U 203 0 0 e0
10.0.10.0 0.0.0.0 255.255.255.0 U 206 0 0 e1
10.0.20.0 0.0.0.0 255.255.255.0 U 202 0 0 e4
10.0.20.0 0.0.0.0 255.255.255.0 U 204 0 0 e3
10.0.20.0 0.0.0.0 255.255.255.0 U 205 0 0 e2
Isso prova que a rota está usando e4 e não e0 (como eu gostaria).
Se eu pingar a primeira VM (10.0.20.71) do host, obtenho uma resposta.
Então eu arp.
arp -a
? (10.0.20.71) at 00:00:00:00:00:73 [ether] on e4
? (10.0.20.10) at 00:00:00:00:00:a6 [ether] on e4
? (10.0.10.100) at 00:00:00:00:00:cb [ether] on e0
Espera-se.
Se eu pingar a VM 3 (10.0.20.72) (minha mais recente, problemática, com uma rede definida como e4), ela falhará. Quando eu corro arp eu recebo:
arp -a
? (10.0.20.71) at 00:00:00:00:00:73 [ether] on e4
? (10.0.20.10) at 00:00:00:00:00:a6 [ether] on e4
? (10.0.10.100) at 00:00:00:00:00:cb [ether] on e0
? (10.0.20.72) at <incomplete> on e4
Como você pode ver, está mostrando incompleto.
Estou executando o arch linux no host.
Alguém pode sugerir o que preciso fazer para resolver isso? Alguém pode confirmar que identifiquei o problema corretamente (rota "prioridade").
Acho que preciso alterar a métrica de e0 para que fique no topo da lista.
Basicamente, alguém pode me dar alguma informação sobre o que está acontecendo? O que devo ler / fazer para corrigir isso?
Obrigado!
Tags ip route arch-linux libvirtd macvlan