IPv6 AAAA रिकॉर्ड से जुड़े विलंब को कैसे रोकें?


11

हमारे विंडोज सर्वर AAAAहमारे विंडोज डीएनएस सर्वर के साथ आईपीवी 6 रिकॉर्ड दर्ज कर रहे हैं। हालाँकि, हमारे पास हमारे नेटवर्क पर IPv6 रूटिंग सक्षम नहीं है, इसलिए यह अक्सर स्टाल व्यवहार का कारण बनता है।

Microsoft RDP सबसे खराब अपराधी है। AAAADNS में रिकॉर्ड रखने वाले सर्वर से कनेक्ट होने पर , दूरस्थ डेस्कटॉप क्लाइंट पहले IPv6 की कोशिश करेगा, और कनेक्शन के समय तक IPv4 पर वापस नहीं आएगा। बिजली उपयोगकर्ता सीधे आईपी पते से जुड़कर इसके आसपास काम कर सकते हैं। ping -4 hostname.fooहमेशा के साथ IPv4 पते को हल करना तुरंत काम करता है।

इस देरी से बचने के लिए मैं क्या कर सकता हूं?

इस बिंदु पर, मैं एक स्क्रिप्ट लिखने पर विचार कर रहा हूं जो हमारे DNS ज़ोन से सभी AAAA रिकॉर्ड को शुद्ध करता है। कृपया, मुझे एक बेहतर तरीका खोजने में मदद करें।


अद्यतन: DNS रिज़ॉल्यूशन समस्या नहीं है। जैसा कि @joeqwerty अपने जवाब में बताते हैं, DNS रिकॉर्ड तुरंत वापस आ जाते हैं। दोनों Aऔर AAAAरिकॉर्ड तुरंत उपलब्ध हैं। समस्या यह है कि कुछ ग्राहक ( mstsc.exe) आईपीवी 6 पर एक कनेक्शन के लिए अधिमानतः प्रयास करेंगे, और आईपीवी 4 पर वापस आने में थोड़ा समय लेंगे।

यह एक रूटिंग समस्या की तरह लगता है। pingक्योंकि गंतव्य पता unroutable है आदेश एक "सामान्य विफलता" त्रुटि संदेश पैदा करता है।

C:\Windows\system32>ping myhost.mydomain
Pinging myhost.mydomain [2002:1234:1234::1234:1234] with 32 bytes of data:
General failure.
General failure.
General failure.
General failure.
Ping statistics for 2002:1234:1234::1234:1234:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

मुझे इस व्यवहार का पैकेट कैप्चर नहीं मिल रहा है। इसे (विफल) पिंग कमांड चलाने से Microsoft नेटवर्क मॉनिटर में कोई पैकेट नहीं बनता है। इसी तरह, mstsc.exeएक AAAAरिकॉर्ड के साथ एक मेजबान के साथ संबंध बनाने का प्रयास करने से आईपीवी 4 में गिरावट आने तक कोई यातायात नहीं होता है।

अद्यतन: हमारे मेजबान सभी सार्वजनिक रूप से निष्क्रिय IPv4 पतों का उपयोग कर रहे हैं। मुझे लगता है कि यह समस्या टूटी हुई 6to4 कॉन्फ़िगरेशन के लिए आ सकती है। 6to4 सार्वजनिक IP पते बनाम RFC1918 पतों के साथ मेजबानों पर अलग व्यवहार करता है।

अद्यतन: मेरे नेटवर्क पर 6to4 के साथ निश्चित रूप से कुछ गड़बड़ है। जब मैं विंडोज क्लाइंट पर 6to4 को अक्षम करता हूं, तो कनेक्शन तुरंत हल हो जाते हैं।

netsh int ipv6 6to4 set state disabled

लेकिन जैसा @joeqwerty कहते हैं, यह केवल समस्या का सामना करता है। मैं अभी भी यह पता लगाने की कोशिश कर रहा हूं कि हमारे नेटवर्क पर आईपीवी 6 संचार पूरी तरह से गैर-काम क्यों कर रहा है।


11
अपने नेटवर्क पर निश्चित रूप से IPv6 की तैनाती समाप्त करें।
माइकल हैम्पटन

