Мы запускаем несколько виртуальных машин с использованием KVM с libvirtd с маршрутизируемой сетью (хост-системы маршрутизируют дополнительную подсеть для виртуальных машин). Хост и гостевая ОС - это Gentoo (хост на amd64, гости на x86). Виртуальные машины являются многосетевыми с внутренней и внешней сетями.
Несколько недель назад я начал замечать частые проблемы с подключением к нашему почтовому серверу: время ожидания соединения истекло. Через несколько минут соединение снова заработало. Во время отключения внутренняя сеть в порядке, но трафик через внешнюю сеть (ни входящий, ни исходящий) не проходит.
Путь трассировки отображается как последний переход узла. После него только звезды до максимума прыжков (опять же, туда и обратно).
Однако, если я запустил mtr
или что-то подобное с внешнего хоста, соединение всегда успешно (но только с этого хоста). Из-за этого у подозреваемого возникают проблемы с arp или что-то в этом роде. Я пытался изменить время выдержки на мосту, но безуспешно.
Еще одна интересная вещь: пинг другого хоста в Интернете с виртуальной машины иногда показывает предупреждение о перенаправлении icmp с IP-адресом шлюза интернет-провайдера.
До сих пор я видел эту проблему только на этой единственной виртуальной машине, но установка не так уж отличается от других. Любые идеи?
Редактировать: Вот схема сети:
Хорошо, я решил проблему: проблемы, вызванные пакетами перенаправления ICMP, отправленными хост-системой. Я подозреваю, что проблема была вызвана другим путем маршрутизации пакетов, отправленных виртуальной машиной и удаленным сервером.
После установки sysctl -w net.ipv4.conf.all.send_redirects=0
, хост прекращает отправку сообщений ICMP, и все соединения устанавливаются успешно.