Eu tentei instalar o atftpd hoje.
O pacote foi instalado com sucesso:
# zypper se atftp
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
--+-------+---------------------------------+--------
i | atftp | Advanced TFTP Server and Client | package
Mas o serviço não foi iniciado após a instalação.
# service atftpd start
Job for atftpd.service failed. See "systemctl status atftpd.service" and "journalctl -xn" for details.
# journalctl -xn
-- Logs begin at Thu 2015-03-05 22:21:19 CET, end at Fri 2015-03-13 22:45:01 CET. --
Mar 13 22:43:13 server systemd[1]: Configuration file /usr/lib/systemd/system/atftpd.service is marked executable. Please remove executable permission bits. Proceeding anyway.
[...]
Eu removi o sinalizador de execução e me livrei da mensagem de erro, mas o serviço ainda não inicia.
# chmod -x /usr/lib/systemd/system/atftpd.service
# service atftpd start
Job for atftpd.service failed. See "systemctl status atftpd.service" and "journalctl -xn" for details.
Olhando para o arquivo de definição de serviço systemd, tudo parece bastante simples:
# cat /usr/lib/systemd/system/atftpd.service
[Unit]
Description=Advanced TFTP Server
[Service]
EnvironmentFile=/etc/sysconfig/atftpd
ExecStart=/usr/sbin/atftpd --user $ATFTPD_USER --group $ATFTPD_GROUP $ATFTPD_OPTIONS $ATFTPD_DIRECTORY
StandardInput=socket
E o arquivo de ambiente parece definir valores válidos para todas as variáveis:
# grep ^ATFT /etc/sysconfig/atftpd
ATFTPD_USER="tftp"
ATFTPD_GROUP="tftp"
ATFTPD_OPTIONS="--daemon --logfile /var/log/atftpd/atftp.log"
ATFTPD_USE_INETD="no"
ATFTPD_DIRECTORY="/srv/tftpboot"
ATFTPD_BIND_ADDRESSES=""
A execução manual dos comandos inicia com êxito o daemon:
# systemctl start atftpd.service
Job for atftpd.service failed. See "systemctl status atftpd.service" and "journalctl -xn" for details.
# ps aux | grep tftp[d]
# source /etc/sysconfig/atftpd
# /usr/sbin/atftpd --user $ATFTPD_USER --group $ATFTPD_GROUP $ATFTPD_OPTIONS $ATFTPD_DIRECTORY
# ps aux | grep tftp[d]
tftp 1907 0.0 0.0 11596 152 ? Ss 23:18 0:00 /usr/sbin/atftpd --user tftp --group tftp --daemon --logfile /var/log/atftpd/atftp.log /srv/tftpboot
Como eu sou novo no atftpd, uso o tumbleweed e o systemd eu realmente não sei o que pode estar errado.
Eu configurei --daemon
e --logfile
explicitamente em $AFTPD_OPTIONS
, mas de acordo com o texto de ajuda do arquivo de configuração que deve ser o padrão de qualquer forma.
O texto de diagnóstico completo:
# systemctl start atftpd.service
Job for atftpd.service failed. See "systemctl status atftpd.service" and "journalctl -xn" for details.
# systemctl status atftpd.service
atftpd.service - Advanced TFTP Server
Loaded: loaded (/usr/lib/systemd/system/atftpd.service; static)
Active: failed (Result: resources)
Mar 13 22:59:55 server systemd[1]: atftpd.service failed to run 'start' task: Invalid argument
# journalctl -xn
-- Logs begin at Thu 2015-03-05 22:21:19 CET, end at Fri 2015-03-13 23:33:13 CET. --
Mar 13 23:25:38 server kernel: SFW2-INext-DROP-DEFLT IN=ens32 OUT= MAC=33:33:00:00:00:fb:98:d6:bb:20:90:a2:86:dd SRC=fe80:0000:0000:0000:189b:b08a:4ad3:89bf DST=ff02:0000:0000:0000:00
Mar 13 23:28:00 server kernel: SFW2-INext-DROP-DEFLT IN=ens32 OUT= MAC=33:33:00:00:00:fb:f0:24:75:e4:6e:54:86:dd SRC=fe80:0000:0000:0000:1c6a:034e:81fc:bb59 DST=ff02:0000:0000:0000:00
Mar 13 23:28:15 server kernel: SFW2-INext-DROP-DEFLT IN=ens32 OUT= MAC=33:33:00:00:00:fb:f0:24:75:e4:6e:54:86:dd SRC=fe80:0000:0000:0000:1c6a:034e:81fc:bb59 DST=ff02:0000:0000:0000:00
Mar 13 23:29:43 server kernel: SFW2-INext-DROP-DEFLT IN=ens32 OUT= MAC=33:33:00:00:00:fb:1c:ab:a7:98:9c:80:86:dd SRC=fe80:0000:0000:0000:00d4:2bc4:7bd3:85f3 DST=ff02:0000:0000:0000:00
Mar 13 23:30:01 server cron[1912]: pam_unix(crond:session): session opened for user root by (uid=0)
Mar 13 23:30:01 server systemd[1913]: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Mar 13 23:30:01 server CRON[1912]: pam_unix(crond:session): session closed for user root
Mar 13 23:33:10 server kernel: SFW2-INext-DROP-DEFLT IN=ens32 OUT= MAC=33:33:00:00:00:fb:6c:40:08:ae:e7:3a:86:dd SRC=fe80:0000:0000:0000:6e40:08ff:feae:e73a DST=ff02:0000:0000:0000:00
Mar 13 23:33:11 server kernel: SFW2-INext-DROP-DEFLT IN=ens32 OUT= MAC=33:33:00:00:00:fb:b4:18:d1:dd:52:cc:86:dd SRC=fe80:0000:0000:0000:b618:d1ff:fedd:52cc DST=ff02:0000:0000:0000:00
Mar 13 23:33:13 server kernel: SFW2-INext-DROP-DEFLT IN=ens32 OUT= MAC=33:33:00:00:00:fb:6c:40:08:ae:e7:3a:86:dd SRC=fe80:0000:0000:0000:6e40:08ff:feae:e73a DST=ff02:0000:0000:0000:00
Por que o serviço se recusa a iniciar? O que posso fazer para corrigir isso?
EDITAR:
Resposta muito boa por @jdebp, obrigado!
Para acompanhar, posso verificar se o servidor é iniciado como esperado depois de reverter meus ajustes no arquivo de configuração. Ainda não funciona, mas começa. ;)
Lado do servidor
$ sudo systemctl status atftpd.{socket,service}
atftpd.socket - Advanced tftp Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/atftpd.socket; disabled)
Active: active (running) since Mon 2015-03-16 14:45:50 CET; 5h 19min ago
Listen: [::]:69 (Datagram)
atftpd.service - Advanced TFTP Server
Loaded: loaded (/usr/lib/systemd/system/atftpd.service; static)
Active: active (running) since Mon 2015-03-16 20:04:49 CET; 16s ago
Main PID: 3337 (atftpd)
CGroup: /system.slice/atftpd.service
└─3337 /usr/sbin/atftpd --user tftp --group tftp /srv/tftpboot
Mar 16 20:04:49 server atftpd[3337]: connect: Address family not supported by protocol
Mar 16 20:04:54 server atftpd[3337]: connect: Address family not supported by protocol
Mar 16 20:04:59 server atftpd[3337]: connect: Address family not supported by protocol
Mar 16 20:05:04 server atftpd[3337]: connect: Address family not supported by protocol
Lado do cliente
$ atftp --trace --verbose -l nvidia-bug-report.log.gz -p server 69
Trace mode on.
Verbose mode on.
sent WRQ <file: nvidia-bug-report.log.gz, mode: octet <>>
timeout: retrying...
sent WRQ <file: nvidia-bug-report.log.gz, mode: octet <>>
timeout: retrying...
sent WRQ <file: nvidia-bug-report.log.gz, mode: octet <>>
timeout: retrying...
sent WRQ <file: nvidia-bug-report.log.gz, mode: octet <>>
timeout: retrying...
tftp: aborting
EDIT2:
Forçar o daemon a usar o ipv4 tornou a transferência de arquivos bem-sucedida.
> grep 0\.0 /etc/sysconfig/atftpd /usr/lib/systemd/system/atftpd.socket
/etc/sysconfig/atftpd:ATFTPD_BIND_ADDRESSES="0.0.0.0"
/usr/lib/systemd/system/atftpd.socket:ListenDatagram=0.0.0.0:69