Это может выглядеть как повторяющийся вопрос, но я выполнил свою долю поиска, но не смог найти никакого решения.
Я создал tftp-сервер, этот сервер при доступе с локального tftp-клиента через loopback получает и помещает файл в порядке. Когда я пытаюсь получить доступ к серверу через внешнего клиента, время ожидания запроса истекает. Соединение установлено. Я вижу соединение как подключенное в tftp-клиенте, проблем нет. Передача файлов не начинается.
Клиент подключен напрямую к ХОСТУ через кабель Ethernet, я создал локальную сеть с двумя устройствами. между ними работают пинги.
Сначала я думал, что это проблема брандмауэра, теперь я отключил брандмауэр, разрешил ВХОД и ВЫВОД на настроенном порту 69 в iptables. также udp разрешен на порту 69.
Я также не запускаю несколько экземпляров сервера tftpd-hpa, он работает как демон, и netstat -aup работает только один tftp-сервер.
Клиенты делают правильные запросы, я их вижу в wirehark, но в ответ ничего не выходит.
а сбой - всегда ТАЙМАУТ.
**firewall disabled**
**ports allow connection **
**file transfer fails**
** outgoing tftp request as a client to other tftp servers is alos blocked **
Обновление2:
Я не был уверен насчет брандмауэра, поскольку этот ноутбук был выпущен моим работодателем, и я скептически отношусь к тому, что они не позволят отключить брандмауэр. чтение / var / журнал / системный журнал не дал никаких подсказок, поэтому попытался посмотреть на распечатки ядра, чтобы узнать, делают ли какие-либо kmodules что-нибудь подозрительное, я вижу эти.
[10989.915231] FIREWALL: IN=eth1 OUT= MAC=50:7b:9d:f9:44:5d:68:9e:19:99:9e:e4:08:00 SRC=10.42.0.89 DST=10.42.0.1 LEN=65 TOS=0x00 PREC=0x00 TTL=255 ID=117 DF PROTO=UDP SPT=2495 DPT=69 LEN=45
В SRC , DESTT , DPT , ПРОТО в MAC-адрес все соответствуют моему клиенту tftp.
Я не могу точно сказать, что здесь происходит, поэтому, если кто-нибудь может дать мне подсказки, чтобы поискать какие-то журналы или что-то еще, это было бы действительно полезно.
после этого я установил Gufw управлять брандмауэром и разрешить весь входящий и исходящий трафик. Я все еще получаю таймауты, и это то, что я сейчас вижу в системном журнале.
Sep 5 16:16:01 arun-TP kernel: [13836.201853] [UFW AUDIT] IN= OUT=eth1 SRC=10.42.0.1 DST=10.42.0.255 LEN=184 TOS=0x00 PREC=0x00 TTL=64 ID=12630 DF PROTO=UDP SPT=17500 DPT=17500 LEN=164
Sep 5 16:16:01 arun-TP kernel: [13836.201870] [UFW ALLOW] IN= OUT=eth1 SRC=10.42.0.1 DST=10.42.0.255 LEN=184 TOS=0x00 PREC=0x00 TTL=64 ID=12630 DF PROTO=UDP SPT=17500 DPT=17500 LEN=164
На этот раз Летнее время не имеет смысла, клиент на 10.42.0.89 и нет 10.42.0.255.
Обновление1:
/ и т.д. / по умолчанию / tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create -s"
RUN_DAEMON="YES"
ls -lrt /
drwxr-xr-x 2 tftp nogroup 4096 Sep 5 03:30 tftpboot
netstat -aup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 *:mdns *:* 739/avahi-daemon: r
udp 0 0 *:50694 *:* 2514/rpc.mountd
udp 0 0 *:55107 *:* 2514/rpc.mountd
udp 0 0 *:nfs *:* -
udp 0 0 *:3471 *:* 8567/dhclient
udp 0 0 *:56776 *:* 739/avahi-daemon: r
udp 0 0 10.42.0.1:domain *:* 5403/dnsmasq
udp 0 0 127.0.1.1:domain *:* 3025/dnsmasq
udp 0 0 *:bootps *:* 5403/dnsmasq
udp 0 0 *:bootpc *:* 8567/dhclient
udp 0 0 *:tftp *:* 4316/in.tftpd
udp 0 0 *:sunrpc *:* 966/rpcbind
udp 0 0 *:ipp *:* 1476/cups-browsed
udp 0 0 *:707 *:* 966/rpcbind
udp 0 0 *:33526 *:* 2514/rpc.mountd
udp 0 0 *:49935 *:* -
udp 0 0 localhost:796 *:* 1044/rpc.statd
udp 0 0 *:54194 *:* 1044/rpc.statd
udp 0 0 *:17500 *:* 3785/dropbox
udp6 0 0 [::]:mdns [::]:* 739/avahi-daemon: r
udp6 0 0 [::]:42779 [::]:* -
udp6 0 0 [::]:59279 [::]:* 1044/rpc.statd
udp6 0 0 [::]:nfs [::]:* -
udp6 0 0 [::]:60007 [::]:* 2514/rpc.mountd
udp6 0 0 [::]:52311 [::]:* 2254/BESClient
udp6 0 0 [::]:11656 [::]:* 8567/dhclient
udp6 0 0 [::]:sunrpc [::]:* 966/rpcbind
udp6 0 0 [::]:45289 [::]:* 739/avahi-daemon: r
udp6 0 0 [::]:57589 [::]:* 2514/rpc.mountd
udp6 0 0 [::]:707 [::]:* 966/rpcbind
udp6 0 0 [::]:37709 [::]:* 2514/rpc.mountd
нет файла конфигурации tftp в /etc/xinetd.d/
Брандмауэр отключен. ufw status = неактивен
iptables -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
2 656 ACCEPT udp -- eth1 any anywhere anywhere udp dpt:bootps
0 0 ACCEPT tcp -- eth1 any anywhere anywhere tcp dpt:bootps
0 0 ACCEPT udp -- eth1 any anywhere anywhere udp dpt:domain
0 0 ACCEPT tcp -- eth1 any anywhere anywhere tcp dpt:domain
36569 3800K ACCEPT all -- lo any anywhere anywhere
30392 20M ACCEPT tcp -- any any anywhere anywhere state RELATED,ESTABLISHED
2704 679K ACCEPT udp -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT 254 -- ipsec+ any anywhere anywhere
0 0 ACCEPT esp -- any any anywhere anywhere
0 0 ACCEPT ah -- any any anywhere anywhere
0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:isakmp
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:cfengine
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:5900
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:5901
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:12080
0 0 REJECT tcp -- any any anywhere anywhere tcp dpt:auth reject-with icmp-port-unreachable
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:https
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:5656
0 0 ACCEPT udp -- any any anywhere anywhere udp dpts:5004:5005
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpts:5004:5005
0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:20830
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:20830
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpts:sip:5062
0 0 ACCEPT udp -- any any anywhere anywhere udp dpts:sip:5062
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:21100
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:2001
0 0 ACCEPT gre -- any any anywhere anywhere
0 0 ACCEPT icmp -- any any anywhere anywhere icmp destination-unreachable
0 0 ACCEPT icmp -- any any anywhere anywhere icmp source-quench
689 56460 ACCEPT icmp -- any any anywhere anywhere icmp time-exceeded
0 0 ACCEPT icmp -- any any anywhere anywhere icmp parameter-problem
0 0 ACCEPT icmp -- any any anywhere anywhere icmp router-advertisement
0 0 ACCEPT icmp -- any any anywhere anywhere icmp echo-request
13 832 ACCEPT icmp -- any any anywhere anywhere icmp echo-reply
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:tproxy
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:1533
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpts:30000:30005
0 0 DROP tcp -- any any anywhere anywhere tcp dpts:bootps:bootpc
6 1968 DROP udp -- any any anywhere anywhere udp dpts:bootps:bootpc
0 0 DROP tcp -- any any anywhere anywhere tcp dpt:netbios-ns
0 0 DROP udp -- any any anywhere anywhere udp dpt:netbios-ns
0 0 DROP tcp -- any any anywhere anywhere tcp dpt:netbios-dgm
0 0 DROP udp -- any any anywhere anywhere udp dpt:netbios-dgm
0 0 DROP tcp -- any any anywhere anywhere tcp dpt:netbios-ssn
0 0 DROP udp -- any any anywhere anywhere udp dpt:netbios-ssn
0 0 DROP tcp -- any any anywhere anywhere tcp dpts:tcpmux:ftp-data
0 0 DROP tcp -- any any anywhere anywhere tcp dpt:sunrpc
0 0 DROP tcp -- any any anywhere anywhere tcp dpts:snmp:snmp-trap
0 0 DROP tcp -- any any anywhere anywhere tcp dpt:520
0 0 DROP tcp -- any any anywhere anywhere tcp dpts:6348:6349
0 0 DROP tcp -- any any anywhere anywhere tcp dpts:6345:gnutella-rtr
75 3256 LOG tcp -- any any anywhere anywhere limit: avg 3/min burst 5 LOG level debug prefix "FIREWALL: "
1459 263K LOG udp -- any any anywhere anywhere limit: avg 3/min burst 5 LOG level debug prefix "FIREWALL: "
3347 568K DROP all -- any any anywhere anywhere
0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:tftp state NEW,ESTABLISHED
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:69 state NEW,ESTABLISHED
Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any eth1 anywhere 10.42.0.0/24 state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth1 any 10.42.0.0/24 anywhere
0 0 ACCEPT all -- eth1 eth1 anywhere anywhere
0 0 REJECT all -- any eth1 anywhere anywhere reject-with icmp-port-unreachable
0 0 REJECT all -- eth1 any anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 68593 packets, 6962K bytes) pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:69 state NEW,ESTABLISHED
1 45 ACCEPT udp -- any any anywhere anywhere udp dpt:tftp state NEW,ESTABLISHED
Исходящие запросы tftp в качестве клиента также блокируются. мой IP 192,168.0.5 пытался подключиться к 192.168.0.2
tftp 192.168.0.2
tftp> verbose on
Verbose mode on.
tftp> status
Connected to 192.168.0.2.
Mode: netascii Verbose: on Tracing: off Literal: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
tftp> put hello
putting hello to 192.168.0.2:hello [netascii]
Transfer timed out.
может что-то не так с моим роутером? Есть ли какие-либо настройки, о которых мне нужно позаботиться, но эта проблема существует, даже когда я подключаю клиента напрямую к серверу с помощью кабеля Ethernet. Я устал от BeagleBone Black, MAcbook и моего телефона Android в качестве tftp-клиентов, отправляющих запросы на сервер.
Клиент: 10.42.0.89 (BeagleBlack, при u-boot) Сервер: 10.42.0.1
Теперь я использовал wirehark для обнюхивания пакетов Ethernet.
ARP:
32 927.886269000 10.42.0.89 Broadcast ARP 60 Who has 10.42.0.1? Tell 10.42.0.89
33 927.886320000 50:7b:9d:f9:44:5d 10.42.0.89 ARP 42 10.42.0.1 is at 50:7b:9d:f9:44:5d
после этого я вижу только это инициирование от клиента и ничего не гаснет.
36 932.887008000 10.42.0.89 10.42.0.1 TFTP 79 Read Request, File: hello, Transfer type: octet, timeout\000=5\000, blksize\000=1468\000
Когда сервер пытается отправить данные клиенту, исходный порт с сервера НЕ 69 ... он случайный высокий. Если у вашего клиента есть брандмауэр, и вы пробили дыру в / из UDP 69, TFTP не будет работать. Предложите попробовать еще раз с помощью сниффера на сервере, но посмотрите на весь UDP-трафик к клиенту, а не только на порт 69. Подробнее о протоколе см. На странице Википедии о TFTP.
Кроме того, Анубиоз дает вам хороший совет в другом ответе.
Вы должны запустить tftpd внутри процесса inetd, как описано здесь, если вы настаиваете на запуске его как автономного демона, обязательно измените файлы конфигурации как описано здесь
Эта часть конфигурации брандмауэра показывает вам, как все пакеты будут отброшены, а затем будут разрешены пакеты tftp.
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
. . .
3347 568K DROP all -- any any anywhere anywhere
0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:tftp state NEW,ESTABLISHED
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:69 state NEW,ESTABLISHED
Переместить отбросить все и записывать правила после правил tftp allow.
У меня была точно такая же проблема при попытке скопировать файл в CMTS Casa Systems, и мне нужна была запись в списке управления доступом модуля управления службами (SMM). Изначально у меня была запись, разрешающая TFTP с IP-адреса моего TFTP-сервера. Когда я запустил tcpdump и обнаружил ответ сервера на мой маршрутизатор на случайном высоком UDP-порту, я открыл ACL на маршрутизаторе, чтобы разрешить любой IP-трафик с моего TFTP-сервера, и сеанс начал работать.
Я знаю, что это старый поток, но на всякий случай, если кто-то еще столкнется с этой проблемой, попробуйте добавить запись в любые списки ACL уровня управления, разрешающие все IP-адреса вашего TFTP-сервера.