1
क्या आपने इस IPv6 रिज़ॉल्यूशन की विफलता / देरी की पुष्टि करने के लिए क्लाइंट पर नेटवर्क कैप्चर चलाया है?
जोकिवटी

1
एक तरफ के रूप में, Microsoft विभिन्न IPv6 घटकों को निष्क्रिय / सक्षम करने के लिए कई सुविधाजनक फिक्सिट टूल प्रदान करता है: support.microsoft.com/kb/929852
joeqwerty

1
@joeqwerty सर्वर और उपयोगकर्ता अलग-अलग सबनेट पर हैं, लेकिन सब कुछ एक बड़ी साइट है। हम विभाजित-मस्तिष्क DNS का उपयोग नहीं कर रहे हैं, इसलिए "आंतरिक DNS" की कोई अवधारणा नहीं है।
निक

2
इसके अलावा, मुझे लगता है कि आपको यह लेख RIPE के साथ-साथ RFC 6343 से बहुत ही रोचक और प्रासंगिक पढ़ने को मिलेगा । मेरी आपसे व्यक्तिगत सिफारिश पूरी तरह से 6to4 को डंप करने की होगी।
माइकल हैम्पटन

जवाबों:


10

यह प्रश्न काफी दिलचस्प है और मुझे यह स्वीकार करना चाहिए कि मैंने यह व्यवहार कभी नहीं देखा है। इसे बेहतर तरीके से समझने और समझने के लिए मैंने कुछ नया करने के लिए, अपने W2K8R2 RDS सर्वरों में से एक W2K8R2 सर्वर से nslookup क्वेरी का एक स्निपेट लिया और मैंने उसी परीक्षण सर्वर से उसी RDS सर्वर के लिए RDP सत्र का एक स्निपेट भी लिया। । Nslookup ने IPv6 रिकॉर्ड वापस करने में कोई देरी नहीं दिखाई और nslookup ने IPv6 रिकॉर्ड के लिए क्वेरी करने से पहले IPv4 रिकॉर्ड के लिए मेरे टेस्ट सर्वर को क्वेरी करते हुए दिखाया। कैप्चर में समय डेल्टा किसी भी प्रश्न में कोई प्रशंसनीय देरी (जो मुझे पता लगा सकता है) दिखाता है।


यहाँ छवि विवरण दर्ज करें


यहाँ छवि विवरण दर्ज करें


संपादित करें

अब तुम किसी चीज पर हो।

सुनिश्चित करें कि आप Microsoft 6To4 एडाप्टर के लिए ट्रैफ़िक कैप्चर कर रहे हैं, अन्यथा आप IPv6 नहीं देखेंगे:

यहाँ छवि विवरण दर्ज करें


यहाँ मेरे RDS सर्वर के लिए nslookup परिणाम है। IPv6 पतों पर ध्यान दें:

यहाँ छवि विवरण दर्ज करें


अब यहाँ मेरे कब्जे का एक टुकड़ा है:

यहाँ छवि विवरण दर्ज करें


और अंत में, यहां कनेक्शन दिखाने वाले नेटस्टैट से एक स्निपेट है:

यहाँ छवि विवरण दर्ज करें


स्पष्ट रूप से, जैसा कि आपने पुष्टि की है, DNS रिज़ॉल्यूशन समस्या नहीं है। समस्या यह है कि RDP कनेक्शन IPv4 पर IPv6 को प्राथमिकता देता है (जो कि Windows के लिए डिफ़ॉल्ट है - Windows IPv6 पर IPv6 को पसंद करता है) और क्योंकि IPv6 ठीक से काम नहीं कर रहा है, इसलिए IPv6 में वापस आने पर देरी (जैसा कि आपने बताया है) कर रहा है। आईपीवी 4। आप IPv6 पर IPv4 पसंद करने के लिए क्लाइंट्स को कॉन्फ़िगर करके इसे ठीक कर सकते हैं, लेकिन मुझे लगता है कि यह समस्या को कम कर देगा। बेहतर समाधान यह पता लगाना होगा कि आईपीवी 6 काम क्यों नहीं कर रहा है और इसे ठीक करना है। मुझे IPv6 के बारे में पर्याप्त जानकारी नहीं है, लेकिन मेरा अनुमान है कि DNS द्वारा लौटाए जा रहे IPv6 रिकॉर्ड "स्थानीय" पते केवल सबनेट पर मान्य हैं जहाँ RDS होस्ट मौजूद हैं और चूंकि ग्राहक एक अलग सबनेट में हैं, इसलिए वे ' t उन IPv6 पतों पर पहुँचें।


