Привет.
У меня есть проблема с доступом из виртуальной машины (OpenVZ) во внешние сети.
Система выглядит так:
хост (openvz) имеет 2 сетевых интерфейса (внешний и внутренний)
eth0:192.168.1.10
eth1:88.88.88.88
виртуалка имеет 2 сетевых интерфейса (внешний и внутренний)
eth0:192.168.1.11
eth1:88.88.88.89
роутинг хоста
88.88.88.89 dev veth1.0 scope link
192.168.1.11 dev veth1.1 scope link
88.88.88.88/29 dev eth1 proto kernel scope link src 88.88.88.88
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
192.168.0.0/16 via 192.168.1.1 dev eth0
default via 88.88.88.87 dev eth1
роутинг виртуалки
192.168.0.0/16 dev eth1 scope link
default dev eth0 scope link
С хоста работает все и всегда, идут пинги в обе сети.
С виртуалки внутренняя сеть работает всегда. А вот со внешней проблемы. Выражаются они в потере пинга на внешние ресурсы. Никаких потерь с хоста в это время нет. Выглядит это так:
--- 8.8.8.8 ping statistics ---
100 packets transmitted, 29 received, 71% packet loss, time 101031ms
rtt min/avg/max/mdev = 53.621/136.956/1001.217/252.854 ms, pipe 2
Причем пакеты теряются явно неслучайным образом, а закономерно. Проходит 8-9 пактов, после чего 25 теряются, 8-9 проходят, 25 теряются.
В момент проходящих пингов tcpdump на внешнем интерфейсе виртуалки такой:
18:07:05.497797 ARP, Request who-has 88.88.88.89 tell 192.168.1.10, length 28
18:07:06.441764 ARP, Request who-has 8.8.8.8 tell 88.88.88.89, length 28
18:07:06.441784 IP 8.8.8.8 > 88.88.88.89: ICMP echo reply, id 24586, seq 190, length 64
18:07:06.441785 IP 8.8.8.8 > 88.88.88.89: ICMP echo reply, id 24586, seq 191, length 64
18:07:06.441789 ARP, Reply 8.8.8.8 is-at 00:18:51:56:0a:ee, length 28
18:07:06.441913 IP 88.88.88.89 > 8.8.8.8: ICMP echo request, id 24586, seq 192, length 64
18:07:06.495874 IP 8.8.8.8 > 88.88.88.89: ICMP echo reply, id 24586, seq 192, length 64
18:07:07.442971 IP 88.88.88.89 > 8.8.8.8: ICMP echo request, id 24586, seq 193, length 64
18:07:07.496909 IP 8.8.8.8 > 88.88.88.89: ICMP echo reply, id 24586, seq 193, length 64
А когда не проходят такой:
18:05:09.481772 ARP, Request who-has 88.88.88.89 tell 192.168.1.10, length 28
18:05:10.426097 IP 88.88.88.89 > 8.8.8.8: ICMP echo request, id 24586, seq 76, length 64
18:05:10.481796 ARP, Request who-has 88.88.88.89 tell 192.168.1.10, length 28
18:05:11.425828 IP 88.88.88.89 > 8.8.8.8: ICMP echo request, id 24586, seq 77, length 64
Если я правильно понимаю, то получив mac-адрес 8.8.8.8 от хоста, виртуалка 8-9 секунд успешно получает от него ICMP echo reply.
Собственно данных наверное уже достаточно. Но еще замечено вот что - если у виртуалки опустить внутренний интерфейс (eth0), то потери пакетов прекращаются.
Подскажите - в чем дело.