Cisco ルーターの設定(running-config/startup-config)や IOS のイメージを外部のサーバーに保存するときは、TFTP(Trivial File Transfer Protocol)サーバーがよく使われます。この記事では、Ubuntu に TFTP サーバー(tftpd-hpa)を構築し、Cisco ルーターから設定を転送するまでの手順を確認します。
- Ubuntu に tftpd-hpa をインストールする手順
- ルーターからファイルを書き込めるようにするための設定(–create と所有者の変更)
- Cisco ルーターから TFTP サーバーに running-config を転送する手順
構成
192.168.212.0/24 のセグメントに、R1(.148)と TFTP サーバーの Ubuntu(.149)がつながっています。R1 から TFTP サーバーに running-config を転送します。
TFTP は UDP の 69 番ポートを使う、簡単なファイル転送のプロトコルです。ユーザー認証の仕組みがなく、通信も暗号化されないので、信頼できるネットワークの中だけで使います。
検証に使った 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 サーバーにファイルを書き込めるように、設定ファイルの編集と、ディレクトリの所有者の変更を行います。
設定ファイルを編集する
/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_USERNAME | tftpd-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/ に保存される |
コメント