Ubuntu 12.04 搭建TFTP服务器

时间:2022-06-01 16:47:35

吐槽先:在Ubuntu上搭建TFTP服务器,网上搜到一堆资料,可惜基本都是部分能用,至于哪些部分能用还要自己摸索着试出来,郁闷之情仅次于找不到任何资料……

--------------------------------------------正文开始--------------------------------------------

TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场 合。TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。它传输8位数据,传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

在嵌入式Linux开发中,TFTP协议在很多场合都被用到,甚至是必不可少的,特别是在内核调试阶段,在U-Boot下通过TFTP协议从服务器上加载内核并运行,既方便又快捷。

一般的Linux发行版默认都没有安装TFTP服务以及TFTP服务器。TFTP服务依赖于网络守护进程服务程序,可选择安装inetd或者升级版的xinetd,
然后安装tftp和tftp-server,接着修改或者创建/etc/xinetd.d/tftp配置文件,最后重启xinetd,启动TFTP服务。
无论采用什么发行版,TFTP服务器的安装都是这样的流程,只不过不同发行版的安装命令不同而已。

1、查看系统信息

我用的系统是Ubuntu 12.04.5 LTS。

zlf@ubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.5 LTS"

2、安装软件

安装xinetd:

zlf@ubuntu:~$ sudo apt-get install xinetd

安装tftpd-hpa和tftp-hpa:

zlf@ubuntu:~$ sudo apt-get install tftpd-hpa tftp-hpa
tftpd-hpa是服务器端,tftp-hpa是客户端。tftpd-hpa和tftp-hpa是tftpd和tftp的增强版本。

3、修改配置文件

建立/etc/xinetd.d/tftp文件,写入如下内容:

service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/zlf/tftpboot/
disable = no
per_source =
cps =
flags = IPv4
}

其中server_args设置的/home/zlf/tftpboot/目录是tftp服务器的目录,设置其访问权限为777:

zlf@ubuntu:~$ mkdir -pv /home/zlf/tftpboot
zlf@ubuntu:~$ chmod /home/zlf/tftpboot

修改/etc/default/tftpd-hpa文件:

zlf@ubuntu:~$ sudo vi /etc/default/tftpd-hpa

将文件从

   # /etc/default/tftpd-hpa

   TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

修改为:

   # /etc/default/tftpd-hpa

   TFTP_USERNAME="zlf"
TFTP_DIRECTORY="/home/zlf/tftpboot"
TFTP_ADDRESS="127.0.0.1:69"
TFTP_OPTIONS="-s -c"

TFTP的OPTIONS可以通过man tftpd查看。

4、启动服务

软件安装后已自动启动,此时将服务重启:

zlf@ubuntu:~$ sudo service xinetd restart
zlf@ubuntu:~$ sudo service tftpd-hpa restart

5、本机测试

在/home/zlf目录下创建文件puttest,在/home/zlf/tftpboot目录下创建文件gettest。

echo "tftp put test" >> /home/zlf/puttest
echo "tftp get test" >> /home/zlf/tftpboot/gettest

在/home/zlf目录下运行tftp。

zlf@ubuntu:~$ cd
zlf@ubuntu:~$ tftp localhost
tftp> get gettest #获取gettest文件
tftp> put puttest   #上传puttest文件
tftp> q  #退出tftp

用ls命令查看,在/home/zlf目录下可以看到下载的gettest文件,在/home/zlf/tftpboot目录下可以看到上传的puttest文件。

TFTP服务器搭建完成。

参考文献:

1、ubuntu下搭建tftp服务器
2、Ubuntu 11.04下安装 TFTP Server
3、在ubuntu 下安装xinetd模式的tftpd服务
4、ubuntu 12.04搭建tftp服务器的安装、设置、调试
5、Ubuntu下配置tftp服务和NFS服务