भाई, क्या आप भी RFC 1918 करते हैं?
रायन रीस

जबरदस्त हंसी। वे जल्दी में मिल गए, अपने स्वयं के / 24 ब्लॉक आवंटित किए गए और एनएटी से निपटने के बजाय इसे आंतरिक रूप से उपयोग करने के लिए चुना। वे ब्लॉक के लगभग 80% का उपयोग करते हैं और "अगर यह टूट नहीं गया है तो इसे ठीक न करें" रुख लिया है।
जोकेवेटी

@joeqwerty मैंने कुछ स्पष्टीकरण के साथ अपना प्रश्न अपडेट किया। nslookup ठीक काम करता है लेकिन पिंग सामान्य असफलता के साथ विफल हो जाता है।
निक

@joeqwerty आपके सभी इनपुट के लिए धन्यवाद। मैंने इस प्रश्न का उत्तर पोस्ट किया है जो स्पष्ट करता है कि मेरे वातावरण में क्या हुआ है, और सुझाव देता है कि अन्य लोग एक समान स्थिति में क्या कर सकते हैं।
निक

9

IPv6 संक्रमण तकनीक जिसे 6to4 कहा जाता है, इस तरह की समस्याओं के कारण बदनाम है । काम पर कई कारक हैं। व्यक्तिगत रूप से वे हानिरहित हैं, लेकिन संयुक्त प्रभाव यह है कि अंत उपयोगकर्ता कनेक्शन देरी का अनुभव कर सकते हैं।

कारकों और विचारों को उनके शमन पर सक्षम करने की एक सूची नीचे प्रस्तुत की गई है।


विंडोज डिफ़ॉल्ट रूप से 6to4 को सक्षम करता है

यदि आपके होस्ट विंडोज (विस्टा या बाद के संस्करण) का हालिया संस्करण चला रहे हैं, तो सार्वजनिक रूप से निष्क्रिय IPv4 पता उपलब्ध होने पर विंडोज अवसरवादी रूप से 6to4 टनलिंग को सक्षम करेगा। गंभीर रूप से, यह सर्वर और क्लाइंट दोनों पर लागू होता है।

यह पता लगाने के लिए कि क्या कोई सिस्टम 6to4 का उपयोग कर रहा है, चलाएं ipconfigऔर IPv6 पते की तलाश करें जो 6to4 उपसर्ग के साथ शुरू होता है 2002:। यह कुछ इस तरह दिखेगा।

C:\> ipconfig
Tunnel adapter 6TO4 Adapter:
IPv6 Address. . . . . . . . . . . : 2002:1111:2222::1111:2222
  • यदि आपके समापन बिंदु सक्रिय निर्देशिका से जुड़े हैं, तो आप 6to4 और Teredo जैसे संक्रमण प्रोटोकॉल को अक्षम करने के लिए समूह नीति का उपयोग कर सकते हैं। यह KB929852 में अच्छी तरह से प्रलेखित है । (इसे अपने ग्राहकों या सर्वरों पर लागू करना पर्याप्त होगा, लेकिन यदि आप यह कदम उठा रहे हैं, तो संभवतः यह क्लाइंट और सर्वर दोनों पर हर जगह इसे अक्षम करने के लिए समझ में आता है।)
  • यदि आप केवल कुछ होस्ट का प्रबंधन करते हैं, तो आप केस के आधार पर 6to4 को अक्षम कर सकते हैं। यह पूरी तरह से IPv6 को अक्षम करने से बेहतर है।netsh int ipv6 6to4 set state disabled
  • एक अलग क्लाइंट ऑपरेटिंग सिस्टम का उपयोग करें। उदाहरण के लिए, मैक ओएस एक्स में डिफ़ॉल्ट रूप से 6to4 सक्षम नहीं है।

सार्वजनिक रूप से निष्क्रिय IPv4 पते का उपयोग किया जा रहा है

