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 nowip 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 configurationshow 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: ForeverIP 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、DNS、HTTP、ルーティングなど、ネットワークの基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
このリンクは Amazon アソシエイトリンクです。


