Проблемы с tftp

Здравствуйте.

Проблема в следующем.
Мне надо было поднять tftp - сервер. Запускаю “start tftpd /tftpboot” - запускается. Перед этим сделал /tftpboot доступной (“chmod 777 /tftpboot”). Далее запускаю tftp - клиент для проверки сервера “tftp 127.0.0.1”. Пробую скачать файл из /tftpboot, но файл скачивается не хочет после долгого простоя он выдаёт “Transfer timed out”. В логах tftpd при запуске выдаёт "tftpd: recvfrom: Socket operation on non-socket". Пробовал atftp - ситуация полностью повторилась.
host.allow настроен?
такие дела.
cucullus
hosts.allow настроен?
Fix'd
Дык, их скорее всего через xinetd запускать надо.
То cucullus
cucullus
host.allow настроен?
Да. В /etc файл hosts.allow :
#
# /etc/hosts.allow
#
in.tftpd:ALL
# End of file

То eXire :
eXire
Дык, их скорее всего через xinetd запускать надо.

xinetd прослеживает сетевые запросы, и при допустимом запросе запускает фоновый процесс для обслуживания запроса. В моём случае можно обойтись и прямым запуском : “tftpd start”
debug? verbose? logs? man tftpd?
Разберемся, голубчик!
1. В man-ах tftpd говорят запускать следующим образом
TFTPD(8)                           iputils-                           TFTPD(8)
NAME
       tftpd - Trivial File Transfer Protocol server
SYNOPSIS
       tftpd {directory}
DESCRIPTION
       tftpd is a server which supports the DARPA Trivial File Transfer
И про параметры ни слова - задать можно только директорию.

2. “grep tftpd *” в /var/log/ выдает следующее :
daemon.log:Apr  1 18:33:00 myhost tftpd[3000]: recvfrom: Socket operation on non-socket
errors.log:Apr  1 18:33:00 myhost tftpd[3000]: recvfrom: Socket operation on non-socket
everything.log:Apr  1 18:33:00 myhost tftpd[3000]: recvfrom: Socket operation on non-socket

3. “strace tftpd /tftpboot” выдаёт :
execve("/usr/sbin/tftpd", ["tftpd", "/tftpboot"], [/* 43 vars */]) = 0
brk(0)                                  = 0xf9c000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9660834000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=76588, ...}) = 0
mmap(NULL, 76588, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9660821000
close(3)                                = 0
open("/lib/libresolv.so.2", O_RDONLY)   = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2408\0\0\0\0\0\0@"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=98095, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9660820000
mmap(NULL, 2189960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f9660402000
mprotect(0x7f9660415000, 2097152, PROT_NONE) = 0
mmap(0x7f9660615000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7f9660615000
mmap(0x7f9660617000, 6792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f9660617000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\346\1\0\0\0\0\0@"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1634803, ...}) = 0
mmap(NULL, 3486328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f96600ae000
mprotect(0x7f96601f8000, 2097152, PROT_NONE) = 0
mmap(0x7f96603f8000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14a000) = 0x7f96603f8000
mmap(0x7f96603fd000, 17016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f96603fd000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f966081f000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f966081e000
arch_prctl(ARCH_SET_FS, 0x7f966081e6f0) = 0
mprotect(0x7f96603f8000, 16384, PROT_READ) = 0
mprotect(0x7f9660615000, 4096, PROT_READ) = 0
mprotect(0x7f9660835000, 4096, PROT_READ) = 0
munmap(0x7f9660821000, 76588)           = 0
geteuid()                               = 0
setgid(65534)                           = 0
setuid(65534)                           = 0
ioctl(0, FIONBIO, [1])                  = 0
recvfrom(0, 0x603840, 516, 0, 0x6037f0, 0x603824) = -1 ENOTSOCK (Socket operation on non-socket)
brk(0)                                  = 0xf9c000
brk(0xfbd000)                           = 0xfbd000
gettimeofday({1238635980, 733392}, NULL) = 0
open("/etc/localtime", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2875, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=2875, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9660833000
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\0\0"..., 4096) = 2875
lseek(3, -1838, SEEK_CUR)               = 1037
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0\5\0\0\0\0\0"..., 4096) = 1838
close(3)                                = 0
munmap(0x7f9660833000, 4096)            = 0
getpid()                                = 3000
socket(PF_FILE, 0x80002 /* SOCK_??? */, 0) = 3
connect(3, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 EPROTOTYPE (Protocol wrong type for socket)
close(3)                                = 0
socket(PF_FILE, 0x80001 /* SOCK_??? */, 0) = 3
connect(3, {sa_family=AF_FILE, path="/dev/log"...}, 110) = 0
sendto(3, "<27>Apr  1 18:33:00 tftpd[3000]: "..., 75, MSG_NOSIGNAL, NULL, 0) = 75
exit_group(1)                           = ?
На мой взгляд, что - то происходит в connect она возвращает -1.
kostmitin
То cucullus
Да. В /etc файл hosts.allow :
#
# /etc/hosts.allow
#
in.tftpd:ALL
# End of file
Поставте там еще и строчку
tftpd: ALL
может быть сработает…
recvfrom(0, 0x603840, 516, 0, 0x6037f0, 0x603824) = -1 ENOTSOCK (Socket operation on non-socket)

Проблема в этом. tftpd пытается работать с stdin каналом как с сокетом. Поэтому, еще раз говорю, попробуй запускать через xinetd. Он именно этим и занимается: предоставляет stdin/stdout канал как сокеты.
Прошу прощения за долгий перерыв.

Проблема была решена следующим образом. Так как мне нужно было запускать tftp сервер самому, без xinetd, то я собрал atftp сервер и запускал его с параметром –daemon. Благодаря этому параметру всё стало работать корректно.

Спасибо, всем кто помогал.
 
Зарегистрироваться или войдите чтобы оставить сообщение.