6to4 केवल उन होस्ट्स पर काम करता है जिनके पास सार्वजनिक रूप से निष्क्रिय IPv4 पते हैं, इसलिए यह समस्या कभी भी NAT फ़ायरवॉल के पीछे होस्ट को प्रभावित नहीं करती है।

  • आप NAT फ़ायरवॉल के पीछे क्लाइंट और / या सर्वर ले जा सकते हैं और RFC1918 एड्रेसिंग का उपयोग शुरू कर सकते हैं। लेकिन कुछ मामलों में, सार्वजनिक रूप से निष्क्रिय पते वास्तव में पसंद किए जाते हैं। संपूर्ण नेटवर्क का पता बदलना भी अवास्तविक विकल्प हो सकता है।

6to4 नेटवर्क पर सही ढंग से काम नहीं कर रहा है

किसी भी मोड में 6to4 का निवारण करना बदनाम करना मुश्किल है। यह इतनी तकलीफदेह है कि IETF से एक औपचारिक अनुरोध था कि 6to4 को ऐतिहासिक रूप से पुनर्वर्गीकृत किया जाए । इस लेखक की राय में, 6to4 को हटा दिया गया है।

संक्षेप में, 6to4 एक प्रोटोकॉल का उपयोग करके IPv4 पैकेट में IPv6 पैकेट को एनकैप्सुलेट करके काम करता है जिसे 6in4 (IP प्रोटोकॉल = 41) कहा जाता है। IPv4 पैकेट को किसी भी पते पर इस 192.88.99.1आशा के साथ संबोधित किया जाता है कि यह इंटरनेट पर कहीं काम कर रहे 6to4 रिले में आएगा। यदि आप भाग्यशाली हैं तो यह भौगोलिक रूप से भी आस-पास हो सकता है।

व्यवहार में, कुछ 6to4 रिले गलत तरीके से सेट किए गए हैं, और बहुत सारे नेटवर्क भी फ़ायरवॉल को पार करने के लिए 6in4 ट्रैफ़िक की अनुमति नहीं देते हैं। आमतौर पर ऐसा तब होता है जब फ़ायरवॉल सभी आउटबाउंड ट्रैफ़िक की अनुमति देता है, लेकिन आईपी प्रोटोकॉल 41 पैकेट को फ़ायरवॉल के माध्यम से वापस जाने की अनुमति नहीं देता है। (TODO समस्या निवारण के लिए प्रासंगिक RFC पर ध्यान दें।) यह विफलता ("इनबाउंड ब्लैक होल") और कई अन्य RFC 34343 में वर्णित हैं ।

  • जब आप अपने नेटवर्क पर आंतरिक से होस्ट भेजते हैं, तो आईपी प्रोटोकॉल 41 (टीसीपी रीसेट के साथ) को जोर से खारिज करने के लिए अपना फ़ायरवॉल सेट करें। इसके परिणामस्वरूप "विफल तेज़" व्यवहार होना चाहिए जो गैर-नियतात्मक कनेक्शन देरी से अधिक समझ में आता है। यह सीमित परीक्षण वातावरण में काम करने के लिए प्रदर्शित किया गया है
  • काम कर रहे 6to4 रिले को स्थापित करने के लिए अपने ISP या पहले-हॉप पारगमन प्रदाता से पूछें। यदि यह सही किया जाता है, तो यह अंतिम उपयोगकर्ताओं के लिए सबसे अच्छा अनुभव होगा। सार्वजनिक रूप से निष्क्रिय IPv4 पते वाला कोई भी अंतिम उपयोगकर्ता IPv6 इंटरनेट में भाग ले सकेगा।

डायनेमिक DNS पंजीकरण

एक विशिष्ट सक्रिय निर्देशिका वातावरण में, प्रत्येक कंप्यूटर को DNS सर्वर के साथ अपने स्वयं के पते दर्ज करने की अनुमति होती है। जब कोई होस्ट मल्टीहोम होता है, तो वह 6to4 सुरंग से भी, अपने सभी पते पंजीकृत करेगा।

