Prioridade de roteamento com pontes macvtap

1

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!

    
por Beakie 19.06.2017 / 21:57

0 respostas