Назад | Перейти на главную страницу

TFTP для хостов libvirt за NAT

Это заняло у меня целый день, поэтому я подумал, что запишу это здесь!

У меня есть хост LibVirt с NAT вместо моста для размещенных виртуальных машин с использованием правил IPTables по умолчанию, созданных LibVirt при установке. Я мог бы установить ОС с виртуального компакт-диска, а затем получить полное подключение к Интернету, но из-за более сложной природы TFTP* для загрузки PXE маскировка не передавала ответы TFTP обратно виртуальным машинам.

Я мог видеть следующую последовательность пакетов из различных экземпляров tcpdump:

  1. VM udp / ephemeral для хоста LibVirt, запрашивающего udp / 69 файл
  2. LibVirt host udp / ephemeral to TFTP server udp / 69 request file
  3. TFTP-сервер udp / ephemeral2 на хост LibVirt udp / ephemeral

На этом этапе больше ничего не произошло, и время ожидания клиента tftp виртуальной машины истекло.

Я пробовал использовать модули ядра ip_conntrack_tftp / nf_conntrack_tftp и ip_nat_tftp / nf_nat_tftp, но это не помогло.

* Хотя первоначальный запрос от клиента к серверу находится на udp / 69, ответ от сервера к клиенту исходит из псевдослучайного эфемерного порта.

У меня была та же проблема, что и у вас, и я нашел ваш пост.

На моей стороне загрузка nf_nat_tftp на хосте Libvirt было достаточно, чтобы все заработало. Спасибо за подсказку!

Наконец я нашел статья о VMWare у которого была аналогичная проблема, и он попытался переключить тип сетевого интерфейса в LibVirt с virtio на e1000. Мгновенный успех!