💾

tftp の練習

2022/12/20に公開

本エントリについて

Dynagen、Dynamips、tftpd を使って、コンフィグのバックアップを練習します。
Dynagen、Dynamips の利用環境はすでに整っているものとします。

参考

https://www.cisco.com/c/ja_jp/support/docs/ios-nx-os-software/ios-software-releases-122-mainline/46741-backup-config.html
https://community.cisco.com/t5/ネットワークインフラストラクチャ-ドキュメント/パイプの使用方法/ta-p/3153528

環境について

r1 のコンフィグを tftpd server にバックアップします。

[tftpd server] .1 === (10.2.0.0/24) === .254 f0/0[r1]

tftpd サーバインストール

tftpd サーバとして、tftpd-hpa を利用します。
単体試験のため tftpd-hpa もインストールします。

sudo apt install -y tftpd-hpa tftp-hpa

https://www.cisco.com/c/ja_jp/support/docs/routers/10000-series-routers/48700-tftp-server.html

動作確認

関連パッケージをインストールしたら /srv/tftp 配下にテスト用ファイル helloworld を配置して tftp で get してみます。

$ echo helloworld | sudo tee -a /srv/tftp/helloworld
helloworld
$ tftp 10.2.0.1 -c get helloworld

$ ls helloworld
helloworld

次に、tftp でファイル helloworld.1 を put してみます。
最初に /srv/tftp 配下に空のファイルを作成する必要があります。

$ sudo touch /srv/tftp/helloworld.1
$ sudo chmod 766 /srv/tftp/helloworld.1
$ mv helloworld helloworld.1
$ cat << END | tftp 10.2.0.1
> put helloworld.1
> END

$ cat /srv/tftp/helloworld.1
helloworld

コンフィグバックアップ

バックアップを実行する前に /srv/tftp 配下に空のファイルを作成します。

$ sudo touch /srv/tftp/r1-config
$ sudo chmod 766 /srv/tftp/r1-config

空ファイルを作成したら、コンフィグをバックアップします。

r1#ping 10.2.0.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.0.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 4/6/8 ms

r1#copy start tftp://10.2.0.1/r1-config
Address or name of remote host [10.2.0.1]?
Destination filename [r1-config]?
!!
776 bytes copied in 0.044 secs (17636 bytes/sec)

ファイルが更新されたことを確認します。
バックアップしたファイルが上書きされないように、コピーを作成しておきます。

$ ls -l /srv/tftp/r1-config{,.000}
$ sudo cp -pi /srv/tftp/r1-config{,.000}
$ ls -l /srv/tftp/r1-config{,.000}

コンフィグ戻しの検証

変更前の設定を保存しておきます。

r1#terminal length 0
r1#show run | redirect flash:config-before

r1#show flash:
-#- --length-- -----date/time------ path
1          837 Mar 01 2002 00:17:06 config-before

61440 bytes available (2048 bytes used)

動作の確認のため設定を変更

  1. 必要な情報を削除します。
r1(config)#router ospf 1
r1(config-router)#no network 10.2.1.0 0.0.0.255 area 0
  1. 誤った設定を入れます。
r1(config)#int fa0/1
r1(config-if)#shut
  1. 不要な情報を追加します。
r1(config)#enable password cisco

確認のため変更後の設定を保存しておきます。

r1#show run | redirect flash:config-edit

r1#show flash:
-#- --length-- -----date/time------ path
1          837 Mar 01 2002 00:17:06 config-before
2          834 Mar 01 2002 00:21:40 config-edit

59392 bytes available (4096 bytes used)

差分を確認すると以下のようになります。

r1#show archive config differences flash:config-before flash:config-edit
Contextual Config Diffs:
+Current configuration : 773 bytes
+enable password cisco
interface FastEthernet0/1
 +shutdown
-Current configuration : 776 bytes
router ospf 1
 -network 10.2.1.0 0.0.0.255 area 0
  • enable password の行が追加されている
  • shutdown の行が追加されている
  • network の行が削除されている

コンフィグの戻しを実行

ここで、前項でバックアップしたコンフィグを戻してみます。

r1#copy tftp://10.2.0.1/r1-config run
Destination filename [running-config]?
Accessing tftp://10.2.0.1/r1-config...
Loading r1-config from 10.2.0.1 (via FastEthernet0/0): !
[OK - 776 bytes]

776 bytes copied in 9.284 secs (84 bytes/sec)

*Mar  1 00:23:38.923: %SYS-5-CONFIG_I: Configured from tftp://10.2.0.1/r1-config by console

確認のためコンフィグ戻しを実行した時点の設定を保存しておきます。

r1#show run | redirect flash:config-after

r1#
r1#show flash:
-#- --length-- -----date/time------ path
1          837 Mar 01 2002 00:17:06 config-before
2          834 Mar 01 2002 00:21:40 config-edit
3          869 Mar 01 2002 00:24:16 config-after

57344 bytes available (6144 bytes used)

結果を確認

変更を行う前のコンフィグと比較すると、同じ内容に戻っていません。

r1#show archive config differences flash:config-before flash:config-after
Contextual Config Diffs:
+Current configuration : 808 bytes
+enable password cisco
interface FastEthernet0/1
 +shutdown
-Current configuration : 776 bytes
  • enable password の行が追加されている
  • shutdown の行が追加されている

running-config に対するコピーは、マージの形になります。
商用の複雑な設定が入っている機器の場合は、非常に面倒なものとなります。
下記によると トラブルの元 実環境においては使用しない とのことです。

https://www.infraexpert.com/study/ciscoios9.html

後片付け

確認が終わったら不要なファイルを削除します。

r1#delete flash:config-before
Delete filename [config-before]?
Delete flash:config-before? [confirm]

r1#delete flash:config-edit
Delete filename [config-edit]?
Delete flash:config-edit? [confirm]

r1#delete flash:config-after
Delete filename [config-after]?
Delete flash:config-after? [confirm]

r1#show flash
No files on device

63488 bytes available (0 bytes used)

(番外編) Cisco デバイスを tftp サーバとして利用する

https://community.cisco.com/t5/networking-knowledge-base/how-to-configure-a-cisco-router-as-tftp-server/ta-p/3125212

tftp クライアントに対して特定のファイルだけ get させるような形のtftp サーバとして機能させることができます。

r1#conf t
r1(config)#tftp-server flash:config-after

tftp クライアントで get することができます。

$ tftp 10.2.0.254 -c get config-after
$ ls config-after
config-after

まとめ

設定を戻す時は copy tftp: run を使うと、設定がマージされて複雑になるため、
ターミナル画面にコンフィグを貼り付けて入力することで戻すのがよさそうです。

GitHubで編集を提案

Discussion