Я пытаюсь настроить TFTP-сервер в докере в качестве первого шага при настройке загрузки PXE, но не могу подключиться к нему.
Я запускаю контейнер с помощью команды docker run --name tftp -p 0.0.0.0:69:69/udp -v /var/tftpboot/:/var/tftpboot -d local-tftp
.
Изнутри контейнера я могу бежать curl -o ./foo tftp://0.0.0.0/foo
и он работает, извне контейнера я запускаю ту же команду (с правильным ip) с хоста докера или другого компьютера в сети, оба не работают.
Я пробовал отключить брандмауэр на хосте, но это тоже не помогает, неужели это не проблема брандмауэра.
Любая помощь или альтернативное решение по настройке приветствуются.
Оказалось, что это брандмауэр моего клиента блокирует существующее соединение. Отключение его (или разрешение существующего соединения) решило эту проблему.
TFTP использует порт 69 при согласовании передачи, но фактическая передача данных происходит через временный порт; попробуйте с
docker run --name tftp -p 69:69/udp -p 65500-65515:65500-65515/udp v /var/tftpboot/:/var/tftpboot -d local-tftp
или что-то подобное, учитывая временные порты, используемые вашим сервером TFTP.