Вот шаги, которые я предпринял при создании своей установки:
================================================== ==
(ubuntu1) [KVM] (X86,1) ------ {Маршрутизатор} ------ (X86,2) [VirtualBox] (ubuntu2)
================================================== ==
Теперь я разрешаю пересылку IPv4 на всех 4 машинах (изменить на /etc/sysctl.conf
, и используя sysctl -p
), и установите на всех 4 машинах одну сетевую карту (eth0) и установите ее в /etc/network/interfaces
к руководству).
Затем я начинаю с назначения адресов сетевым адаптерам двух x86, устанавливаю шлюзы по умолчанию и ping
вокруг. Все отлично работает. После этого я назначаю адрес одной виртуальной машине (вместо x86, на которой эта виртуальная машина работает). Опять же - отлично работает. И, наконец, установите IP-адрес второй ВМ (опять же, вместо x86, на котором работает вторая ВМ).
В определенный момент - ping
не работает. Когда я проверяю пакеты, я вижу, что одна виртуальная машина отвечает, а другая - нет. Я проверял это следующими способами:
ping
и tcpdump
на этой машине (ping [IP_ADDRESS_ubuntu2] &
с последующим tcpdump -i eth0
)wireshark
- это.Результат всегда один и тот же - я вижу, что одна виртуальная машина регистрирует эхо-сигналы ICMP-пакетов для другой (это тот, который отвечает), а другая виртуальная машина регистрирует эхо-сигналы и ответы от другой виртуальной машины.
Итак - пакеты ICMP фактически прибыла машина, но ping
ничего не показывает!
Вот пример последней настройки:
================================================== ==
(55.55.55.55) [KVM] ----------- {Маршрутизатор} ----------- [VirtualBox] (22.22.22.22)
================================================== ==
Бег ping
и tcpdump
на 55.55.55.55:
root@55.55.55.55:/home# ping 22.22.22.22 &
root@55.55.55.55:/home# PING 22.22.22.22 (22.22.22.22) 56(84) bytes of data.
root@55.55.55.54:/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
Бег ping
и tcpdump
22.22.22.22:
root@22.22.22.22:/home# ping 55.55.55.55 &
root@22.22.22.22:/home# PING 55.55.55.55 (55.55.55.55) 56(84) bytes of data.
root@22.22.22.22:/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
Однако обратите внимание, что машина «знает», где находится другая машина:
root@55.55.55.55:/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
Идеи?
вывод различных команд:
root@55.55.55.55:/home# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
root@55.55.55.55:/home# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
root@55.55.55.55:/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
Изменение IP-адреса на одной стороне (55.55.55.55 -> 55.55.55.54) получает ответ ICMP, что означает ping
работает.
Смена IP-адреса на другой стороне не имеет значения.
root@55.55.55.55:/home/rad# ifconfig eth0 55.55.55.54/24
root@55.55.55.55:/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
переключение обратно на IP-адрес 55.55.55.55, снова отклоняет ответ ICMP.
Несколько направлений я думаю, но до сих пор не нашел ответа: