आपका iPhone ऐप एक IP क्यों दिखाता है और सर्वर दूसरा दर्ज क्यों करता है
इंटरफ़ेस का पता, सॉकेट का एंडपॉइंट और सर्वर जो स्रोत दर्ज करता है, अलग-अलग सवालों के जवाब देते हैं। VPN संदर्भ जोड़ता है; उन्हें एक संख्या नहीं बनाता।
सपोर्ट टिकट आते हैं जिनमें कहा जाता है कि ऐप एक पता दिखा रहा है जबकि सर्वर ने दूसरा दर्ज किया, और फिर पूछा जाता है कि दोनों में से झूठ कौन बोल रहा है। कोई नहीं; ये दो अलग चीज़ों के दो अवलोकन हैं। किसी इंटरफ़ेस से बँधा पता, किसी सॉकेट से बँधा पता, और किसी दूरस्थ सेवा को दिखने वाला स्रोत पता, तीन अलग सवालों के जवाब देते हैं। VPN फ़ोन में एक नेटवर्क संदर्भ जोड़ता है और उन तीनों को एक ही डिवाइस-व्यापी संख्या में नहीं समेटता। पतों को पढ़ने से पहले टिकट में फ़ील्ड के नाम पढ़िए।
टिकट आमतौर पर क्या बताता है
Wi-Fi पर एक फ़ोन की कल्पना कीजिए जिसमें एक टनल चालू है। Wi-Fi इंटरफ़ेस के पास एक LAN पता है, टनल इंटरफ़ेस के पास एक आवंटित भीतरी पता है, और टनल से बाहर जाने वाला अनुरोध रास्ते में किसी भी अनुवाद से बचे स्रोत से एक सार्वजनिक सेवा तक पहुँचता है। भीतरी पता छापने वाला ऐप और अनुवादित स्रोत दर्ज करने वाला सर्वर दोनों सटीक रिपोर्ट देते हैं, और ये दो मान कभी नहीं मिलेंगे।
तीन अवलोकन इस बात में भिन्न हैं कि वे क्या सिद्ध कर सकते हैं, केवल इस बात में नहीं कि वे क्या बताते हैं।
| Observation | What it describes | What it cannot prove |
|---|---|---|
| An address on a local interface | One configured attachment: Wi-Fi, cellular or a tunnel | The source a remote site receives |
| A socket's local endpoint | The binding used by that one connection | The address after translation further along |
| The peer address at a service | What arrived at that observation point | Any other interface on the phone |
उस तालिका को उस कोड के पास रखिए जो इन मानों को टिकट में भरता है, क्योंकि यहाँ अधिकतर उलझन स्तंभों की उलझन है, नेटवर्क की खराबी नहीं।
सॉकेट कॉल किसका जवाब दे सकता है और किसका नहीं
API स्तर पर, getsockname उस स्थानीय एंडपॉइंट की जानकारी देता है जो इस समय किसी विशेष सॉकेट से बँधा है। किसी जुड़े सॉकेट के लिए वही स्रोत है जो कर्नेल ने उस कनेक्शन के लिए चुना, और यह किसी भी इंटरफ़ेस सूची से पहले ही अधिक विशिष्ट है। यह सार्वजनिक पता खोजना नहीं है, और बिना बँधे सॉकेट पर इसे कॉल करना आपको लगभग कुछ नहीं बताता। यह जो भी लौटाता है वह रास्ते में बाद में फिर से लिखा जा सकता है, इसलिए सेवा ने क्या प्राप्त किया, इस पर केवल सेवा का अपना अवलोकन ही प्रामाणिक है।
Apple प्लेटफ़ॉर्म पर इंटरफ़ेस की ओर एक अलग सतह है: टनल सेटिंग्स टनल इंटरफ़ेस को आवंटित पते सूचीबद्ध करती हैं। उन्हें पढ़ने से पता चलता है कि टनल कैसे कॉन्फ़िगर हुई थी, और यह नहीं पता चलता कि किसी दिए गए अनुरोध ने कौन-सा रास्ता लिया, क्योंकि रूटिंग और प्रति-ऐप नियम हर कनेक्शन के लिए यह तय करते हैं।
विभाजित टनलिंग अंतर को दिखने लायक बनाती है। एक अनुरोध टनल से बाहर जा सकता है जबकि अगला, किसी दूसरे गंतव्य या पता-परिवार की ओर लक्षित, नहीं जाता, इसलिए एक ही ऐप के सेकंडों के अंतर से मिले दो परिणाम ईमानदार और अलग हो सकते हैं।
वह अवलोकन चुनिए जो सवाल से मेल खाता है
सब कुछ मापने के बजाय सोच-समझकर चुनिए। बैकएंड जो देखता है उसके लिए बैकएंड पर स्रोत दर्ज कीजिए, और जहाँ आगे रिवर्स प्रॉक्सी हो, क्लाइंट का पता उस फ़ॉरवर्डिंग हेडर से पढ़िए जो आपकी तैनाती वास्तव में सेट करती है, क्लाइंट द्वारा भेजी किसी भी चीज़ से नहीं।
टनल कॉन्फ़िगर है या नहीं, यह जानने के लिए इंटरफ़ेस पढ़िए। इस ऐप का ट्रैफ़िक उसका इस्तेमाल कर गया या नहीं, यह जानने के लिए उसी ऐप से किसी ऐसे गंतव्य तक ट्रैफ़िक भेजिए जिसे आप नियंत्रित करते हैं और दोनों सिरों पर स्रोत की तुलना कीजिए।
प्रति-ऐप नियम अपना अलग वाक्य माँगते हैं। ब्राउज़र का परिणाम उस ब्राउज़र के बारे में सबूत है, और एक प्रबंधित प्रति-ऐप टनल एक ही फ़ोन के दो ऐप्स को एक ही पल में अलग रास्तों पर डाल सकती है। कवरेज सत्यापित करने का अर्थ है उसी ऐप से, उसी पता-परिवार में ट्रैफ़िक भेजना।
इंटरफ़ेस के नाम कोई डिटेक्टर नहीं हैं
इंटरफ़ेस के नाम को VPN जाँच के रूप में भी इस्तेमाल न कीजिए। नाम कोई सार्वजनिक अनुबंध नहीं हैं, और एक फ़ोन में कई जोड़ हो सकते हैं जबकि उनमें से केवल एक ही आपका अनुरोध ले जाता है।
फ़ील्ड का नाम उस अवलोकन के अनुसार रखिए जिसे वह रखता है। local_interface_address, socket_local_endpoint और service_observed_source भद्दे और स्पष्ट हैं, और स्पष्टता ही वह है जो आप चाहते हैं जब मान एक हफ़्ते बाद सपोर्ट टिकट में पहुँचता है। device IP नाम का एक ही स्तंभ तीनों को जमा करेगा और फिर उस पर ऐसे भरोसा किया जाएगा जैसे वह एक ही हो।
पहचान को पते के स्तंभ से बाहर रखिए
साझा VPN निकास किसी उपयोगकर्ता की पहचान नहीं है, और निजी पता कोई प्रवेश-प्रमाण नहीं है। दोनों व्यक्ति नहीं, मार्ग बताते हैं, और किसी एक को प्रमाणीकरण मानना रूटिंग की दुर्घटना को प्राधिकरण का निर्णय बना देता है।
जब कोई पूछे कि फ़ोन के पास कौन-सा पता है, तो उपयोगी जवाब यह सवाल है कि कौन-सा कनेक्शन और कौन-सा प्रेक्षक। getsockname की परिभाषा बीच के मामले के लिए उद्धृत करने योग्य है, क्योंकि वह सॉकेट का सवाल तय करती है और बाकी दो को तय करने का दिखावा नहीं करती।
फिर लिखिए कि तीनों में से आपके उत्पाद को वास्तव में कौन-सा दिखाना है, और बाकी दो को इंटरफ़ेस से हटा दीजिए।