LINUX.ORG.RU

Некорректная работа tftp на CentOS

 ,


0

1

Здравствуйте, уважаемые форумчане! Прошу сильно не пинать за «избитую» тему насчёт tftp, но по своей проблеме ничего найти не смог, да и с Linux-ом, если честно, не совсем на «ты»… В общем, есть сервер с CentOS 7, на нём поднято несколько программ для мониторинга сетевого оборудования (Nagios, Cacti и пр.). Хочу использовать его и как хранилище конфигов мониторируемого оборудования (есть желание поставить Rancid). Для сбора конфигов не хочется использовать стандартный скрипт и логику Rancid-а (парсинг вывода команды show running-configuration) - это долго и трафика съедает много - решил использовать более быстрый, на мой взгляд, способ: скопировать файл конфига на сервер посредством tftp. Установил tftp, tftp-server, xinetd (+ подтянулся один зависимый пакет). В качестве рабочей папки выбрал /var/share. Содержимое /etc/xinet.d/tftp:

service tftp
{ socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -c -s -vvv /var/share
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}

Судя по man-у, параметр -c должен создавать файл. Т.е. я хочу, чтоб tftpd сам создал файл, в который будет писать данные. Состояние сервисов:

[root@localhost xinetd.d]# systemctl status tftp
● tftp.service - Tftp Server
Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
Active: inactive (dead) since Ср 2019-11-06 13:43:37 MSK; 16min ago
Docs: man:in.tftpd
Process: 7626 ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot (code=exited, status=0/SUCCESS)
Main PID: 7626 (code=exited, status=0/SUCCESS)

ноя 06 13:28:37 localhost.localdomain systemd[1]: Started Tftp Server.

[root@localhost xinetd.d]# systemctl status xinetd
● xinetd.service - Xinetd A Powerful Replacement For Inetd
Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: enabled)
Active: active (running) since Ср 2019-11-06 13:28:34 MSK; 32min ago
Process: 7282 ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid $EXTRAOPTIONS (code=exited, status=0/SUCCESS) Main PID: 7283 (xinetd)
CGroup: /system.slice/xinetd.service
└─7283 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid

ноя 06 13:28:34 localhost.localdomain xinetd[7283]: Started working: 2 available services

Захожу на какой-либо маршрутизатор и пробую слить конфиг:

<atn3-129-********>tftp 10.176.241.252 vpn-instance ***** put vrpcfg.zip
Info: Transfer file in binary mode.
Uploading the file to the remote TFTP server. Please wait…

Error: Failed to transfer the file completely because of network connection error.

Хотя адрес сервера пингуется. Захожу в папку /var/share и вижу там файл vrpcfg.zip размером 1 байт… Пробую отправить со своего компа файл на сервер… Сервер файл принимает. Смотрю логи (tail -1000 /var/log/messages, IP компа: 10.176.251.250, IP маршрутизатора: 10.176.245.129:

Nov 6 13:28:34 localhost xinetd[7283]: xinetd Version 2.3.15 started with libwrap loadavg labeled-networking options compiled in.
Nov 6 13:28:34 localhost xinetd[7283]: Started working: 2 available services
Nov 6 13:28:37 localhost systemd: Started Tftp Server. (это я на всякий случай перезапустил tftp)
Nov 6 13:29:01 localhost xinetd[7283]: START: tftp pid=9345 from=10.176.245.129
Nov 6 13:29:01 localhost in.tftpd[9346]: WRQ from 10.176.245.129 filename vrpcfg.zip
Nov 6 13:29:06 localhost in.tftpd[9775]: WRQ from 10.176.245.129 filename vrpcfg.zip
Nov 6 13:29:11 localhost in.tftpd[10219]: WRQ from 10.176.245.129 filename vrpcfg.zip
Nov 6 13:29:16 localhost in.tftpd[10638]: WRQ from 10.176.245.129 filename vrpcfg.zip
Nov 6 13:29:21 localhost in.tftpd[11804]: WRQ from 10.176.245.129 filename vrpcfg.zip
Nov 6 13:29:21 localhost in.tftpd[11804]: WRQ from 10.176.245.129 filename vrpcfg.zip
Nov 6 13:39:23 localhost in.tftpd[32236]: WRQ from 10.176.251.250 filename D-Link_images.vss

Т.е. видно, что маршрутизатор что-то отправляет на сервер несколько раз и, видимо, не удачно. Комп отправил файл сразу же… Не понимаю, куда дальше копать… Конкретно логов tftp/xinetd нет (не пишет?). Помогите, пожалуйста, советом… Может, есть какой-нибудь альтернативный tftp?

Попробовал atftp - результат аналогичный…

Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: Advanced Trivial FTP server started (0.7.2) Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: started by inetd Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: logging level: 7 Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: directory: /var/share/ Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: user: nobody.nogroup Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: log file: /var/log/atftp_log Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: not forcing to listen on local interfaces. Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: server timeout: 60 Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: tftp retry timeout: 5 Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: maximum number of thread: 100 Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option timeout: enabled Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option tzise: enabled Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option blksize: enabled Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option multicast: enabled Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: address range: 239.255.0.0-255 Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: port range: 1758 Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:45302 Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:52720 Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:42943 Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:39357 Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:47104 Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting

SElinux - выключен, если что…

hamrad ()
Ответ на: комментарий от anonymous

Прошу прощения: не совсем разобрался с разметкой Markdown… Первое сообщение исправил, второе - перепишу здесь с учётом форматирования. Лог atftp:

Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: Advanced Trivial FTP server started (0.7.2)
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: started by inetd
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: logging level: 7
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: directory: /var/share/
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: user: nobody.nogroup
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: log file: /var/log/atftp_log
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: not forcing to listen on local interfaces.
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: server timeout: 60
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: tftp retry timeout: 5
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: maximum number of thread: 100
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option timeout: enabled
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option tzise: enabled
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option blksize: enabled
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: option multicast: enabled
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: address range: 239.255.0.0-255
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173644048192]: port range: 1758
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:45302
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused
Nov 06 15:16:58 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting
Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast
Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:52720
Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip
Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused
Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused
Nov 06 15:17:03 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting
Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast
Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:42943
Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip
Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused
Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused
Nov 06 15:17:08 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting
Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast
Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:39357
Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip
Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused
Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused
Nov 06 15:17:13 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting
Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: socket may listen on any address, including broadcast
Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: Creating new socket: 10.176.241.252:47104
Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: Fetching from 10.176.245.129 to vrpcfg.zip
Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: recvmsg: Connection refused
Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: tftpd_file.c: 338: recvfrom: Connection refused
Nov 06 15:17:18 localhost.localdomain atftpd[12874.140173628856064]: Server thread exiting

hamrad ()

В общем, отказался я от «стандартного» tftp и установил atftp из исходников по этому ману: Hippolab. Настроил, чтоб tftp запускался при обращении к нему (чтоб постоянно не висел в памяти). Работает неплохо. А проблема моя решилась, благодаря подробному логу atftp: как оказалось, проблема была не в сервере, а в специфике работы маршрутизаторов, с которых предполагалось сливать конфиг. Так что, придётся заниматься сетью… Но это уже другая история :)

hamrad ()