Contents
Overview
tftpd-hpa を使用して TFTP サーバーを構築します。
TFTP (Trivial File Transfer Protocol) は、ファイルをネットワーク上で転送するためのプロトコルの一種で、RFC 1350 で定義されています。TFTP は FTP (File Transfer Protocol) よりも単純で、主にブートローダーなどの小規模なデータの転送に使用されます。
ネットワークプロトコル
TFTP は UDP (User Datagram Protocol) を使用します。ポート番号は 69 を使用します。
主な機能
TFTP は、ネットワーク経由でデバイスのブートストラップやファームウェアの更新を行う際によく使用されます。例えば、PXE (Preboot Execution Environment) やルーターのファームウェアの更新などが挙げられます。
注意事項
TFTP はセキュアではない(非暗号化、非認証)ため、ファイルの転送中にデータが傍受または改ざんされる可能性があります。このため、現在では先述した PXE のような限られた環境での特殊用途でのみで使用することが推奨されます。仮にセキュアな状態で使用したい場合、TFTP over SSH などのトンネリングプロトコルの使用を検討します。
前提条件
- こちらを参考に基本設定が完了していること。
インストール
tftpd-hpa をインストールします。
myadmin@ubuntu:~$ sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install tftpd-hpa
/etc/default/tftpd-hpa
tftpd-hpa の設定ファイルは /etc/default/tftpd-hpa です。
デフォルト値
デフォルト値は下記の通りです。特別な要件が無ければ変更は不要です。TFTP_OPTIONS="--secure"
はいわゆる chroot で動作させるための設定です。
myadmin@ubuntu:~$ cat /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
設定の有効化
設定を有効化します(設定を変更した場合)。
myadmin@ubuntu:~$ sudo systemctl restart tftpd-hpa.service && systemctl status tftpd-hpa.service
TFTP クライアント
テスト用に TFTP クライアントをインストールします。
myadmin@ubuntu:~$ sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install tftpd
利用可能なコマンドは以下の通りです。
myadmin@ubuntu:~$ tftp
tftp> ?
Commands may be abbreviated. Commands are:
connect connect to remote tftp
mode set file transfer mode
put send file
get receive file
quit exit tftp
verbose toggle verbose mode
trace toggle packet tracing
status show current status
binary set mode to octet
ascii set mode to netascii
rexmt set per-packet retransmission timeout
timeout set total retransmission timeout
? print help information
限られた用途であるため、細かくは試していませんが、大抵は以下の操作で事足りるのではと思います。注意点として大きいファイルサイズでは転送に失敗するケースもありました。その場合は mode の設定などで対応が必要になるかもしれません。
tftp> connect 192.168.0.69
tftp> put test.txt
tftp> get test.txt