手当たり次第に書くんだ

飽きっぽいのは本能

Cisco IP SLA でダイナミック DNS を更新する – HTTP GET を使った DDNS 連携

Cisco IOS の IP SLA は、ネットワークの到達性や応答時間を測定するための機能です。一般的には ICMP Echo と Object Tracking を組み合わせて、スタティックルートの切り替えなどに使われます。

この記事では少し違う使い方として、IP SLA の HTTP GET を利用し、Cisco ルーターからダイナミック DNS の更新 URL を定期的に呼び出す構成を整理します。

IP SLA は監視用の機能ですが、HTTP GET を実行できるため、DDNS 更新 URL を定期的に呼び出す用途にも使えます。ただし、HTTP の戻り値本文までは厳密に判定しないため、更新成功の確認は DDNS 側でも行う必要があります。

IP SLA は何をする機能か

IP SLA の主な目的は、ネットワークの応答性や到達性を測定することです。代表的には、特定の宛先へ ICMP Echo を送り、その結果を Object Tracking と連動させて経路を切り替える構成があります。

通常、このような経路制御は BGP や OSPF などのダイナミックルーティングで設計する方が自然です。ただし、ライセンス、機器制約、既存構成との兼ね合いによって、IP SLA と Object Tracking を補助的に使う場面もあります。

IP SLA で利用できる操作

IP SLA は ICMP Echo だけではなく、DNS、HTTP、TCP Connect、UDP Jitter など複数の操作を扱えます。実機では、IP SLA の設定モードで利用できる操作を確認できます。

ip sla 100
 ?

環境や IOS のバージョンによって表示される項目は異なりますが、HTTP Operation が利用できる場合は、指定した URL へ HTTP GET を実行できます。

Cisco の標準 DDNS 機能ではなく IP SLA を使う理由

Cisco IOS には、インターフェース設定で利用する ip ddns 系の機能があります。ただし、この機能は想定している DDNS サービスとの相性があり、すべての DDNS 更新仕様にそのまま合うとは限りません。

Value Domain のように、指定 URL へ必要なパラメータを付けて GET リクエストを送る形式であれば、IP SLA の HTTP GET を使って更新処理を呼び出すという発想ができます。これは本来の DDNS クライアント機能ではありませんが、単純な URL 呼び出しで済む用途では実用的な回避策になります。

DDNS 更新用の IP SLA 設定例

次は、DDNS 更新 URL を 20 分ごとに呼び出す例です。ドメイン名、パスワード、ホスト名、DNS サーバーは自分の環境に合わせて置き換えます。

ip sla 100
 http get http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=<DOMAIN>&p=<PASSWORD>&h=<HOSTNAME> name-server <DNS_SERVER>
 frequency 1200
ip sla schedule 100 life forever start-time now
  • ip sla 100 は、IP SLA のエントリ番号を 100 にします。
  • http get は、指定した URL に対して HTTP GET を実行します。
  • name-server は、URL の名前解決に使う DNS サーバーを指定します。
  • frequency 1200 は、実行間隔を 1200 秒、つまり 20 分にします。
  • ip sla schedule は、IP SLA エントリを継続実行するための設定です。

DNS 参照を有効にする

ルーターが URL のホスト名を名前解決できる必要があります。普段、誤入力時の待ち時間を避けるために no ip domain-lookup を入れている環境では、IP SLA の HTTP GET で名前解決できない場合があります。

ip domain lookup
ip name-server <DNS_SERVER>

運用上、CLI の誤入力による名前解決待ちを嫌う場合は、IP SLA の URL を名前ではなく IP アドレスで扱えるか、あるいは DNS 設定をどう運用するかを分けて考えた方がよいです。

動作確認

IP SLA の実行状態は、統計情報で確認できます。

show ip sla statistics
show ip sla configuration

show ip sla statistics では、最新の実行結果、DNS RTT、TCP Connection RTT、HTTP Transaction RTT、成功回数、失敗回数などを確認できます。

IPSLAs Latest Operation Statistics

IPSLA operation id: 100
        Latest RTT: 18 milliseconds
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

IP SLA の成功と DDNS 更新成功は同じではない

注意点は、IP SLA の Number of successes が増えていても、DDNS の更新が成功したとは限らないことです。IP SLA は HTTP GET が実行できれば成功と判断するため、レスポンス本文にエラーが書かれていても、それを DDNS 更新失敗として扱えるわけではありません。

そのため、実際にレコードが更新されているかは、DDNS サービス側の管理画面や、外部からの名前解決結果で確認する必要があります。

dig <HOSTNAME>.<DOMAIN>

この構成の位置づけ

この方法は、Cisco ルーターを DDNS クライアントのように使うための工夫です。単純な HTTP GET で更新できる DDNS サービスであれば十分に使えますが、レスポンス本文の解析、エラー時の再試行、ログ保存、複雑な認証処理などは苦手です。

厳密に運用するなら、Linux サーバー上のスクリプトや専用 DDNS クライアントの方が柔軟です。一方で、ルーター側だけで定期的に更新 URL を叩ければよい、という割り切った用途では、IP SLA の HTTP GET は軽い解決策になります。

まとめ

IP SLA は、本来はネットワーク測定や到達性監視のための機能です。ただし HTTP GET を実行できるため、DDNS 更新 URL を定期的に呼び出す用途にも応用できます。

重要なのは、IP SLA の成功は HTTP リクエストの成功であり、DDNS 更新そのものの成功ではないという点です。DDNS の実更新は別途確認し、必要に応じてサーバー側のスクリプトや監視と組み合わせるのが現実的です。

参考書籍

参考
書籍
参考書籍
マスタリング TCP/IP 入門編 第6版

TCP/IP、DNS、HTTP、ルーティングなど、ネットワークの基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

関連する記事

関連する記事
Cisco IP SLA でダイナミック DNS を更新する – HTTP GET を使った DDNS 連携

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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

トップへ戻る