CiscoルーターでVALUE-DOMAINのダイナミックDNSを更新

Ciscoルータには「IP SLA」という機能があります。細かい説明は割愛しますが、ざっくりいうとネットワークのパフォーマンスの測定に使用される機能です。

ただし、設計でよく使われるのは特定のIPアドレスにルータからPingを送信して応答の有無に応じて経路を切り替える(ip slaとtrackを紐付けて設定する)などの場合がほとんどです。といっても基本的な経路制御はダイナミックルーティングを使うことになりますが、例えばダイナミックルーティングだけではどうしてもうまく経路制御ができない場合や、引き継いだ案件でダイナミックルーティングが必要なのにも関わらず、見積もりに必要なソフトウェアが含まれていなかったため、赤字を出さずになんとかごまかす場合など(私が始めてIP SLA機能と出会ったのはこれです笑)です。

このIP SLA機能ですが、Ping以外にもいくつかの選択肢があります。以下は実機のコマンド出力です。

Router(config)# ip sla 100
Router(config-ip-sla)# ?
IP SLAs entry configuration commands:
  dhcp         DHCP Operation
  dns          DNS Query Operation
  ethernet     Ethernet Operations
  exit         Exit Operation Configuration
  ftp          FTP Operation
  http         HTTP Operation
  icmp-echo    ICMP Echo Operation
  icmp-jitter  ICMP Jitter Operation
  path-echo    Path Discovered ICMP Echo Operation
  path-jitter  Path Discovered ICMP Jitter Operation
  tcp-connect  TCP Connect Operation
  udp-echo     UDP Echo Operation
  udp-jitter   UDP Jitter Operation
  voip         Voice Over IP Operation

Router(config-ip-sla)#

さて、本題に入りたいと思います。最近まで自宅のダイナミックDNS更新はLinuxサーバにシェルスクリプトを作成して行っていましたが、Ciscoルータにもう少し仕事させたいと思って調べたところ、Ciscoルータ自体にDDNS更新機能が存在することが分かりました(インターフェイスにip ddns~のコマンドを設定するやつです)。これはいけるかなと思って設定してみましたが、おそらくdyndnsをベースに設計されているようで、あまりピンと来なかったので少し調べてすぐやめました笑。そして最終的に残ったのが、IP SLAです。

最初に記載したコマンド出力結果から、IP SLAではhttpが使用可能なことが分かります。十分にダイナミックDNS更新に使用できそうです。ダイナミックDNSはhttpでの更新が一般的に使われ、指定されたURLに必要なパラメータを付加してhttp getを行うことでシンプルに更新できます。バリュードメインもhttpでの更新です。それでは以下が設定例です。簡単です。

ip sla 100
 http get http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=[domain name]&p=[password]&h=[hostname] name-server [name server ip address]
 frequency 1200
ip sla schedule 100 life forever start-time now
ip sla 100
  • ip slaのEntry Numberを100とする。
http get http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=[domain name]&p=[password]&h=[hostname] name-server [name server ip address]
  • 指定のURLをhttp getする。
  • name-serverでDNSサーバを指定可能。
  • ルータがDNS問い合わせを可能にするため、「ip domain lookup」の設定が別途必須。一般的には明示的に無効にされている場合が多いので注意する。
  • URLとURL内のパラメータはバリュードメインで確認してください。
frequency 1200
  • http getを行う間隔を1200秒(20分)とする。
ip sla schedule 100 life forever start-time now
  • ip sla 100を有効にする。

ちなみにCiscoルータで「?」を入力するのにはちょっとしたコツがあります。ヒントは「Ctrl + v」と「VT100」です。私は小一時間これではまったので、分からない方はぜひ格闘してみてください笑。また、動作確認には以下のコマンドを使用します。基本的に「Number of successes:」のカウントが増え、「Number of failures:」のカウントは0が正常です。だめな場合はDNS周りの確認からはじた方が良いかもしれません。

Router# show ip sla statistics
Load for five secs: 0%/0%; one minute: 5%; five minutes: 2%
Time source is NTP, 00:10:15.021 JST Sat May 16 2015

IPSLAs Latest Operation Statistics

IPSLA operation id: 100
        Latest RTT: 18 milliseconds
Latest operation start time: 00:09:48 JST Sat May 16 2015
Latest operation return code: OK
Latest DNS RTT: 3 ms
Latest TCP Connection RTT: 4 ms
Latest HTTP Transaction RTT: 11 ms
Number of successes: 1
Number of failures: 0
Operation time to live: Forever


Router#

ここで気をつけないといけないのは、「Number of successes:」のカウントが増えているからといってダイナミックDNSが正常に更新されているとは限らないということです。IP SLAは正常にhttp getができれば正常とみなします。なのでhtmlの中身がエラーでも判別はできません。実際に更新されているかはバリュードメインで確認しましょう。このあたりはシェルスクリプトの方が高機能に作成できますが、単なるダイナミックDNSの更新なのでこれで十分でしょう。

CiscoルーターでVALUE-DOMAINのダイナミックDNSを更新

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る