1.安装
#$ sudo apt install tftp-hpa tftpd-hpa openbsd-inetd
## 后来发现其实tftpd会开机自起,所以没必要下载openbsd-inetd
$ sudo apt install tftp-hpa tftpd-hpa
## 这样就可以了。
tftp是客户端,用于测试下载;
tftpd是服务器;
openbsd-inetd是tftp的自动启动服务
2.创建tftp服务器根目录/tftpboot
$ sudo mkdir -p /tftpboot/
$ sudo chmod 0777 /tftpboot/
3.修改配置文件
## $ sudo vim /etc/inetd.conf
## 这个是openbsd-inetd的配置文件,其中的配置是提供开机启动的
## 后期发现tftpd-hpa会开机自起,不需要进行配置。
## 如果配置了,反而因为端口冲突而造成失败
# 如果tftp可以开机自起,就不必配置了,否则反而因为端口冲突而失败
#tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot
$ sudo vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS=":69"
#TFTP_OPTIONS="--secure"
TFTP_OPTIONS="-l -c -s"
RUN_DAEMON="yes"
OPTIONS="-l-s /tftpboot"
4.启动
$ sudo update-inetd --enable BOOT
$ sudo service tftpd-hpa start/restart
5.测试出现一下内容为正常:
$ sudo netstat -lu
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:tftp *:*
6.异常维护
曾出现过得情况:
在配置文件正常地情况下,重启服务器后tftp服务状态异常: /etc/init.d/tftpd-hpa status
● tftpd-hpa.service - LSB: HPA's tftp server
Loaded: loaded (/etc/init.d/tftpd-hpa; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2017-05-07 10:56:19 UTC; 1min 17s ago
Docs: man:systemd-sysv-generator(8)
Process: 3971 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=71)
Feb 07 10:56:19 HOST001 systemd[1]: Starting LSB: HPA's tftp server...
Feb 07 10:56:19 HOST001 tftpd-hpa[3971]: * Starting HPA's tftpd in.tftpd
Feb 07 10:56:19 HOST001 systemd[1]: tftpd-hpa.service: Control process exited, code=exited status=71
Feb 07 10:56:19 HOST001 systemd[1]: Failed to start LSB: HPA's tftp server.
Feb 07 10:56:19 HOST001 systemd[1]: tftpd-hpa.service: Unit entered failed state.
Feb 07 10:56:19 HOST001 systemd[1]: tftpd-hpa.service: Failed with result 'exit-code'.
重启也是失败的:/etc/init.d/tftpd-hpa restart
[....] Starting tftpd-hpa (via systemctl): tftpd-hpa.serviceJob for tftpd-hpa.service failed because the control process exited with error code. See "systemctl status tftpd-hpa.service" and "journalctl -xe" for details.
failed!
解决:
发现其实tftp服务会开机自动启动,不需要openbsd-inetd再去启动一次。以上问题的原因是openbsd-inetd已经启动了一个tftp服务,占了69端口,但是tftp服务本身会开机自起,所以会出现失败。
只要将/etc/inetd.conf中对tftp的开机自起注释并重启openbsd-inetd就可以了。
vim /etc/inetd.conf
写入
systemctl disable tftpd-hpa.service
重启