Conecte sub-redes virtuais de dois hosts físicos

1

Eu tenho proxmox 4 baseado no debian 8 em dois hosts A e B. Ambos possuem dois NICs. Uma NIC de cada host é conectada por meio de um cabo Crossover.

Host A:
eth0: public IP
eth1: 10.0.0.2/24
vmbr1: 10.0.0.1/24

Host B:
eth0: public IP
eth1: 10.0.1.2/24
vmbr1: 10.0.1.1/24

No vmbr1, há um contêiner anexado em cada host com 10.0.x.10. Eu vou denotar assim:

Host A:
veth100i1@if12: 10.0.0.10/24 (IP only visible inside container on eth0)

Host B:
veth100if1@if30: 10.0.1.10/24 (IP only visible inside container on eth0)

Host da tabela de roteamento A:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         X.X.X.X         0.0.0.0         UG    0      0        0 eth0
X.X.X.0         X.X.X.X         255.255.255.224 UG    0      0        0 eth0
X.X.X.0         0.0.0.0         255.255.255.224 U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 vmbr1
10.0.1.0        10.0.0.2        255.255.255.0   UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1

Host B da tabela de roteamento:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         Y.Y.Y.Y         0.0.0.0         UG    0      0        0 eth0
Y.Y.Y.0         Y.Y.Y.Y         255.255.255.224 UG    0      0        0 eth0
Y.Y.Y.0         0.0.0.0         255.255.255.224 U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.0.0.0        10.0.1.2        255.255.255.0   UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 vmbr1

Do Host A, eu posso pingar para

  • seu contêiner em 10.0.0.10
  • B eth1 do host em 10.0.1.2
  • B vmbr1 do host em 10.0.1.1
  • mas não ao contêiner B do host em 10.0.1.10

Do Host B, posso pingar para

  • seu contêiner em 10.0.1.10
  • A eth1 do host em 10.0.0.2
  • A vmbr1 do host em 10.0.1.1
  • mas não no contêiner A do host em 10.0.0.10

Quando eu tento pingar 10.0.1.10 do Host A no container no Host B, posso ver o seguinte na eth1 do Host B:

tcpdump -nni eth1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
12:42:48.567438 ARP, Request who-has 10.0.1.10 tell 10.0.0.2, length 46

No vmbr1 do host B, o tcpdump não mostra nada.

Como encaminhar os pacotes para os contêineres do outro host?

    
por user1283043 17.04.2016 / 12:52

1 resposta

0

Tente definir as interfaces eth1 para endereços em uma terceira sub-rede, como 10.0.3.0/24. Você provavelmente precisará adicionar o encaminhamento conforme listado abaixo também.

Ou tente fazer proxy na solicitação ARP para os servidores disponíveis. Você pode habilitar isso manualmente com um comando como.

systctl -w net.ipv4.conf.eth1.proxy_arp=1

Uma vez que você esteja trabalhando, você pode fazer com que ele seja reiniciado adicionando um arquivo em /etc/sysctl.d contendo uma linha como:

net.ipv4.conf.eth1.proxy_arp = 1

Você também pode precisar ativar o encaminhamento com uma dessas configurações:

net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.eth1.forwarding = 1

Uma abordagem alternativa seria incluir eth1 na definição vmbr1. Esta pode ser uma abordagem melhor a longo prazo.

    
por 17.04.2016 / 15:53