1. クライアント・インストール
  2. サーバー・インストール
  3. アップロード用の設定

クライアント・インストール

TFTPサーバーの動作確認用に、TFTPクライアントをインストールしておきます。

  • Fedora 15、CentOS

  • Fedora 15やCentOSでは以下でインストールできます。

    # yum install tftp

    インストールが完了すると、tftpコマンドが使用できるはずです。

    # which tftp
    /usr/bin/tftp

サーバー・インストール

  • インストール

  • Fedora 15やCentOSではyumで tftp-server をインストールできます。

    #yum install tftp-server
    ・・・・
    ==========================================================================================
     パッケージ           アーキテクチャ  バージョン                   リポジトリー      容量
    ==========================================================================================
    インストールしています:
     tftp-server          x86_64          0.49-8.fc15                  fedora            39 k
    依存性関連でのインストールをします。:
     xinetd               x86_64          2:2.3.14-36.fc15             updates          121 k
    
    トランザクションの要約
    ==========================================================================================
    インストール         2 パッケージ
    
    総ダウンロード容量: 160 k
    インストール済み容量: 314 k
    これでいいですか? [y/N]

  • xintedの設定

  • Fedora 15やCentOSでは、xinetdを介してTFTPサーバーが起動しますが、インストールしたままだと無効になっています。 そのため、設定を変更してTFTPサーバーを有効にします。

    /etc/xinetd.d/tftp
    # default: off
    # description: The tftp server serves files using the trivial file transfer \
    #       protocol.  The tftp protocol is often used to boot diskless \
    #       workstations, download configuration files to network-aware printers, \
    #       and to start the installation process for some operating systems.
    service tftp
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -s /var/lib/tftpboot
            disable                 = no
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }
    				

    disable の項目を yes -> no に変更し、xinted を再起動します。

    # service xinetd restart
    Restarting xinetd (via systemctl):                         [  OK  ]	

    また、TFTPサーバーの公開ディレクトリをデフォルトから変更したい場合は、server_args の箇所を変更します。

            server_args             = -s /var/lib/tftpboot
                    
    Fedora 15では /var/lib/tftpboot がデフォルトの公開ディレクトリです。

アップロード用の設定

TFTPサーバーにファイルのアップロードを行いたい場合があります。例えば、CISCOルーターのIOSのバックアップを行うような場合です。

しかし、Fedora 15のデフォルトのTFTPサーバーは、アップロードできない設定になっています。 そのため、TFTPサーバーにアップロードしたい場合、設定を変更する必要があります。 方法としては以下の2つがあります。

  • TFTPサーバーの起動オプションの変更
  • アップロードするファイルと同じ名前のファイルを作成する方法

  • 動作確認

  • アップロードのテストのため、TFTPサーバーの適当なディレクトリにテスト用ファイルを作成します。 今回は「 tt.txt 」というファイル名で、適当に何か文字を書いたテキストファイルを作成しました。これをtftpサーバー( 192.168.1.x )にアップしてみます

    # tftp -v 192.168.1.x -c put tt.txt
    Connected to 192.168.1.x (192.168.1.x), port 69
    putting tt.txt to 192.168.1.x:tt.txt [netascii]
    Error code 1: File not found
    注. この例では、TFTPサーバーとTFTPクライアントは同じPC上です。

    すると、「File not found」というエラーが発生する場合があります。 このエラーは、アップロードしようとしたファイルが存在しないか、または新規ファイル作成で失敗した場合です。 Fedora 15では、デフォルト設定でTFTPサーバーの新規ファイル作成が禁止されていることが原因です。

  • TFTPサーバーの起動オプションの変更

  • TFTPサーバーの起動オプションを変更して、新規ファイルのアップロードができるようにします。 そのため、/etc/xinted.d/tftp を変更します。

     server_args          = -s /var/lib/tftpboot
    にオプションの -c を追加して
     server_args          = -c -s /var/lib/tftpboot
    に変更します。そしてxinetdを再起動します。
    # service xinted restart
    注意. # service xinted reload では設定が反映されないので、restartします。

    次にセキュリティ関係の変更を行います。 Fedora15のデフォルト設定では、TFTPサーバーは nobody で動作します。 そのためアップロード先のディレクトリの所有者を、nobodayに変更します。

    # chown nobody:nobody /var/lib/tftpboot
    TFTPサーバーと同じマシンからファイルのアップして、以下のように成功すれば設定はOKです。
    # tftp -v 192.168.1.x -c put tt.txt
     Connected to 192.168.1.x (192.168.1.x), port 69
     putting tt.txt to 192.168.1.x:tt.txt [netascii]
     Sent 20 bytes in 0.0 seconds [35924 bit/s]	

  • アップロードするファイルと同じ名前のファイルを作成する方法

  • オプションの"-c"以外の方法として、TFTPサーバーのディレクトリにアップロードするファイルと同じ名前のファイルを先に作成する方法があります。 オプションの”-c”が無い場合、TFTPサーバーは新規ファイルとしてのアップロードは許可しません。 しかし、アップロードするファイル名と同じものがある場合、上書きすることは許可します。 そのため、先にアップロードするファイルと同じ名前のファイルを作成しておくと、アップロードができます。

    # touch /var/lib/tftpboot/tt.txt
    # chown o+w /var/lib/tftpboot/tt.txt
    注. 新しく作成したファイルに、TFTPサーバーによる書き込みの権限がないと、失敗して以下のようになります。
    # tftp -v 192.168.1.x -c put tt.txt
     Connected to 192.168.1.x (192.168.1.x), port 69
     putting tt.txt to 192.168.1.x:tt.txt [netascii]
     Error code 0: Permission den