problema de roteamento intrigante - Pacotes não encaminhados entre a interface pública e a VM com VMs aninhadas

1

Aqui está o meu problema de roteamento um tanto intrigante.

Aqui está a descrição, em palavras. Eu tenho um laptop windows (azul) em que eu corro VMWare Workstation (laranja). O VMWare Workstation possui uma única VM Ubuntu 14.04 (verde). Tem um único NIC que é uma interface do VMWare NAT. O VMWare possui uma interface na rede, conforme vista do windows (saída ipconfig). O VMWare VM (verde) tem um IP de 192.168.115.10/24. A interface do Windows (gateway) é 192.168.115.1.

Dentro da VM Verde, eu tenho uma VM vermelha (KVM). Tem um endereço IP de 10.0.0.2.

Aqui estão as coisas que funcionam.

No Windows:

  • ping 192.168.115.1: funciona
  • ping 192.168.115.10: funciona
  • ssh 192.168.115.10: funciona
  • ping www.google.com: funciona

Do VM Verde (192.168.115.10) o seguinte trabalho.

  • ping 192.168.115.1: funciona
  • ping 192.168.115.10: funciona
  • ping 10.0.0.2: funciona
  • ping www.google.com: funciona

Do Red VM (10.0.0.2) o seguinte trabalho.

  • ping 192.168.115.1: funciona
  • ping 192.168.115.10: funciona
  • ping 10.0.0.2: funciona
  • ping www.google.com: funciona

O que não funciona é isto:

  • No Windows, execute ping 10.0.0.2.

Na VM verde (192.168.115.10), habilitei o encaminhamento de IP.

cat /proc/sys/net/ipv4/ip_forward
1

Na máquina Windows, eu tenho uma entrada na tabela de roteamento que lê:

Active Routes: Network Destination        Netmask          Gateway    
Interface  Metric
          0.0.0.0          0.0.0.0        10.40.2.1      10.40.2.192     10
          0.0.0.0          0.0.0.0        10.40.2.1      10.40.2.186     25
         10.0.0.0    255.255.255.0   192.168.115.10    192.168.115.1     21 [...]

Eu também fiz isso.

No Green VM e Red VM, execute simultaneamente o tcpdump.

tcpdump -n -vvv -i eth0 icmp

Enquanto isso, o Windows executa:

ping 10.0.0.2

Na VM verde (192.168.115.10), vejo

21:48:45.985686 IP (tos 0x0, ttl 128, id 9541, offset 0, flags [none], proto ICMP (1), length 60)
     192.168.115.1 > 10.0.0.2: ICMP echo request, id 1, seq 145, length 40 21:48:50.987085 IP (tos 0x0, ttl 128, id 9543, offset 0, flags [none], proto ICMP (1), length 60)
     192.168.115.1 > 10.0.0.2: ICMP echo request, id 1, seq 146, length 40

Na Red VM (10.0.0.2) não vejo nada.

Por outro lado, se eu executar o ping em 192.168.115.10 (ping 10.0.0.2), vejo o seguinte no tcpdump.

Na VM verde (192.168.115.10), vejo o seguinte na interface br100, aquela com um IP de 10.0.0.1 e o gateway para a VM aninhada.

tcpdump -n icmp -vvvv -i br100
tcpdump: listening on br100, link-type EN10MB (Ethernet), capture size 65535 bytes 
22:16:35.310287 IP (tos 0x0, ttl 64, id 43787, offset 0, flags [DF], proto ICMP (1), length 84)
     10.0.0.1 > 10.0.0.2: ICMP echo request, id 30901, seq 1, length 64 
22:16:35.310678 IP (tos 0x0, ttl 64, id 26368, offset 0, flags [none],  proto ICMP (1), length 84)
     10.0.0.2 > 10.0.0.1: ICMP echo reply, id 30901, seq 1, length 64

Na VM vermelha (10.0.0.2) eu vejo

tcpdump -vvv -n icmp 
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 
02:16:14.710411 IP (tos 0x0, ttl 64, id 42447, offset 0, flags [DF], proto ICMP (1), length 84)
     10.0.0.1 > 10.0.0.2: ICMP echo request, id 30888, seq 1, length 64 
02:16:14.710690 IP (tos 0x0, ttl 64, id 21880, offset 0, flags [none], proto ICMP (1), length 84)
     10.0.0.2 > 10.0.0.1: ICMP echo reply, id 30888, seq 1, length 64

Portanto, por algum motivo, ao fazer ping do Windows, os pacotes chegam a 192.168.115.10 (VM verde) e não chegam a 10.0.0.2 (Red VM).

Não sei o que procurar no iptables, ou talvez em outro lugar.

    
por amrith 21.07.2016 / 04:24

0 respostas