अधिकांश इंटरनेट सेवाएं डायनेमिक DNS का उपयोग नहीं करती हैं, इसलिए यह समस्या आम तौर पर उन एंटरप्राइज़ साइट्स पर प्रतिबंधित होती है, जहाँ क्लाइंट और सर्वर सभी एक ही नेटवर्क में "आंतरिक" होते हैं।

  • आप डायनेमिक DNS अपडेट को अक्षम करना चुन सकते हैं। फिर यदि आप ज़ोन फ़ाइल में कोई AAAA संसाधन रिकॉर्ड नहीं डालते हैं, तो उन्हें कभी भी नहीं परोसा जाएगा। हालाँकि, डायनेमिक DNS अक्सर आंतरिक DNS सर्वर के लिए वांछनीय होता है। (यदि आप ऐसा करते हैं, तो यह भी सुनिश्चित करें कि पहले से मौजूद एएएए रिकॉर्ड को भी हटा दें।)
  • AAAA संसाधन रिकॉर्ड के लिए उत्तर प्रदान नहीं करने के लिए DNS सर्वर सेट करें। लेकिन ऐसा न करें, क्योंकि यह वास्तव में आपको परेशानी देगा जब आप आईपीवी 6 को लागू करना शुरू करना चाहते हैं। (क्या किसी को मुक्त / खुले स्रोत DNS फ़ायरवॉल का पता है?)

ग्राहक का आवेदन इनायत से विफल नहीं होता है

Microsoft का RDP क्लाइंट क्लाइंट एप्लिकेशन का एक उदाहरण है जो IPv6 रूटिंग समस्याओं से इनायत नहीं करता है। अधिकांश वेब ब्राउज़र इस तरह के IPv6 एज मामलों से निपटने में बेहतर होते हैं, इसलिए वे इस व्यवहार को दिखाने के लिए नहीं होते हैं।

  • किसी भिन्न क्लाइंट का उपयोग करके देखें। शायद आप भाग्यशाली होंगे।

मैं 6to4 मुद्दों के बारे में चर्चा का विस्तार करता हूं कि RFC 6598 पते कैसे समस्या को बदतर बना सकते हैं। अधिकांश सॉफ्टवेयर जो स्वचालित रूप से 6to4 को सक्षम करता है यदि कोई सार्वजनिक IPv4 पता उपलब्ध है तो उस RFC से पहले लिखा गया था। इसलिए एक RFC 6598 पता स्वाभाविक रूप से पता लगाया जाएगा जैसे कि यह एक सार्वजनिक IPv4 पता था। लेकिन यह नहीं है, और एक RFC 6598 पते पर 6to4 चलाने से काम नहीं चलने वाला है। यदि आपको 2002: 6440 :: / 26 में से कोई भी IPv6 पता दिखाई देता है, तो आप 6to4 + RFC 998 समस्या में चले गए हैं।
kasperd

6to4 होस्ट और देशी IPv6 होस्ट के बीच संवाद करते समय 6to4 anycast रिले केवल relavent है, दो 6to4 होस्ट्स के बीच संचार करते समय यह रिलेवेंट नहीं है (विडंबना यह है कि कुछ करने के लिए देशी IPv6 जोड़ रहा है, लेकिन सभी होस्ट चीजों को बदतर नहीं बना सकते हैं)।
पीटर ग्रीन

2

मुझे लगता है कि यह इस स्थिति के लिए बहुत उपयोगी नहीं है, लेकिन इसी तरह की दुविधा का सामना करने वाले कार्यान्वयनकर्ताओं के लिए, "हैप्पी आईबॉल" (RFC 6555) के रूप में जाना जाने वाला एक कार्यान्वयन तकनीक है जो एक साथ ipv4 और ipv6 से कनेक्ट करने के लिए एक तकनीक को निर्दिष्ट करता है और जो भी पहले जोड़ता है।


0

यहाँ मेरा समाधान था। डिफ़ॉल्ट रूप से विंडोज IPv6 मार्गों को IPv4 मार्गों की तुलना में उच्च प्राथमिकता देता है। यदि आप IPv6 उपसर्ग नीति को संपादित करते हैं, तो आप IPv6 को वरीयता में IPv4 का उपयोग करने के लिए इस व्यवहार को बदल सकते हैं।

यह सुनिश्चित करने के लिए कि मेरे नेटवर्क में सभी सिस्टम एक ही तरह से सेट किए गए हैं, मैं एक मशीन के निर्माण या नवीनीकरण के बाद सॉफ्टवेयर इंस्टॉलेशन के दौरान चलने वाली स्क्रिप्ट को निम्नलिखित कमांड में डाल देता हूं।

