DNSでISSの位置を確認する
(shkspr.mobi)- DNS LOCレコードを使って、国際宇宙ステーション(ISS) のリアルタイム位置情報を照会できる
- LOCレコードは緯度・経度・高度の情報を保存し、衛星の位置追跡に適した機能を提供する
- 例のドメイン
where-is-the-iss.dedyn.ioにDNS問い合わせを行うと、ISSの最新位置が返される - N2YO API を活用して位置データを取得し、15分ごとにLOCレコードが自動更新される
- deSECのような API対応ドメインサービス を通じて、LOC情報を効率的に更新できる
概要
- DNSの esoterica(マニア向け機能)への興味をきっかけに、DNS LOCレコード を使って実際の物理的位置情報を世界中へ配布できる
- 一般に ドメイン名 はサーバーの物理的な場所と結び付けられるが、LOCレコードを使えばサーバーだけでなく珍しい機器の位置も記録できる
DNS LOCレコードとは?
- RFC 1876で定義された 実験的標準 であり、サーバーの 緯度・経度・高度 情報をDNSに記録できる
- 最低高度は -100,000m(バンカーなど地下の位置も表現可能)、最高高度は 42,849,672m(静止軌道衛星などまで表現可能)
- 衛星をはじめとするさまざまな機器の位置情報をDNSで伝えられる機能を提供する
国際宇宙ステーション(ISS)の位置照会サービス実装
-
where-is-the-iss.dedyn.ioドメインを作成し、別個のWebサイト・ping・一般的なインタラクションなしで DNS問い合わせだけで動作 する -
LinuxやMacでは、以下のコマンドでISSの位置情報を問い合わせできる
dig where-is-the-iss.dedyn.io LOC -
返却例: 緯度・経度・高度の情報がLOC形式で提供される
where-is-the-iss.dedyn.io. 1066 IN LOC 47 24 53.500 N 66 12 12.070 W 430520m 10000m 10000m 10000m -
15分ごとに最新の位置情報へ更新 される(ベストエフォート方式)
位置データの取得と変換
-
N2YO のWebサイトとAPIを通じて、さまざまな軌道上の物体を追跡でき、無料ティアのAPIも提供されている
-
例のAPI呼び出しで、最新の衛星位置(緯度、経度、高度など)を JSON形式 で取得できる
https://api.n2yo.com/rest/v1/…=_____ -
返される緯度・経度は 小数点形式、高度はKm単位のため、LOCレコードへ変換する際には度分秒(DMS)およびメートル(m)単位への変換が必要
LOCレコード更新の自動化
- deSEC(ベルリン拠点の非営利)では、APIでLOCレコードの初回作成と更新が可能
- LOCの初回登録例
curl https://desec.io/api/v1/domains/where-is-the-iss.dedyn.io/rrsets/ ... --data '{"type": "LOC", "records": ["..."], "ttl": 900}' - 更新ではHTTP PATCHを使い、変更された情報だけを送信する
- TTL(900秒、15分) に設定し、コードが15分ごとに自動更新を行う
- API利用量制限 を守りつつ、効率的に最新データを提供する
- さらにTXTレコードなどを使って、更新時刻の記録などさまざまな拡張も可能
結論
- 今回の試みは、DNSのひと味違う活用可能性 を示す技術デモである
- 今後はMars Roverなど、さらに多様な宇宙オブジェクトの位置もDNS LOCレコードで表現できる可能性を示している
- DNSを活用した斬新な応用例として、インフラ/IT業務の自動化、位置情報管理などへの拡張性もある
1件のコメント
Hacker Newsのコメント
http://open-notify.org/
https://www.ckdhr.com/dns-loc/