Я запускаю 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
}
Кажется, вы запускаете 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 INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT
Видеть этот ответ.
Мне пришлось отредактировать /etc/default/tftpd-hpa
и установите IP-адрес в TFTP_ADDRESS=
переменная.
Это было в Debian Jessie, но может быть то же самое в Ubuntu.