如何在 14.04 上安装和配置 TFTP 服务器

如何在 14.04 上安装和配置 TFTP 服务器

几个星期以来,我一直在尝试使用我在网上找到的文章在全新的 Ubuntu 14.04 版本上构建 TFTP 服务器,但我的所有尝试似乎都失败了,因为我安装的 TFTP 服务器似乎没有响应。无论我使用 GET 还是 PUT,我总是收到超时错误。

我尝试过的最新文章是:

这两次尝试均未成功,每次 TFTP 客户端都会抱怨超时错误。

我已经向 UFW 和 iptables 添加(或至少我认为我已经添加)规则以允许访问 UDP 端口 69,但没有任何成功。

我一直在从 Ubuntu 下载页面下载的 mini.iso 文件构建我的基本 Ubuntu 14.04 操作系统,并将其安装到在 Win7 pro 机器上运行的 VirtualBox VM(版本 4.3.8 r92456)上。初始构建期间没有安装其他软件包,但我在初始构建后安装了 SSH 和 NTP(两者似乎都在运行)。TFTP 客户端从我的 Win7 机器运行,Ubuntu 机器有一个静态 IP 地址。


该连接是由我的 Win7 计算机上的远程 TFTP 客户端建立的。

$ netstat -apu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp        0      0 *:tftp                  *:*                                 8166/xinetd
udp        0      0 test.paumaz.local:ntp   *:*                                 1332/ntpd
udp        0      0 localhost:ntp           *:*                                 1332/ntpd
udp        0      0 *:ntp                   *:*                                 1332/ntpd
udp6       0      0 fe80::250:56ff:febe:ntp [::]:*                              1332/ntpd
udp6       0      0 localhost:ntp           [::]:*                              1332/ntpd
udp6       0      0 [::]:ntp                [::]:*                              1332/ntpd

$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:mysql         *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
udp        0      0 *:tftp                  *:*
udp        0      0 test.paumz.local:ntp    *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp6       0      0 fe80::250:56ff:febe:ntp [::]:*
udp6       0      0 localhost:ntp           [::]:*
udp6       0      0 [::]:ntp                [::]:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     7010     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     7559     /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     SEQPACKET  LISTENING     7370     /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     9458     /var/run/mysqld/mysqld.sock
unix  2      [ ACC ]     STREAM     LISTENING     9209     /var/run/acpid.socket

答案1

安装以下软件包。

sudo apt-get install xinetd tftpd tftp

创造/etc/xinetd.d/tftp

sudo nano /etc/xinetd.d/tftp

并把这个条目

service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /tftpboot
disable         = no
}

创建一个文件夹,/tftpboot该文件夹应与您提供的内容相匹配server_args。大多数情况下它将是 tftpboot

sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
sudo chown -R nobody /tftpboot

重新启动xinetd服务。

sudo /etc/init.d/xinetd restart

您必须允许udp port 69防火墙。

编辑1

在此处输入图片描述

就像我说的,首先tftp localhost,然后get ...

给出输出cat /var/log/syslog | grep tftp

答案2

这里也有同样的问题。旧的 Ubuntu 9.? 已通过单击“是”升级到 14.04。用户从“之前”定义(默认一切)。

我发现它可以与以下对象一起使用:

tftp AAA.DDD.DDD.RRR  
get test  
^D  

cat test

这有效,AAA.DDD.DDD.RRR我的机器的实际 IP 在哪里。
(我目前有一个静态本地离线网络,因此例如:tftp 192.168.1.1作为命令给出)
用单词“localhost”替换这个数字地址 ==>“获取”时超时
(它似乎连接正常,但无法获取文件)。

相关内容