where-is-the-iss.dedyn.io, bir web sitesi değil; yalnızca DNS LOC kaydı ile Uluslararası Uzay İstasyonu'nun (ISS) yaklaşık konumunu döndüren eğlenceli bir deney
- DNS LOC, RFC 1876 kapsamındaki deneysel bir standart ve alan adı kayıtlarında enlem-boylamın yanı sıra irtifayı da tutabiliyor
- LOC kaydının irtifa aralığı -100.000m ile 42.849.672m arasında olduğundan, yer altı tesislerinden jeostasyoner uydulara kadar ifade edilebiliyor
- ISS koordinatları N2YO API'den alınıyor; LOC biçimine uyması için irtifa km'den m'ye, enlem-boylam ise derece-dakika-saniye biçimine dönüştürülüyor
- Kayıt deSEC API ile güncelleniyor ve TTL 900 saniye olarak ayarlanıyor; böylece her 15 dakikada bir en iyi çaba (best-effort) yaklaşımıyla en güncel konum yansıtılıyor
DNS LOC kaydıyla konum saklamak
- Alan adları genelde sunucuları işaret eder, ancak sunucular da sonuçta veri merkezlerinde bulunan fiziksel konuma sahip cihazlardır
- DNS LOC kaydı, bir alan adına enlem, boylam ve irtifa ekleyebilen bir DNS kayıt türüdür
- RFC 1876, LOC kaydını tanımlayan deneysel standarttır
- Veri merkezleri yüksek binalarda ya da yer altında bulunabileceğinden, irtifa parametresi de buna dahildir
- Minimum irtifa -100.000m'dir
- Maksimum irtifa 42.849.672m olup, jeostasyoner uydular için de yeterli bir aralıktır
where-is-the-iss.dedyn.io
where-is-the-iss.dedyn.io, ISS'nin yaklaşık konumunu bir DNS sorgusuyla almak için oluşturulmuş bir alan adıdır
- Bu alan adı bir web sitesi değildir; ping atılamaz ve DNS dışında başka bir etkileşim yöntemi yoktur
- Linux ve Mac kullanıcıları LOC kaydını şu komutla sorgulayabilir
dig where-is-the-iss.dedyn.io LOC
- Yanıt, ISS'nin enlem, boylam ve irtifasını LOC biçiminde döndürür
;; ANSWER SECTION:
where-is-the-iss.dedyn.io. 1066 IN LOC 47 24 53.500 N 66 12 12.070 W 430520m 10000m 10000m 10000m
- DNS kaydı her 15 dakikada bir en iyi çaba yaklaşımıyla güncellenir
- Windows PowerShell veya Command Prompt üzerinde LOC kaydı sorgulamanın kolay bir yolu olmadığı düşünülüyor
Konum verisini almak
- N2YO, yörüngedeki çeşitli nesneleri izlemeye yarayan bir web sitesi ve cömert bir ücretsiz katmana sahip bir API sunuyor
- ISS, N2YO API'de 25544 uydu kimliğiyle sorgulanıyor
- API yanıtında
satlatitude, satlongitude, sataltitude, timestamp, eclipsed gibi alanlar bulunuyor
{
"info": {
"satname": "SPACE STATION",
"satid": 25544,
"transactionscount": 7
},
"positions": [
{
"satlatitude": -21.25409321,
"satlongitude": 140.3335763,
"sataltitude": 420.09,
"azimuth": 292.92,
"elevation": -70.95,
"ra": 202.69300845,
"dec": -32.16097472,
"timestamp": 1751366048,
"eclipsed": true
}
]
}
- N2YO yanıtındaki irtifa km cinsindedir, ancak LOC biçimi m cinsinden değer ister
- Enlem ve boylam ondalık biçimde geldiği için, LOC kaydına eklemek üzere derece-dakika-saniye (Degrees, Minutes, Seconds) biçimine çevrilmeleri gerekir
deSEC ile LOC kaydını güncellemek
- LOC kaydı güncelleme API'si sunan ücretsiz alan adı sağlayıcısı pek olmadığından, Berlin merkezli kâr amacı gütmeyen deSEC seçilmiş
- deSEC, API belgelerini sağlıyor
- İlk LOC kaydı,
rrsets uç noktasına curl ile ekleniyor
curl https://desec.io/api/v1/domains/where-is-the-iss.dedyn.io/rrsets/ \
--header "Authorization: Token _______" \
--header "Content-Type: application/json" --data @- <<< \
'{"type": "LOC", "records": ["40 16 25.712 S 29 32 36.243 W 427550m 0.00m 10000m 10m"], "ttl": 900}'
- Kaydı güncellemek biraz daha zahmetli; HTTP PATCH isteğinin farklı bir URL'ye gönderilmesi gerekiyor
- PATCH isteğinde yalnızca değişen veriyi göndermek yeterli
curl -X PATCH https://desec.io/api/v1/… \
--header "Authorization: Token _______" \
--header "Content-Type: application/json" --data @- <<< \
'{"records": ["40 16 25.712 S 29 32 36.243 W 427550m 0.00m 10000m 10m"]}'
Güncelleme sıklığı ve sınırlamalar
- TTL 900 saniye olarak ayarlanmış
- Kod her 15 dakikada bir çalışarak DNS kaydını güncelliyor
- Bu aralık, hem N2YO hem de deSEC tarafındaki API limitleri içinde kalmayı sağlıyor
- Son güncelleme zamanı veya başka yapısız veriler bir TXT kaydına da konabilir, ancak bu demoda hızlı bir kavram kanıtı için bunun yeterli olduğu düşünülüyor
- Veriyi DNS TXT kaydıyla dağıtmak, istek limiti fiilen olmayan bir API gibi de kullanılabilir; bu yaklaşım statik ya da sık değişmeyen veriler için daha uygundur
DNS'e gömülebilecek sıra dışı veriler
- Bu demo, DNS'in beklenmedik kayıt türlerini de taşıyabildiğini gösteren karmaşık ve eğlenceli bir yöntem
- ISS koordinatlarını LOC kaydıyla ifade etmek gibi, Mars Rover koordinatlarının nasıl temsil edilebileceği de akla gelebilir
- Konuyla ilgili DNS yazıları arasında BIMI - SVG in DNS TXT WTF?! ve Why you can't dig Switzerland yer alıyor
1 yorum
Hacker News yorumları
Başka bir kayıt olan Adlandırma Yetki İşaretçisi (NAPTR) içinde Houston Johnson Space Center’ın telefon numarası yer alıyor
dig where-is-the-iss.dedyn.io NAPTRile bakıncaE2U+voice:telvetel:+12814830123görünüyorAPI limitlerini anlıyorum ama Dünya’nın etrafını 90 dakikada bir tur atan bir nesne için 15 dakikalık güncelleme aralığı epey uzun görünüyor
Ortalama olarak Dünya çevresinin yaklaşık 1/12’si kadar, kabaca Lizbon ile İstanbul arasındaki mesafe kadar konum sapabilir
Ücretsiz olarak dakika düzeyinde güncellemeye izin veren bir DNS güncelleme yöntemi bilirsem memnuniyetle taşırım
Hassas konum takibi için kesinlikle büyük bir hata payı
İlk cümleyi “I love DNS erotica” diye okudum; sanırım fazla uzun süredir içeride kaldım, yürüyüşe çıkmam gerektiğinin işareti
Şimdi yürüyüşe çıkıyorum
Soğuk duş da gerekebilir
Epey harika. Az önce dns.toys’a da ekledim
dig iss.sky +short @dns.toys[1] https://dns.toys
Harika. Zekice ve aynı zamanda öğretici. JWST için de benzer bir şey yapılabilir mi diye hemen merak ettim
Ne yazık ki DNS LOC kaydı yaklaşık 42 milyon metreyle, yani 42.000 km irtifayla sınırlı; JWST ise bundan 38 kat daha uzakta, yaklaşık 1,5 milyon km mesafede
Bu yüzden LOC’un irtifa alanıyla konumu ifade etmek mümkün değil. Hubble için belki olabilir
Ay’ın GPS koordinatlarını sormaya benziyor. NASA 2023’te LRO ile Ay’da zayıf GPS sinyali almayı denedi, ama bu henüz navigasyon için işe yarar değil
Bu yöntemin ISS’e uygun olmasının nedeni, Dünya yüzeyi üzerinde bir uydu alt noktası bulunması. İrtifadan bağımsız olarak GPS sinyali alınabiliyor
Ayrıca TLE, Dünya yörüngesindeki bir nesne olan ISS için geçerli. TLE, Dünya yörüngesindeki uyduların konumunu ve hızını yörünge elemanlarıyla tanımlamak ve SGP4 gibi modellerin bunları yorumlaması için tasarlanmış
“RFC 1876 deneysel bir standarttır” denmiş; gerçekten çok uzun süren bir deney
University of Warwick, January 1996
[1] https://datatracker.ietf.org/doc/html/rfc1876
DNS LOC kayıtları hakkında ek kaynak: <https://www.ckdhr.com/dns-loc/>
Biraz daha karmaşık ama çok daha hızlı tepki veren yöntem,
where-is-the-iss.shkspr.mobiiçin NS kaydını kendi VPS’inizin IP’sine yönlendirmekSonra UDP/53 ve TCP/53 dinleyen bir program çalıştırıp yalnızca LOC kaydı ve mesaj ID’si dinamik olarak değişen DNS paketleriyle yanıt vermek yeterli
DNS spesifikasyonuna tamamen uymaz ama bu kullanım için yeterli. API yanıtı önbelleğe alınarak çağrı limitlerinden kaçınılabilir
Ben bizzat böyle bir hizmet işletiyorum;
2+2.op.dyn.bortzmeyer.fr/TXTveyaparis.now.weather.dyn.bortzmeyer.fr/TXTile test edebilirsinizDNS, federe, okuma için optimize edilmiş, coğrafi olarak çoğaltılmış ve nihai tutarlılığa sahip bir anahtar-değer deposudur
RFC’ye bakınca bile bunun neden gerekli olduğu açıklanmıyor
1996’da üniversite ya da veri merkezi lojistiğiyle ilgili bir nedeni mi vardı diye düşünüyorum
LOC RR’ın USENET omurga akış haritaları, IP paketlerinin coğrafi yolunu gösteren “görsel traceroute” ve yönetilen host ile router haritaları oluşturan ağ yönetimi uygulamaları için kullanılabileceği yazıyor
Bunun “42 Wallaby Way, Sidney” gibi insan tarafından okunabilir bir metin olmaması için de bir neden yok