【Ubuntu】TFTPサーバ構築手順

Cisco ルーターの設定(running-config/startup-config)や IOS のイメージを外部のサーバーに保存するときは、TFTP(Trivial File Transfer Protocol)サーバーがよく使われます。この記事では、Ubuntu に TFTP サーバー(tftpd-hpa)を構築し、Cisco ルーターから設定を転送するまでの手順を確認します。

この記事でわかること
  1. Ubuntu に tftpd-hpa をインストールする手順
  2. ルーターからファイルを書き込めるようにするための設定(–create と所有者の変更)
  3. Cisco ルーターから TFTP サーバーに running-config を転送する手順

構成

192.168.212.0/24 のセグメントに、R1(.148)と TFTP サーバーの Ubuntu(.149)がつながっています。R1 から TFTP サーバーに running-config を転送します。

R1 .148 TFTP サーバー Ubuntu 18.04.3 LTS .149 192.168.212.0/24 Internet copy running-config tftp (UDP 69)
図1 検証の構成

TFTP は UDP の 69 番ポートを使う、簡単なファイル転送のプロトコルです。ユーザー認証の仕組みがなく、通信も暗号化されないので、信頼できるネットワークの中だけで使います。

Ubuntu 18.04 のサポートについて

検証に使った Ubuntu 18.04 LTS は、2023年5月31日に標準サポートが終了しています。いまから構築する場合は、サポート中の LTS を使ってください。

構築の手順は、Ubuntu のコミュニティ ヘルプの TFTP – Community Help Wiki を参考にしています。今回は、TFTP サーバーとして tftpd-hpa をインストールします。

tftpd-hpa のインストール

apt で tftpd-hpa をインストールします。

$ sudo apt-get install tftpd-hpa
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  pxelinux
The following NEW packages will be installed:
  tftpd-hpa
0 upgraded, 1 newly installed, 0 to remove and 46 not upgraded.
Need to get 39.1 kB of archives.
After this operation, 114 kB of additional disk space will be used.
Get:1 http://cd.archive.ubuntu.com/ubuntu bionic/main amd64 tftpd-hpa amd64 5.2+20150808-1ubuntu3 [39.1 kB]
Fetched 39.1 kB in 1s (29.4 kB/s)                      
Preconfiguring packages ...
Selecting previously unselected package tftpd-hpa.
(Reading database ... 134153 files and directories currently installed.)
Preparing to unpack .../tftpd-hpa_5.2+20150808-1ubuntu3_amd64.deb ...
Unpacking tftpd-hpa (5.2+20150808-1ubuntu3) ...
Processing triggers for ureadahead (0.100.0-21) ...
Setting up tftpd-hpa (5.2+20150808-1ubuntu3) ...
Processing triggers for systemd (237-3ubuntu10.29) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-21) …

これで、tftpd-hpa のインストールが終わりました。

設定の変更

ルーターから TFTP サーバーにファイルを書き込めるように、設定ファイルの編集と、ディレクトリの所有者の変更を行います。

Ubuntu(192.168.212.149) tftpd-hpa(UDP 69) TFTP_USERNAME tftp ユーザーで動く –secure tftpboot をルートにする –create 新しいファイルを作れる 書き込み /var/lib/tftpboot/ 所有者を tftp に変更 (root のままだと書き込めない) r1-confg R1 から届いた設定
図2 ファイルを書き込めるようにするための設定

設定ファイルを編集する

/etc/default/tftpd-hpa の TFTP_OPTIONS に、--create を追加します。

$ cat /etc/default/tftpd-hpa 
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
項目意味
TFTP_USERNAMEtftpd-hpa を動かすユーザー(tftp)
TFTP_DIRECTORYファイルを置くディレクトリ(/var/lib/tftpboot)
TFTP_ADDRESS待ち受けるアドレスとポート。:69 はすべてのアドレスの 69 番
–secure起動するときに TFTP_DIRECTORY をルートにする。クライアントはディレクトリを指定せず、ファイル名だけで読み書きできる
–create新しいファイルを作れるようにする。付けないと、すでにあるファイルにしか書き込めない

ディレクトリの所有者を変更する

/var/lib/tftpboot の所有者を、tftpd-hpa を動かす tftp ユーザーに変更します。所有者が root のままだと、tftp ユーザーはこのディレクトリにファイルを作れません。

$ ls -al /var/lib | grep tftpboot
drwxr-xr-x  2 root          nogroup       4096 Aug 15 01:08 tftpboot

$ sudo chown -R tftp /var/lib/tftpboot

$ ls -al /var/lib | grep tftpboot
drwxr-xr-x  2 tftp          nogroup       4096 Aug 15 01:38 tftpboot

tftpd-hpa を再起動する

tftpd-hpa を再起動して、設定を反映します。

$ sudo service tftpd-hpa restart 

Cisco ルーターから設定を転送する

R1 で copy running-config tftp を実行し、running-config を TFTP サーバーに転送します。転送先のホストに TFTP サーバーの IP アドレスを入力し、ファイル名は既定の r1-confg のまま Enter を押します。

R1# copy running-config tftp
Address or name of remote host []? 192.168.212.149         
Destination filename [r1-confg]? 
!!
1147 bytes copied in 0.592 secs (1938 bytes/sec)

転送されたファイルは、/var/lib/tftpboot/ に保存されます。中身を見ると、R1 の running-config であることがわかります。

$ ls -l /var/lib/tftpboot/ 
total 4
-rw-rw-rw- 1 tftp tftp 1147 Aug 15 01:38 r1-confg

$ cat /var/lib/tftpboot/r1-confg  

!
! Last configuration change at 01:22:13 UTC Sat Aug 15 2020
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
保存したファイルのアクセス権

tftpd-hpa は既定では、作ったファイルを誰でも読み書きできるアクセス権(-rw-rw-rw-)にします。ルーターの設定にはパスワードなどの情報も含まれるので、運用では --umask オプションでアクセス権を絞ったり、転送したあとにファイルのアクセス権を変更したりすることを検討してください。

まとめ

手順内容
インストールsudo apt-get install tftpd-hpa
設定ファイル/etc/default/tftpd-hpa の TFTP_OPTIONS に --create を追加
所有者sudo chown -R tftp /var/lib/tftpboot
反映sudo service tftpd-hpa restart
転送R1 で copy running-config tftp。ファイルは /var/lib/tftpboot/ に保存される

コメント