概要

TFTPは簡易的なファイル転送プロトコルです。ルータなどのネットワーク機器の設定ファイルなどを転送するためによく利用します。TFTPの仕組みとCiscoルータをTFTPサーバ/クライアントとして利用する方法について解説します。

TFTPとは

TFTP(Trivial File Transfer Protocol)とは、簡易的なファイル転送プロトコルです。TFTPでファイル転送をする場合、ユーザ認証は行いません。また、トランスポート層にUDP(ウェルノウンポート69)を利用していて、TCPコネクションを確立するようなオーバーヘッドがかからず、効率よくファイル転送できます。トランスポート層にTCPを利用するFTPやHTTPに比べると、ファイル転送の信頼性があまり高くありません。ルータの設定ファイルなどサイズがあまり大きくないファイルを簡単に転送したいという用途で利用します。

図 TFTPのプロトコル階層
図 TFTPのプロトコル階層

TFTPの仕様はRFC1350で定義されています。

TFTPの仕組み

TFTPでファイル転送するときには、TFTPサーバアプリケーションとTFTPクライアントアプリケーションが必要です。TFTPサーバアプリケーションとクライアントアプリケーション間の動作の流れは以下のようになります。

  1. 要求コマンドの送信
  2. ファイルデータの転送と確認応答

要求コマンドの送信

TFTPクライアントアプリケーションからTFTPサーバアプリケーションへ要求コマンドを送信します。このとき、宛先ポート番号が69です。送信元のポート番号はランダムです。

図 TFTPの動作 その1
図 TFTPの動作 その1

ファイルデータの転送と確認応答

要求コマンドに応じてファイルデータを転送します。TFTPサーバはファイルデータ転送のためにランダムなポート番号を決定します。TFTPクライアント側のポート番号は要求コマンドを送信したときのポート番号です。また、TFTPでのファイルデータの転送は1回あたり512バイトです。サイズが大きいファイルは、TFTPによって512バイトごとのブロックに分割されます。

TFTPでファイル転送をするときにはTFTPの確認応答(ACK)を行っています。分割したブロックが1つでも届かないとファイルを再構成できなくなってしまうので、TFTPのレベルでの確認応答を行います。

512バイトのファイルデータを分割したブロックとそれに応じた確認応答のやり取りを必要なだけ繰り返します。最終的に512バイト未満のブロックの転送が完了すると、TFTPのファイル転送は完了です。

図 TFTPの動作 その2
図 TFTPの動作 その2

TFTPサーバとクライアントの間にパケットフィルタを行っているルータやファイアウォールが存在している場合、パケットフィルタの条件に注意が必要です。TFTPサーバはUDP69だけではなく、ランダムポートも利用していることを考慮してパケットフィルタの条件を設定してください。

CiscoルータをTFTPサーバおよびTFTPクライアントとして利用する

CiscoルータをTFTPサーバおよびTFTPクライアントとして利用することができます。

TFTPサーバの設定

CiscoルータをTFTPサーバとして動作させられます。そうすると、TFTPクライアントは、ルータのフラッシュやNVRAM上のファイルをダウンロードできます。そのために、グローバルコンフィグレーションモードから以下のコマンドを入力します。

Ciscoルータ TFTPサーバの設定

(config)#tftp-server <file-path>

<file-path> : TFTPでダウンロードさせるファイルパス

Ciscoルータ TFTPサーバ
Ciscoルータ TFTPサーバ

TFTPクライアント

CiscoルータをTFTPクライアントとして、TFTPサーバとファイル転送できます。TFTPサーバ上のファイルをルータのフラッシュメモリなどにダウンロードする場合は、特権EXECモードで次のように入力します。

Ciscoルータ TFTPクライアント ダウロード

#copy tftp <copy-destination>

<copy-destination> : コピー先のファイル

コマンドを入力するときに、TFTPサーバのIPアドレスやダウンロードするファイル名などを指定していないと、以下のように必要な情報の入力が求められます。

Ciscoルータ TFTPクライアント ダウロード サンプル

R1#copy tftp nvram
Address or name of remote host []? 192.168.12.1
Source filename []? r1-config
Destination filename [nvram]? startup-config

「Address or name of remote host」はTFTPサーバのIPアドレスです。「Source filename」は、TFTPサーバ上のダウンロードするファイル名です。「Destination filename」はルータのローカルに保存するファイル名です。

Ciscoルータ TFTPクライアント ダウンロード
Ciscoルータ TFTPクライアント ダウンロード

また、ルータのフラッシュメモリなどのストレージ上のファイルをTFTPサーバにアップロードするときには、特権EXECモードで次のように入力します。

Ciscoルータ TFTPクライアント アップロード

#copy <copy-source> tftp

<copy-source> : コピー元のファイル

この場合もコマンド入力時に必要な情報を指定していなければ、必要な情報の入力を求められます。

Ciscoルータ TFTPクライアント アップロード サンプル

R1#copy nvram: tftp
Source filename []? startup-config
Address or name of remote host []? 192.168.12.1
Destination filename [r1-confg]?

「Address or name of remote host」はTFTPサーバのIPアドレスです。「Source filename」は、ルータローカルのアップロードするファイル名です。「Destination filename」はTFTPサーバに保存するファイル名です。

Ciscoルータ TFTPクライアント アップロード
Ciscoルータ TFTPクライアント アップロード

まとめ

ポイント

  • TFTPは簡易的なファイル転送プロトコルです。ルータなどのネットワーク機器の設定ファイルといった小さなサイズのファイルを転送するためによく利用します。
  • トランスポート層にUDPを利用し、ウェルノウンポート番号は69です。ただし、サーバ側でランダムポートも利用します。
  • CiscoルータをTFTPサーバおよびTFTPクライアントとして利用することができます。

TCP/IP