tftp error:cannot bind to local IPv4 socket: Address Failed to start LSB: HPA's tftp

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

重启

你可能感兴趣的:(Ubuntu)