tftpd разрешает соединения, но время передачи файла истекает

Я использую Ubuntu 12.04 в виртуальной машине VirtualBox. Я установил tftpd-hpa пакет. Я использую это для загрузки встроенной системы Linux, и я заметил, что при первой загрузке моей виртуальной машины это не будет работать, но перезапуск tftpd-hpa Сервис заставил его работать каждый раз, до следующей загрузки.

Сегодня я запустил скрипт оболочки из Texas Instruments, который мог испортить мою конфигурацию tftpd, и теперь я не могу заставить его работать вообще. Я могу подключиться, но передает тайм-аут, даже на localhost (я также пробовал 127.0.0.1):

steve@steve-VirtualBox:~$ tftp
tftp> connect localhost
tftp> status
Connected to localhost.
Mode: netascii Verbose: off Tracing: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
tftp> get zImage
Transfer timed out.

tftp> 

Обратите внимание, что /var/lib/tftpboot/zImage существует, однако я получаю точно такое же поведение для файла, который не существует.

Вот содержимое /etc/default/tftpd-hpa:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Вот /etc/xinetd.d/tftp:

service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /var/lib/tftpboot
disable = no
}

5 ответов

Решение

Кажется, вы запускаете tftpd-hpa из xinetd и одновременно как отдельную службу. Пожалуйста, выберите один и отключите другой.

Например, набор disable = yes в /etc/xinetd.d/tftp и перезапустите xinetd. Затем перезапустите автономный сервис service tftpd-hpa restart и попробуйте снова

Установка TFTP_ADDRESS="0.0.0.0:69" у меня не сработала, по крайней мере для обоих интерфейсов. настройка TFTP_ADDRESS=":69" сделал работу

1) удалить / переустановить tftpd-hpa

2) добавить в /etc/default/tftpd-hpa

RUN_DAEMON="yes"

Возможно, вам придется проделать дыру в брандмауэре. Начиная с шага 4 http://www.thelinuxdaily.com/2010/02/guide-on-tftp-server-setup-in-fedora/:

Вставьте следующую строку перед строкой "COMMIT" в /etc/sysconfig/iptables, а затем перезапустите службу с помощью "service iptables restart":

-A ВХОД -m состояние -state NEW -m udp -p udp --dport 69 -j ПРИНЯТЬ

Смотрите этот ответ.

Мне пришлось редактировать /etc/default/tftpd-hpa и установите IP-адрес в TFTP_ADDRESS= переменная.

Это было в Debian Jessie, но может быть то же самое в Ubuntu.

Другие вопросы по тегам