Cisco IOS の IP SLA は、ネットワークの到達性や応答時間を測定するための機能です。一般的には、ICMP Echo と Object Tracking を組み合わせて、スタティックルートの切り替えや死活監視に使われます。
この記事では、その少し外れた使い方として、IP SLA の HTTP GET を利用し、Cisco ルーターからダイナミック DNS の更新 URL を定期的に呼び出す構成を整理します。Value Domain のように、指定 URL へ必要なパラメータを付けてアクセスする形式の DDNS であれば、IP SLA を簡易的な DDNS 更新トリガーとして使える場合があります。
ただし、これは本来の DDNS クライアント機能ではありません。IP SLA は HTTP リクエストの到達性や応答を見ますが、DDNS サービス側で実際にレコード更新が成功したかを厳密に保証するものではありません。この違いを理解して使う必要があります。
| 観点 | 見ること |
|---|---|
| IP SLA の役割 | HTTP GET を定期的に実行する |
| DDNS 側の役割 | 受け取ったパラメータで DNS レコードを更新する |
| 注意点 | IP SLA の成功と DDNS 更新成功は同じではない |
| 確認方法 | IP SLA 統計と、外部からの DNS レコード確認を分けて見る |
書籍
マスタリング TCP/IP 入門編 第 6 版
TCP/IP、DNS、HTTP、ルーティングなど、ネットワークの基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
IP SLA は何をする機能か
IP SLA の主な目的は、ネットワークの応答性や到達性を測定することです。代表的には、特定の宛先へ ICMP Echo を送り、その結果を Object Tracking と連動させて経路を切り替える構成があります。
経路制御そのものは、BGP や OSPF などのダイナミックルーティングで設計する方が自然な場面も多いです。一方で、ライセンス、機器制約、既存構成との兼ね合いにより、IP SLA と Object Tracking を補助的に使うことがあります。
IP SLA は ICMP Echo だけではありません。DNS、HTTP、TCP Connect、UDP Jitter など複数の操作を扱えます。HTTP Operation が利用できる IOS であれば、指定した URL へ HTTP GET を実行できます。
ip sla 100
?Cisco 標準の DDNS 機能ではなく IP SLA を使う理由
Cisco IOS には、インターフェース設定で利用する ip ddns 系の機能があります。ただし、この機能は想定している DDNS サービスとの相性があり、すべての DDNS 更新仕様にそのまま合うとは限りません。
Value Domain のように、URL へドメイン名、パスワード、ホスト名などを付けて HTTP GET する形式であれば、IP SLA の HTTP GET で更新 URL を呼び出すという発想ができます。これは本来の DDNS クライアントではありませんが、単純な URL 呼び出しで済む用途では現実的な回避策になります。
言い換えると、IP SLA は 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 エントリを継続実行する |
URL にパスワードを含める場合は、設定ファイルや作業ログに秘密情報が残ります。Cisco IOS の設定として扱う以上、バックアップ、コンフィグ管理、画面共有、手順書への転記にも注意が必要です。
DNS 参照を有効にする
ルーターが URL のホスト名を名前解決できる必要があります。普段、誤入力時の待ち時間を避けるために no ip domain-lookup を入れている環境では、IP SLA の HTTP GET で名前解決できない場合があります。
ip domain lookup
ip name-server <DNS_SERVER>CLI の誤入力による名前解決待ちを嫌う場合は、IP SLA の URL を IP アドレスで扱えるか、あるいは DNS 設定をどう運用するかを分けて考えます。DDNS 更新のために 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>IP SLA 側の確認と DNS レコード側の確認は、別の観点です。前者は「URL を叩けたか」、後者は「期待する名前が期待するアドレスを返しているか」を見ます。
この構成の使いどころ
この方法は、Cisco ルーターを DDNS クライアントのように使うための工夫です。単純な HTTP GET で更新できる DDNS サービスであれば使えますが、レスポンス本文の解析、エラー時の再試行、ログ保存、複雑な認証処理は苦手です。
厳密に運用するなら、Linux サーバー上のスクリプトや専用 DDNS クライアントの方が柔軟です。一方で、ルーター側だけで定期的に更新 URL を叩ければよい、という割り切った用途では、IP SLA の HTTP GET は軽い解決策になります。
確認したいこと
確認したいこと:
- DDNS サービスが HTTP GET 形式の更新 URL に対応しているか
- URL に含まれるパスワードやトークンをコンフィグとして扱ってよいか
- ルーターが更新 URL の FQDN を名前解決できるか
- IP SLA の成功と DDNS 更新成功を混同していないか
- 外部から DNS レコードの更新結果を確認する方法があるか
- 専用 DDNS クライアントやサーバー側スクリプトで処理すべき要件ではないか
まとめ
IP SLA は、本来はネットワーク測定や到達性監視のための機能です。ただし HTTP GET を実行できるため、DDNS 更新 URL を定期的に呼び出す用途にも応用できます。
重要なのは、IP SLA の成功は HTTP リクエストの成功であり、DDNS 更新そのものの成功ではないという点です。DDNS の実更新は別途確認し、必要に応じてサーバー側のスクリプトや監視と組み合わせるのが現実的です。
関連する記事
あわせて読みたい:

