7 मार्च 2024 को हुई Tailscale.com आउटेज घटना
(tailscale.com)- 7 मार्च 2024 को समाप्त हुए TLS प्रमाणपत्र के कारण tailscale.com लगभग 90 मिनट तक बंद रहा, लेकिन प्रभाव मुख्यतः दस्तावेज़ और मार्केटिंग साइट तक सीमित रहा
- दिसंबर 2023 में वेबसाइट के बड़े पुनर्गठन और नए होस्टिंग पर माइग्रेशन के लगभग 90 दिन बाद यह समस्या सामने आई, और स्व-प्रबंधित प्रॉक्सी कॉन्फ़िगरेशन, जो IPv6 सपोर्ट न होने की भरपाई के लिए बनाया गया था, ऑटो-रिन्यूअल में बाधा बना
- प्रमाणपत्र समाप्ति की निगरानी करने वाला प्रोबर केवल IPv6 पाथ की जाँच कर रहा था, और अलग वैध प्रमाणपत्र वाले प्रॉक्सी से होकर गुजरने के कारण tailscale.com और www.tailscale.com के वास्तविक प्रमाणपत्रों की निकट आती समाप्ति को नहीं पकड़ सका
- सामान्य Tailscale उपयोग अधिकांशतः बाधित नहीं हुआ, लेकिन दस्तावेज़, ब्लॉग, install.sh, और वे उपयोगकर्ता जो सीधे URL नहीं जानते थे, उनके लिए मैनेजमेंट कंसोल तक पहुँचने की प्रक्रिया प्रभावित हुई
- Tailscale ने अतिरिक्त AAAA रिकॉर्ड हटाकर और मैन्युअल रिन्यूअल करके सेवा बहाल की, और अल्पकाल में मैन्युअल रिन्यूअल व्यवस्था व IPv4/IPv6 अलग-अलग जाँच के बाद अधिक प्रत्यक्ष IPv6 सपोर्ट का लक्ष्य रखा है
प्रमाणपत्र समाप्ति क्यों नहीं पकड़ी गई
- 7 मार्च 2024 को tailscale.com और www.tailscale.com के TLS प्रमाणपत्र समाप्त हो गए, जिससे लगभग 90 मिनट तक साइट एक्सेस बाधित रही
- दिसंबर 2023 में Tailscale ने बड़े वेबसाइट पुनर्गठन के साथ नए होस्टिंग प्रदाता पर माइग्रेट किया
- नए होस्टिंग प्रदाता ने डिफ़ॉल्ट रूप से IPv6 सपोर्ट नहीं दिया, इसलिए Tailscale ने IPv6 अनुरोधों को संभालने के लिए अपना प्रॉक्सी चलाया और अतिरिक्त AAAA रिकॉर्ड सेट किए
- होस्टिंग प्रदाता ने इस कॉन्फ़िगरेशन को “misconfiguration” मानकर अलर्ट भेजा, लेकिन अलर्ट में यह स्पष्ट नहीं था कि यही कॉन्फ़िगरेशन स्वचालित प्रमाणपत्र रिन्यूअल पूरा होने से रोक रहा है
- प्रमाणपत्र समाप्ति की निगरानी के लिए प्रोबर केवल IPv6 पाथ की जाँच कर रहा था
- प्रोबर स्व-प्रबंधित प्रॉक्सी से होकर गुजरता था
- प्रॉक्सी के पास अलग से प्रबंधित एक वैध प्रमाणपत्र था
- इस वजह से tailscale.com और www.tailscale.com के वास्तविक प्रमाणपत्रों की समाप्ति पहले से दिखाई नहीं दी
उपयोगकर्ताओं को दिखा प्रभाव
- प्रभाव उन संसाधनों और इंस्टॉलेशन फ़्लो पर केंद्रित था जो वेबसाइट पर निर्भर थे
- Tailscale दस्तावेज़, ब्लॉग, और अन्य वेबसाइट-आधारित संदर्भ सामग्री आउटेज के दौरान उपलब्ध नहीं थी
- मैनेजमेंट कंसोल और सेटिंग पेज स्वयं प्रभावित नहीं थे, लेकिन जो उपयोगकर्ता
https://login.tailscale.com/पर सीधे जाना नहीं जानते थे, वे मान सकते थे कि वह पेज ऑफ़लाइन है - क्विक इंस्टॉल स्क्रिप्ट उपलब्ध नहीं थी, जिससे कुछ इंस्टॉलेशन और ऑटोमेटेड इंस्टॉल प्रभावित हुए
- जिन डोमेन्स से वास्तव में Tailscale पैकेज इंस्टॉल होते हैं वे उपलब्ध रहे, और Go के
go getमैकेनिज़्म के जरिए रिज़ॉल्यूशन रुकने का असर caching के कारण न्यूनतम रहा माना गया - Tailscale के डिज़ाइन के कारण अधिकांश उपयोगकर्ताओं को अधिकांश उपयोग मामलों में इस आउटेज से रुकावट नहीं हुई, और direct connection सिद्धांत की वजह से नेटवर्क tailscale.com जैसे किसी एक एंडपॉइंट की तत्काल उपलब्धता पर कम निर्भर है
रिकवरी और पुनरावृत्ति रोकथाम
- समस्या की पुष्टि होने के बाद Tailscale ने “अतिरिक्त” AAAA रिकॉर्ड अस्थायी रूप से हटाए और संबंधित प्रमाणपत्रों को मैन्युअल रूप से रिन्यू किया
- इस कदम से उपयोगकर्ताओं को दिखने वाली आउटेज तुरंत समाप्त हो गई, और साइट व सेवाओं को IPv6 पर उपलब्ध कराने के लिए रिकॉर्ड जल्द ही बहाल कर दिए गए
- ऑटो-रिन्यूअल की समस्या बनी हुई है, इसलिए अल्पकाल में कंपनी डुप्लिकेट कैलेंडर अलर्ट और निर्धारित मैन्युअल रिन्यूअल समय के साथ प्रमाणपत्रों को सीधे रिन्यू करने की योजना बना रही है
- प्रोबर इन्फ्रास्ट्रक्चर को IPv4 और IPv6 एंडपॉइंट्स की अलग-अलग जाँच करने के लिए अपडेट किया जाएगा
- दीर्घकाल में लक्ष्य यह है कि वेबसाइट इन्फ्रास्ट्रक्चर में IPv6 को अधिक प्रत्यक्ष रूप से सपोर्ट किया जाए ताकि स्व-प्रबंधित प्रॉक्सी की आवश्यकता न रहे
1 टिप्पणियां
Hacker News की राय
अब expiring certificates को outage का नया DNS कहना चाहिए
फिर भी Tailscale कितना अच्छी तरह बनाया गया है, यह अब भी हैरान करता है। मैं heavy user नहीं हूँ, लेकिन कुछ on-prem servers और AWS production environment — इन दोनों तक Tailscale से access करता हूँ
कहीं से भी काम कर सकता हूँ। वीकेंड पर ECS container deploy करने की कोशिश कर रहा था, लेकिन local Wi‑Fi इतना धीमा था कि deployment बार-बार timeout हो रहा था
इसलिए on-prem development machine में SSH किया, latest code के लिए
git pullचलाया और वहीं से deploy कर दिया। On-prem और AWS दोनों बिना खुले ports के सुरक्षित रहे, और AWS में किसी छोटे EC2 पर सिर्फ Tailscale agent चलाकर production Aurora database को भी बिना खुले ports के test किया जा सकता हैजब किसी दूसरे developer को network access देना हो, तब भी Tailscale बहुत आसान है, और access revoke करना भी उतना ही आसान है। इस deployment को GitHub Actions जैसी किसी चीज़ से भी किया जा सकता था ताकि खराब internet की समस्या से बचा जा सके, लेकिन मैं इसे manually करना चाहता था, और Tailscale ने यह संभव बनाया
आगे मैं यह action इस्तेमाल करना चाहता हूँ ताकि कोई भी GHA worker port expose किए बिना deployment machine तक पहुँच सके: https://github.com/tailscale/github-action
expired certificate ने फिर गड़बड़ की
मेरा सुझाव है कि postmortem के हिस्से के रूप में install script को marketing site से अलग किया जाए, या कोई alternate path रखा जाए। इससे marketing site activity ग्राहक operations के critical path से अलग हो जाएगी। ऐसी घटनाएँ आम हैं, इसलिए सामान्य isolation बनाए रखने के इतने करीब पहुँचकर भी यह चूक होना और खलता है
अगर कई providers की uptime ट्रैक करें, तो GitHub या Zendesk की साइट के कुछ हिस्सों का down होना उम्मीद से ज़्यादा आम है। वैसे ये फिर भी अच्छे उदाहरणों में आते हैं
लगता है Cloudflare यह काम काफी हद तक कर देता है अगर domain वहीं host हो, लेकिन शर्त यह है कि Cloudflare इस्तेमाल करना पड़ेगा
यह बिल्कुल वही गलती है जो मैंने एक पुरानी कंपनी में की थी। Marketing site
www.foo.comके home पर web app login pageapp.foo.comका link लगाया थाmarketing site का पहला outage होने के बाद ही समझ आया कि महीने का $40 hosting plan कोई साधारण marketing site नहीं, बल्कि critical infrastructure था। सचमुच load झेलने वाला 40 डॉलर का hosting था। App down नहीं था, लेकिन users को लगा कि down है
मैंने सीखा कि users अक्सर सिर्फ वही रास्ता अपनाते हैं जो हमने उनके लिए बनाया है; उन्हें यह पता ही नहीं होता कि कोई दूसरा रास्ता भी है। और अगर वह एक रास्ता हटा दो, तो कुछ users पूरी तरह भटक जाते हैं
tailscaleटाइप करने पर पहला resulttailscale.comआता है। मैं Tailscale admin console इतना अक्सर इस्तेमाल नहीं करता कि कोई अलग URL याद रखूँपहले
cloudflareलिखने पर browser अपने-आपdash.cloudflare.comautocomplete कर देता था, लेकिनcloudflare.comwebsite पर सिर्फ एक बार जाने के बाद वही पहला result बन गया, और Cloudflare में भी मैं वही करने लगाटीम वाकई अच्छी है, लेकिन मेरी राय में pricing बहुत ज़्यादा है। ठीक-ठाक access control के लिए VPN पर महीने के 18 डॉलर देना management को बेचना लगभग नामुमकिन है, और lower tier को उस feature के बिना बेचना भी मुश्किल है
सस्ता विकल्प क्या है, और क्या वे भी SSH features, automation services के लिए OAuth network auth, Kubernetes cluster के अंदर VPN node load balancer configuration, और Let’s Encrypt के ज़रिए ACME certificate request automation देते हैं?
सिर्फ free tier में जो features मैं इस्तेमाल कर रहा हूँ, उनमें भी कई ऐसी चीज़ें हैं जिन्हें आम तौर पर VPN service की भूमिका नहीं माना जाता। Features लगातार जुड़ भी रहे हैं, इसलिए यह काफ़ी दिलचस्प और competitive option लगता है। बल्कि low-cost tier में इतना कुछ मिलना ही मुझे चौंकाता है, इसलिए यह राय और भी दिलचस्प लगती है
Tailscale से आंशिक रूप से overlap करने वाले कुछ competitors भी हैं, और हो सकता है वे आपकी ज़रूरत से पूरी तरह मेल न खाएँ
लेकिन कुछ ही मिनटों में project के कुछ हिस्से पहले से कहीं बेहतर तरीके से एक-दूसरे से जुड़कर चलने लगे
यह उन दुर्लभ tools में से एक है जो अपने काम के मुकाबले सचमुच बहुत simple हैं, और free tier भी 100 devices और 3 users के साथ काफी उदार है
हाँ, मेरी भूमिका ऐसी है कि ऐसे विषयों पर management को मनाने में मेरा प्रभाव काफ़ी है, लेकिन price कोई समस्या नहीं थी
मैं पिछले साल अप्रैल से संतुष्ट ग्राहक हूँ, और सब लोग premium यानी महँगे tier पर हैं। Development speed भी प्रभावशाली है। जिन कुछ features के लिए कहा गया था कि आने में कई साल लग सकते हैं, वे पिछले साल ही ship हो गए
Cloudflare One भी एक alternative हो सकता था, लेकिन वह और महँगा पड़ता
जानना चाहता हूँ कि वे website provider के रूप में किसका इस्तेमाल करते हैं। लगभग बाकी सभी providers IPv6 support देते हैं, इसलिए IPv6 की वजह से इतने workaround करने पड़ना अजीब लगता है
$ host www.tailscale.comके result को देखें तोwww.tailscale.comका IPv4 address76.76.21.21Vercel का है, और IPv6 addresses Amazon के हैंIPv4 में Let’s Encrypt certificate इस्तेमाल होता है, और IPv6 में Amazon certificate इस्तेमाल होता है
दिसंबर में बड़े पैमाने पर rollout पर भरोसा करके आगे बढ़ सकना, इसका मतलब CI/CD और monitoring वाकई बहुत मज़बूत हैं — यह सच में ईर्ष्या करने लायक है। Engineering culture भी काफ़ी मज़बूत लगती है
लेकिन अभी भी कुछ सवालों के जवाब नहीं मिले हैं। अगर IPv6 configuration ने IPv4 के automatic certificate renewal को तोड़ा, तो यह बहुत पहले क्यों नहीं हुआ — यह जानने की उत्सुकता है। outage को ठीक करने में 90 मिनट क्यों लगे, यह भी जानना चाहता हूँ। यह ब्लॉग पोस्ट है, असली postmortem नहीं, लेकिन एक साधारण timeline भी होती तो अच्छा रहता
और यह भी जानना चाहता हूँ कि वे ऐसे DNS provider पर migrate क्यों नहीं करते जो IPv6 को native रूप से support करता हो। सिर्फ scripts या packages के लिए अलग domain रखना जितना operational burden लाता है, क्या वह वाकई उसके लायक है? package repository जैसे third party को छोड़कर, क्या और जगहें भी ऐसा करती हैं — यह भी जानना चाहता हूँ
समझ नहीं आता कि proxy को TLS terminate करने की ज़रूरत क्यों है। अगर यह सिर्फ़ TCP proxy होता, तो कम से कम monitoring यह गलतफ़हमी नहीं पालती कि certificate expiry पास नहीं है
ऊपर से, अगर domain validation TLS-ALPN challenge से हो रही थी, तो TCP proxy शायद automatic renewal भी संभव बना सकता था
अगर user IP की बिल्कुल ज़रूरत नहीं है तो यह समस्या नहीं, लेकिन logs और abuse detection में यह अक्सर उपयोगी होता है
https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt
जब हमें पहली बार पता चला कि IPv6 टूटा हुआ है, तब हमने जल्दी में proxy खड़ा किया था, और उस समय proxy सेट करने वाले लोगों को ACME के काम करने का तरीका नहीं पता था
हम इसे बस TCP proxy में बदलने वाले हैं
देखकर लगता है कि Tailscale
pkgs.tailscale.comके लिए NetActuate का उपयोग करता है। NetActuate शायद उचित कीमत पर कई locations से non-terminating proxy उपलब्ध कराने में मदद कर सकता है। उनकी website पर pricing नहीं है, लेकिन यह ऐसी कंपनी नहीं लगती जो egress traffic पर 50x margin लगाती होअगर Tailscale जैसी organization security से ज़रा भी जुड़े किसी क्षेत्र में एक बार भी फिसल जाए, तो मेरे जैसे थोड़े से paranoid व्यक्ति को भी यह बहुत जोखिमभरा महसूस होता है
इस हिस्से पर बेहतर explanation की ज़रूरत है
infrastructure monitoring तो होगी ही, इसलिए बस इतना करना है कि सभी public domains के लिए IPv4 और IPv6 पर connect करके, अगर certificate 19 दिनों के भीतर expire होने वाला हो तो alert करने वाला 50 lines का code जोड़ दिया जाए। automatic renewal 20 दिन पहले चला दो, बस काम हो गया
एक छोटी कंपनी के शुरुआती दिनों में SSL renewal कुछ बार छूट जाने के बाद मैंने यह code कई साल पहले लिखा था, और उसके बाद SSL से जुड़ा कोई outage नहीं हुआ
calendar invite की ज़रूरत नहीं, बस यही एक fix चाहिए। “prober infrastructure को update करके IPv4 और IPv6 endpoints को अलग-अलग verify करेंगे” — यही मुख्य बात है
इसमें लिखा है, “उस configuration को उस provider ने misconfiguration माना, और deploy करने के बाद से लगातार warning भेजता रहा”
तो क्या certificate से जुड़ी warnings 90 दिनों तक आती रहीं और फिर certificate fail हो गया?
मैंने actual warning नहीं देखी, इसलिए यह नहीं कह सकता कि warning ने इस बात को साफ़-साफ़ बताया था या नहीं