2019-06-20にリリースされたRaspbian BusterにTFTPサーバーをインストールしてみたのでメモ。
tftp-hpa が特に問題もなくGet、Put共に動作しました。
Raspbian Buster
Raspberry Pi3にRaspbian Buster Lite をインストールしました。
pi@raspi:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster
ラズパイOS Raspbian は6/20リリースで新バージョン Buster になってた。python 2.7.16 と python 3.7.3 が入っている。
— Tomohisa Yamazoe/MFTokyo I-07-11 (@zoe6120) July 1, 2019
TFTPのインストール
tftpサーバとtftpクライアントのインストール
$ sudo apt install -y tftpd-hpa $ sudo apt install -y tftp
設定ファイルを確認。tftpのデフォルトルートディレクトリは “/srv/tftp”
$ cat /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"
バージョン
$ sudo dpkg -l | grep tftp ii tftp 0.17-22 armhf Trivial file transfer protocol client ii tftpd-hpa 5.2+20150808-1 armhf HPA's tftp server
起動と終了
$ sudo systemctl start tftpd-hpa.service $ sudo systemctl stop tftpd-hpa.service
ステータスの確認
$ sudo systemctl status tftpd-hpa.service ● tftpd-hpa.service - LSB: HPA's tftp server Loaded: loaded (/etc/init.d/tftpd-hpa; generated) Active: active (running) since Mon 2019-07-01 16:25:38 JST; 3s ago Docs: man:systemd-sysv-generator(8) Process: 1179 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=0/SUC Tasks: 1 (limit: 2200) Memory: 640.0K CGroup: /system.slice/tftpd-hpa.service └─1186 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 - Jul 01 16:25:38 raspi systemd[1]: Starting LSB: HPA's tftp server... Jul 01 16:25:38 raspi tftpd-hpa[1179]: Starting HPA's tftpd: in.tftpd. Jul 01 16:25:38 raspi systemd[1]: Started LSB: HPA's tftp server.
Getの確認
テスト用のファイルhello.txt作成
$ sudo echo "hello tftp" > /srv/tftp/hello.txt
ローカルホストへtftpクライアントで接続。
pi@raspi:~/work $ tftp 127.0.0.1 tftp> get hello.txt Received 15 bytes in 0.0 seconds tftp> quit pi@raspi:~/work $ ls hello.txt
ファイルのPUT(書き込み)を可能にする
/etc/default/tftpd-hpa に 「-c」を追加して 「TFTP_OPTIONS=”-c –secure”」とする。
$ sudo cat /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="-c --secure" # パーミッション変更 $ sudo chmod 777 /srv/tftp # サービス再起動 $ sudo systemctl restart tftpd-hpa.service
Putの確認
verboseモードでtraceも追加して実行してみる。
pi@raspi:~/work $ tftp 127.0.0.1 tftp> verbose Verbose mode on. tftp> trace Packet tracing on. tftp> put out.txt putting out.txt to 127.0.0.1:out.txt [netascii] sent WRQ <file=out.txt, mode=netascii> received ACK <block=0> sent DATA <block=1, 36 bytes> received ACK <block=1> Sent 36 bytes in 0.0 seconds [inf bits/sec] tftp> quit
ラズパイ3に Raspbian Buster で tftpサーバ動いた。tftpd-hpa
— Tomohisa Yamazoe/MFTokyo I-07-11 (@zoe6120) July 1, 2019
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