내 시스템에서 TFTP가 제대로 작동하도록 할 수 없습니다. 나는 /etc/default/tftpd-hpa
모든 것과 마찬가지로 권한을 설정했지만 /srv/tftp/
이를 수행할 때마다 시간 초과가 발생합니다(그리고 localhost에서 127.0.0.1에 연결됩니다). TFTP가 어딘가에 문서화되어 있지 않은 것 같은데요, 그렇죠? 이 문제를 디버깅하는 방법에 대한 도움을 주시면 대단히 감사하겠습니다!777
/srv/
get test
편집 #1
/srv
이것은 가 소유한 콘텐츠가 있는 (K)Ubuntu 시스템에 있었고 root:root
지금은 으로 변경했지만 nobody:nogroup
여전히 동일한 시간 초과가 발생합니다.
$ ls -la
total 12
drwxrwxrwx 3 nobody nogroup 4096 Nov 5 08:47 .
drwxrwxrwx 3 nobody nogroup 4096 Nov 5 2013 ..
drwxrwxrwx 2 nobody nogroup 4096 Nov 5 2013 artifacts
-rwxrwxrwx 1 nobody nogroup 0 Nov 5 08:48 test
-rw-r--r-- 1 reg reg 0 Nov 5 08:47 vx.bin
reg@ubuntu:/srv/tftp$tftp 127.0.0.1
tftp> get test
Transfer timed out.
편집 #2
tftp
실행 중인 인스턴스가 없는 것 같다는 것을 깨닫고 부팅을 시도 #tftp
했는데 Ubuntu에서 apt-get install cobbler
Cobbler를 설치해야 한다고 해서 그렇게 했습니다. 그런 다음 다시 시도하여 다음과 같은 결과를 얻었습니다.
# tftpd
Traceback (most recent call last):
File "/usr/sbin/tftpd", line 51, in <module>
import tornado.ioloop as ioloop
ImportError: No module named tornado.ioloop
root@ubuntu:/srv#
이것이 무엇을 의미하는지 궁금합니다. 단서가 있습니까?
답변1
나는 최근에 이 문제를 몇 번이나 직접 처리해야 했는데, 문제를 해결하기 위해 나 자신에게 던진 질문은 다음과 같습니다.
- tftpd는 xinetd에서 실행됩니까, 아니면 별도의 데몬으로 실행됩니까?
- /etc/hosts.allow 또는hosts.deny를 변경해야 합니다.
- SELinux가 활성화되어 있습니까("getenforce" 명령을 사용하여 확인)?
- 호스트 방화벽이 실행되고 있습니까? (서비스 iptables 상태)
- tftpd가 데이터 디렉토리로 사용하고 있는 디렉토리가 확실합니까?
- "가져오려는" 파일이 실제로 존재합니까?
내 내기는 위의 조합입니다. 방화벽, SELinux 및 데이터 디렉터리 위치 등.
/srv가 모드 0777에서 열리는 것을 원하지 않습니다. 그리고 tftp 데이터 디렉터리에 대해서도 이 작업을 수행할 필요가 없습니다. 누구나 읽을 수 있는 파일만 있으면 됩니다. 파일을 서버에 올려 놓지 않는 한. 이 경우 미리 파일을 생성하고 파일을 작성할 때 누구나 쓸 수 있도록 설정해야 합니다.
행운을 빌어요!
답변2
나는 결국 따라 갔다.이 가이드이는 openbsd-inetd
이 프로그램도 설치되어야 하며 RUN_DAEMON="yes"
tftp 구성 파일에서도 설정 해야 함을 나타냅니다 /etc/default/tftpd-hpa
.
업데이트 #1
위의 링크는 더 이상 작동하지 않으므로 여기에서 다음과 같은 대안을 찾았습니다. Ubuntu 12.04 LTS에서 TFTP 서버 실행(정확함)고쳐 쓰다.
답변3
방금 Debian Jessie에서 "전송 시간이 초과되었습니다."라는 문제가 발생했습니다.
에는 /etc/default/tftpd-hpa
주소 줄이 있습니다: TFTP_ADDRESS="0.0.0.0:69"
.
전체 서버 주소로 바꾸세요. 예를 들어:
TFTP_ADDRESS="192.168.99.10:69"
그리고 데몬을 다시 시작하세요. 이것으로 문제가 해결된 것 같습니다.
데비안의 이 변수는 --address
데몬에 대한 옵션을 설정합니다. 배포판마다 다르게 설정해야 할 수도 있지만, 결국 다음과 같이 하면 주소가 표시됩니다 ps x
.
# ps x | grep tftp
3988 ? Ss 0:00 /usr/sbin/in.tftpd --listen --user tftp --address 192.168.99.10:69 --secure /docs/tftp-pxe
서버나 클라이언트에 버그가 있는 것 같습니다.
답변4
CentOS/Fedora라면 이와 같이 TFTP에서 자세한 메시징을 활성화할 수 있습니다. 구성 파일에서 /etc/xinetd.d/tftp
server_args 변수를 다음으로 변경합니다.
server_args = -v -v -l /var/log/tftpd
반드시 서버를 다시 시작하세요. 다른 -v
스위치를 추가하여 더 자세하게 만들 수 있습니다.