ぶていのログでぶログ

思い出したが吉日

Ubuntu 16.04でtftpdがunknown option -?を出力するときの対処

tftpdを削除してtftpd-hpaを入れ直す

$ sudo apt install -y tftpd-hpa # tftpdも一緒に削除される

経緯

cobblerサーバをメンテしていたらtftpdが起動していないことに気がついた。 tftpdはxinetd(!)経由で起動されているので jounalctl -fu xinetd したところ以下のエラーが出ていた。

Oct 19 12:02:45 cobbler tftpd[21149]: unknown option -?

なんじゃこりゃと思って色々調べていたが全くわからんとなっていた…。 そこでふとtftpd-hpaを入れるとどうなるじゃろ?とやったら瞬く間に解決できてしまったのであった。

tftpd-hpaのhpaとは?

tftpdとtftpd-hpaでどう違うのか?と気になってしまった。 オプションや機能などは一緒そうに見える。 dpkgのdescriptionには以下のとおり書いてある。

$ dpkg -s tftpd-hpa
-- snip --
Description: HPA's tftp server
 Trivial File Transfer Protocol (TFTP) is a file transfer protocol, mainly to
 serve boot images over the network to other machines (PXE).
 .
 tftp-hpa is an enhanced version of the BSD TFTP client and server. It
 possesses a number of bugfixes and enhancements over the original.
 .
 This package contains the server.
Homepage: http://git.kernel.org/cgit/network/tftp/tftp-hpa.git
Original-Maintainer: Ron Lee <ron@debian.org>

なるほど…?🤔 HPA とはなんだ…?っと思いHomepageを確認したところAuthroに H. Peter Anvin っとあった。 たぶん、この方が実装されたtftpdサーバのことなのだろうか(自信なし) -> Hans Peter Anvin - Wikipedia

動作確認

tftp-hpaというパッケージをインストールすることでtftpクライアントを入手することができるのだけど、curlでもtftpを扱うことができる。

$ curl -v tftp://<server>/pxelinux.0

参考: TFTP - ArchWiki

終わりに

xinetd経由で起動するのでとても煩雑だなぁと感じた。 今はsystemdもあるし、そこで一括管理できると便利だなぁっと思う。 Unitファイルを書けばsystemd経由で直接起動できるとは思うけど、今回試したUbuntu16.04環境だとxinetd経由のほうがお手軽だったのでそうした。 18.04やそれ以降のバージョンならよりモダンなtftpサーバが使えるのかな?