我有一台运行 cobbler 和 tftp 服务器的服务器。我的任务是配置一个读写 tftp 服务器。
tftp 通过 xinetd 配置,配置文件如下:
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -B 1380 -v -s -c /var/lib/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
问题是,尽管它看起来似乎有效,但它不接受连接并退出并显示“传输超时”消息。
一些细节:
- tftp 目录是:/var/lib/tftpboot
- selinux 和 iptables 已禁用
- 文件夹的权限如下:
drwxrw-rw-. 8 root root 4096 2015-12-20 11:17 /var/lib/tftpboot/
- netstat显示端口已开放:
udp 0 0 0.0.0.0:69 0.0.0.0:* 21455/xinetd
/var/log/messages
日志中没有错误
这是我测试配置的方式:
[root@ams2srv1 ~]# touch file.test
[root@ams2srv1 ~]# tftp localhost
tftp> put file.test
Transfer timed out.
tftp> quit
[root@ams2srv1 ~]# tftp localhost -c put file.test
Transfer timed out.
[root@ams2srv1 ~]#
[root@ams2srv1 ~]# touch /var/lib/tftpboot/test.file
[root@ams2srv1 ~]# tftp localhost -c get test.file
Transfer timed out.
编辑#1: 当连接到机器的真实 IP 并尝试相同的命令时,会出现一条新的错误消息,如下所示:
[root@ams2srv1 ~]# tftp 10.x.x.38
tftp> put test
Error code 0: Permission denied
tftp>
但文件夹的权限/var/lib/tftpboot
是777,如上所示。
关于如何解决这个问题有什么想法吗?
答案1
iptables 已被禁用,但是您是否清除了在禁用服务之前加载的任何规则?
另外,我会使用 /etc/xinetd.d/tftp 中最基本的 server_args 进行测试...例如:
server_args = -s /var/lib/tftpboot
编辑:在我的计算机上,tftp 127.0.0.1 和 tftp 192.168.0.2 均能正常工作,但 tftp localhost 给出的结果与您观察到的结果相同。