Estes são os passos que tomei na construção da minha configuração:
=============================================== =====
(ubuntu1) [ KVM ] (X86,1) ------ { Roteador } ------ (X86,2) [< strong> VirtualBox ] (ubuntu2)
=============================================== =====
Agora, permito o encaminhamento IPv4 em todas as 4 máquinas (altere em /etc/sysctl.conf
e use sysctl -p
) e defina todas as 4 máquinas para ter uma única NIC (eth0) e defina em /etc/network/interfaces
como manual ).
Em seguida, começo atribuindo endereços às NICs dos dois x86s, defino os gateways padrão e ping
ao redor. Tudo funciona muito bem. Depois disso, atribuo um endereço a uma VM (em vez do x86 no qual essa VM está sendo executada). Mais uma vez - funciona muito bem. E finalmente - defina um endereço IP para a segunda VM (novamente, em vez do x86 no qual a segunda VM está sendo executada).
Em um certo ponto - ping
não funciona. Quando eu verifico os pacotes, vejo que uma VM responde e a outra não. Eu verifiquei isso das seguintes maneiras:
ping
e tcpdump
nesta máquina ( ping [IP_ADDRESS_ubuntu2] &
seguido por tcpdump -i eth0
) wireshark
-ing. O resultado é sempre o mesmo - eu posso ver uma VM registrando echos de pacotes ICMP na outra (essa é a que responde) e a outra VM registra ecos e respostas da outra VM.
Então - os pacotes ICMP realmente chegam na máquina, mas ping
não mostra nada!
Veja um exemplo da última configuração:
=============================================== =====
(55.55.55.55) [ KVM ] ----------- { Roteador } ----------- [ VirtualBox ] (22.22.22.22)
=============================================== =====
Executando ping
e tcpdump
em 55.55.55.55:
[email protected]:/home# ping 22.22.22.22 &
[email protected]:/home# PING 22.22.22.22 (22.22.22.22) 56(84) bytes of data.
[email protected]:/home# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
07:10:11.758872 IP 55.55.55.55 > 22.22.22.22: ICMP echo request, id 5499, seq 6, length 64
07:10:12.758785 IP 55.55.55.55 > 22.22.22.22: ICMP echo request, id 5499, seq 7, length 64
07:10:13.766994 IP 55.55.55.55 > 22.22.22.22: ICMP echo request, id 5499, seq 8, length 64
07:10:14.767637 IP 55.55.55.55 > 22.22.22.22: ICMP echo request, id 5499, seq 9, length 64
Executando ping
e tcpdump
em 22.22.22.22:
[email protected]:/home# ping 55.55.55.55 &
[email protected]:/home# PING 55.55.55.55 (55.55.55.55) 56(84) bytes of data.
[email protected]:/home# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
15:58:01.883915 IP 22.22.22.22 > 55.55.55.55: ICMP echo request, id 4099, seq 8, length 64
15:58:01.884390 IP 55.55.55.55 > 22.22.22.22: ICMP echo reply, id 4099, seq 8, length 64
15:58:02.885795 IP 22.22.22.22 > 55.55.55.55: ICMP echo request, id 4099, seq 9, length 64
15:58:02.886298 IP 55.55.55.55 > 22.22.22.22: ICMP echo reply, id 4099, seq 9, length 64
Note, porém, que a máquina "sabe" onde a outra máquina está:
[email protected]:/home/rad# ip route get 22.22.22.22
22.22.22.22 via 55.55.55.1 dev eth2 src 55.55.55.55
cache
Idéias?
saída de vários comandos:
[email protected]:/home# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
[email protected]:/home# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
[email protected]:/home# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 55.55.55.1 0.0.0.0 UG 0 0 0 eth0
55.55.55.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Uma alteração de um endereço IP de um lado (55.55.55.55 - > 55.55.55.54) recebe uma resposta do ICMP - o que significa ping
funciona.
Uma alteração de um endereço IP no outro lado não faz diferença.
[email protected]:/home/rad# ifconfig eth0 55.55.55.54/24
[email protected]:/home/rad# ping 22.22.22.22
PING 22.22.22.22 (22.22.22.22) 56(84) bytes of data.
64 bytes from 22.22.22.22: icmp_seq=1 ttl=63 time=1.05 ms
64 bytes from 22.22.22.22: icmp_seq=2 ttl=63 time=0.568 ms
64 bytes from 22.22.22.22: icmp_seq=3 ttl=63 time=0.692 ms
64 bytes from 22.22.22.22: icmp_seq=4 ttl=63 time=0.597 ms
voltando ao endereço IP 55.55.55.55, nega a resposta do ICMP novamente.
Várias direções em que estou pensando, mas ainda não encontrei uma resposta: