ix2015で効率よくコンフィグのバックアップを取る方法

0. 面倒なコンフィグ管理

現在我が家では複数台のルータを運用している。特にUniversi IXシリーズは安いのでホイホイ買ってしまって、VPN先まで自分が管理しているせいで管轄ルータの台数がそれなりに増えてきちゃった。

おおよそ、外側のIX2015とかのコンフィグはいじることがないのだけれど、内側のIX2015のコンフィグはちょくちょく書き換える事になる。

VPNの設定などで色々と大きくなってきたコンフィグなんだけど、そうなってくるとコンフィグの管理が重要になってくる。

特に、もうすでに複数台のルータとVPNを結んでいる状態で、メインのVPN拠点ルータのコンフィグが飛んでしまうとかなり困った状態になってしまう。なのでバックアップが必要だ。

また、VPN上のルーティングのあたりは、まだまだ実験段階だったりする項目もあったりして、コンフィグの世代管理、過去のコンフィグに遡ったりもしたい。

バックアップ+世代管理、となると純粋にSubversionを利用すれば万事オッケーなんだけれど、リポジトリにコミットをするのが意外に大変だったりする。

というのも基本的にコンフィグは、telnetでログインした後、show running-configなどで取得してそれをテキストに貼り付けて保存、とすることで保存されるからだ。

とくにこのコピーが面倒くさい。複数のページにまたがっているときにはtelnet越しに何ページかに分けてコピーする必要があり、途中の行を飛ばしていないか、重複しないか、などヘンに気を遣ってしまう。

1. tftp

と、さて、どうやらIX2015ではtftp機能を利用することで、コマンド一発でコンフィグが保存できるらしい。

Trivial File Transfer Protocol(トリビアル ファイル トランスファー プロトコル、TFTP)は、UDPを用いてコンピュータ間でファイルを転送するためのプロトコルである。FTPに比べて軽量・単純なプロトコルである。認証機能が無いためにユーザ名やパスワードを必要としない。ポート番号69をデフォルトとして使用する。

Trivial File Transfer Protocol - Wikipedia

Universi のIXシリーズに限らず、他社製のルータでもtftpを通じてファームのアップデートやコンフィグの取得、送信が出来る機種は多かったりする。

このIX2015でもtftpを通じてバックアップをとれるようなので試してみた。

2. FreeBSDでtftpdを立ててソコへコンフィグを置こうとしてみる

FreeBSDでtftpのサーバを立ててみる。最近のサーバ、デーモンは基本的には独立して動くんだけれど、tftpはinetdで動かすのが主流らしい。

自分も主流に倣ってinetdで動かしてみる。

FreeBSDでtftpdを動かすのはとても簡単らしい。

    1. /etc/inetdを編集して以下の行を追加
tftp            dgram   udp     wait    root    /usr/libexec/tftpd
tftpd -s /path/to/tftpboot
      1. /path/to/tftprootディレクトリを作成。これを忘れると起動しない、うまく動かない。
      2. /etc/rc.dにinetd_enable=”YES”を追記
      3. /etc/rc.d/inetd restartを実行 (kill -HUP inetdpid でも可)

まずはtftpでstartup-configの転送を試してみる

rt8(config)# tftp put startup-config  192.168.xxx.yyy:hogehoge
TFTP error - Unknown Error

なにやらエラーが出たみたい。
windowsでtftpサーバを立てて試してみる

rt8(config)# tftp put startup-config  192.168.xxx.zzz:hoge
TFTP transfer complete, 4885 bytes, MD5 = cfc64755de8076f8eab5e820a1542f13

うまくいけた。何が原因なんだろう。
サーバのログを漁ってみる。
サーバはFreeBSD + inetd + /usr/libexec/tftpd。ログはxferlogに出てた。

Jun 17 17:34:48 xxxx tftpd[98211]: 192.168.xxx.yyy: write request for hogehoge: error 102
Jun 17 17:36:23 xxxx tftpd[98215]: 192.168.xxx.yyy: write request for statup-config: error 102

どうやらリクエストは飛んできてるらしいけどエラーらしい。
man tftpdを見てみる

TFTPD(8)                FreeBSD System Manager's Manual               TFTPD(8)

NAME
     tftpd — Internet Trivial File Transfer Protocol server

(中略)

    -w      Allow write requests to create new files.  By default tftpd
             requires that the file specified in a write request exist.  Note
             that this only works in directories writable by the user speci‐
             fied with -u option

     -W      As -w but append a YYYYMMDD.nn sequence number to the end of the
             filename.  Note that the string YYYYMMDD can be changed with the
             -F option.

どうやら-wオプション、または-Wオプションをつけると良いらしい。-Wだとファイル名の末尾に日付とかを自動でつけるようになるらしい。なるほど。
inetd.confを書き換えてみる

ee /etc/inetd.conf

該当する行で

tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -w -s /tftproot

inetdを再起動

%sudo /etc/rc.d/inetd restart
Stopping inetd.
Starting inetd.

再度転送してやる

rt8(config)# tftp put startup-config  192.168.xxx.yyy:hogehogeo.
TFTP transfer complete, 4885 bytes, MD5 = cfc64755de8076f8eab5e820a1542f13

うまくいった!

コメントを残す