Raspberry Pi BrusterにTFTPサーバーを設定する

2019-06-20にリリースされたRaspbian BusterにTFTPサーバーをインストールしてみたのでメモ。
tftp-hpa が特に問題もなくGet、Put共に動作しました。

Raspbian Buster

Raspberry Pi3にRaspbian Buster Lite をインストールしました。

Raspbianダウンロードサイト

pi@raspi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です