netsh int ipv6 isatap set state disabled
netsh int ipv6 6to4 set state disabled
netsh interface teredo set state disable

netsh interface ipv6 delete prefixpolicy ::1/128
netsh interface ipv6 delete prefixpolicy ::/0
netsh interface ipv6 delete prefixpolicy 2002::/16
netsh interface ipv6 delete prefixpolicy ::/96
netsh interface ipv6 delete prefixpolicy ::ffff:0:0/96
netsh interface ipv6 delete prefixpolicy 2001::/32

netsh interface ipv6 add prefixpolicy ::1/128 50 0
netsh interface ipv6 add prefixpolicy ::ffff:0:0/96 40 1
netsh interface ipv6 add prefixpolicy ::/0 30 2
netsh interface ipv6 add prefixpolicy 2002::/16 20 3
netsh interface ipv6 add prefixpolicy ::/96 10 4
netsh interface ipv6 add prefixpolicy 2001::/32 5 5

यह समझाने के लिए कि यह क्या करता है:

पहली 3 लाइनें बिल्ट टनलिंग इंटरफेस को अक्षम करती हैं, क्योंकि वे अधिकांश नेटवर्क के लिए बेमानी हैं। यदि आप अपनी मशीनों को अपने स्वयं के IPv6 पते नहीं दे रहे हैं, तो आप उन 3 लाइनों का उपयोग नहीं करना चाह सकते हैं, मेरे मामले में मेरे पास एक डीएचसीपीवी 6 सर्वर और संबंधित बुनियादी ढांचा है जो सुरंगबद्ध कनेक्टिविटी के लिए आईपीवी 6 प्रदान करता है।

आदेशों का दूसरा ब्लॉक सभी मौजूदा IPv6 रूटिंग उपसर्ग नीतियों को हटा देता है।

तीसरा ब्लॉक IPv6 उपसर्ग नीतियों को फिर से बनाता है, लेकिन प्राथमिकताओं के एक अलग सेट का उपयोग करता है। जैसे कि IPv4 से संबंधित उपसर्ग को IPv6 पर वरीयता दी जाती है, और मशीन तब IPv4 का उपयोग करना चाहेगी जब तक कि एप्लिकेशन IPv6 के उपयोग को निर्दिष्ट नहीं करता है।

यह समाधान कार्यात्मक दोहरे-स्टैक क्षमता को बरकरार रखता है, लेकिन IPv4 का उपयोग करने की प्राथमिकता का मतलब है कि अपूर्ण, अविश्वसनीय या खराब प्रदर्शन करने वाली IPv6 वाली साइटें इसका उपयोग करने से बचेंगी जब तक कि सिस्टम पर एक कार्यक्रम द्वारा नहीं बताया जाता है।

यह मेरी राय है कि ऑपरेटिंग सिस्टम IPv4 को वरीयता में IPv6 का उपयोग करना वास्तव में गोद लेने में बाधा है। संक्रमणकालीन अवधि के दौरान, ऐसे समय होंगे जहां एक मेजबान को लगता है कि इसमें IPv6 कनेक्टिविटी है लेकिन वास्तव में पूरी तरह कार्यात्मक कनेक्शन नहीं है, जिसके कारण सॉफ्टवेयर की खराबी और बड़ी देरी होती है। बहुत से लोग जानते हैं कि आईपीवी 6 को पूरी तरह से उनके रूटर पर पूरी तरह से निष्क्रिय कर दिया गया है, क्योंकि आईएसपी 6 के लिए शुरू में पूर्ण कनेक्टिविटी स्थापित करने से पहले एक टूटे हुए फैशन में आईपीवी 6 को तैनात करता है, और ये लोग इसे फिर से आईपीवी 6 के बिना छोड़ने में सक्षम करना भूल जाएंगे, जब तक कि वे अपने राउटर को फिर से कॉन्फ़िगर नहीं करते।


टनलिंग को निष्क्रिय करने के लिए +1, IPv4 को प्राथमिकता देने के लिए -1। यह ज्यादातर लोगों के लिए एक समस्या नहीं है, और केवल विशिष्ट परिस्थितियों में विशिष्ट उपयोगकर्ताओं के लिए लागू किया जाना चाहिए।
माइकल हैम्पटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.