VPN द्वारा डिफ़ॉल्ट रूट संभालते ही रिमोट एक्सेस अनुपलब्ध हो जाता है, जबकि वही सर्वर बिना किसी शिकायत के LAN पर स्ट्रीम करता रहता है। Plex के लॉग में इस बदलाव की कोई व्याख्या नहीं है, क्योंकि टूटा हुआ हिस्सा Plex नहीं है: यह ऐसा पता प्रकाशित करता है जहाँ ट्रैफ़िक अब नहीं पहुँचता। जो प्रदाता ग्राहकों के बीच एक सार्वजनिक पता साझा करता है, वह एक पोर्ट को आपके टनल पते पर भेजता है, और आपकी अपनी मशीन पर कुछ को अब भी उस पोर्ट को Plex श्रोता तक पहुँचाना होता है। पहुँच-परीक्षण के हरे होने से पहले तीनों कड़ियों को एक ही बाहरी पोर्ट पर सहमत होना चाहिए।

श्रृंखला में तीन कड़ियाँ हैं, और Plex को केवल अंतिम दिखती है

प्रदाता के पास एक सार्वजनिक पता है और वह अपने एक पोर्ट को आपके टनल पते पर मैप करता है। आपकी मशीन उस पोर्ट पर जो आता है उसे लेती है और उसे Plex श्रोता की ओर रीडायरेक्ट करती है, जो आम तौर पर लूपबैक पोर्ट 32400 पर बैठता है। फिर Plex को बाहरी पोर्ट की संख्या बताई जाती है ताकि उसकी अपनी जाँच बाहरी दुनिया के डायल से मेल खाए।

कोई भी एक कड़ी तोड़ें और वेब इंटरफ़ेस रिमोट एक्सेस को अनुपलब्ध बताता है, बिना कोई संकेत दिए कि कौन-सी कड़ी विफल हुई। यही ख़ामोशी कारण है कि लोग सर्वर को फिर से शुरू करते हैं, ऐप को फिर से इंस्टॉल करते हैं और सेटिंग को बार-बार टॉगल करते हैं बिना सुई हिलाए। तीनों कड़ियाँ स्वतंत्र रूप से विफल होती हैं: पुराने टनल पते पर लक्षित फ़ॉरवर्ड, केवल Ethernet इंटरफ़ेस को कवर करने वाला रीडायरेक्ट, और अब भी 32400 रखने वाला Plex फ़ील्ड, सभी वही लाल टेक्स्ट पैदा करते हैं। अनुमान लगाने के बजाय श्रोता से बाहर की ओर काम करें, और विफल कड़ी आम तौर पर एक मिनट में अपना नाम बता देती है।

पहली कड़ी: VPN प्रदाता पर एक पोर्ट फ़ॉरवर्ड करें

प्रदाता का पोर्ट फ़ॉरवर्डिंग पृष्ठ खोलें और एक मैपिंग जोड़ें। ज़्यादातर कार्यान्वयन आपको एक यादृच्छिक बाहरी पोर्ट देते हैं और भीतरी चुनने देते हैं, इसलिए आवंटन स्वीकार करें और उसे उस टनल पते पर लक्षित करें जो आपके क्लाइंट के पास अभी है। वह संख्या लिख लें, क्योंकि हर बाद का चरण उसे ठीक-ठीक दोहराता है।

जो प्रदाता फिर से कनेक्ट होने पर मैपिंग को घुमाते हैं, वही आम कारण है कि यह सेटअप एक शाम टिकता है और फिर मर जाता है। कुछ आपको स्थिर पोर्ट माँगने देते हैं, अन्य हर हैंडशेक पर नया आवंटित करते हैं, इसलिए किसी और चीज़ को छूने से पहले मौजूदा मैपिंग पृष्ठ पढ़ें।

दूसरी कड़ी: pf एंकर से पोर्ट रीडायरेक्ट करें

macOS पर रीडायरेक्ट pf एंकर में जाता है, हर उस इंटरफ़ेस के लिए एक नियम जो पैकेट ले जा सके। टनल नियम पहले और Ethernet नियम बाद में लिखें, दोनों पर वही बाहरी पोर्ट रखें, नहीं तो फ़ेलओवर के दौरान Wi-Fi से आने वाला ट्रैफ़िक कहीं नहीं पहुँचता।

# /etc/pf.anchors/plex.forward
rdr pass on tun0 inet proto tcp from any to any port 41893 -> 127.0.0.1 port 32400
rdr pass on en0 inet proto tcp from any to any port 41893 -> 127.0.0.1 port 32400

एंकर फ़ाइल अपने आप कुछ नहीं करती; मुख्य कॉन्फ़िगरेशन को उसका संदर्भ देना और उसे लोड करना होता है। इन दो पंक्तियों को /etc/pf.conf में रखें, किसी भी मौजूदा रीडायरेक्ट नियम से पहले, फिर फिर से लोड करें और पढ़ें कि कर्नेल ने वास्तव में क्या स्वीकार किया।

rdr-anchor "plex"
load anchor "plex" from "/etc/pf.anchors/plex.forward"

sudo pfctl -vnf /etc/pf.anchors/plex.forward
sudo pfctl -f /etc/pf.conf
sudo pfctl -s nat

अज्ञात पोर्ट के बारे में सिंटैक्स शिकायत का अर्थ है कि आपके संपादन से एक प्लेसहोल्डर बच गया। खाली nat तालिका का अर्थ है कि एंकर कभी लोड नहीं हुआ, और चूँकि मौजूदा macOS पर pf डिफ़ॉल्ट रूप से सक्षम नहीं है, sudo pfctl -E सुधार का हिस्सा है, वैकल्पिक अतिरिक्त का नहीं। हर रीबूट के बाद और हर मैपिंग बदलाव के बाद एंकर फिर से लोड करें। एंकर फ़ाइल को संस्करण नियंत्रण में रखें ताकि प्रदाता के पोर्ट बदलाव को फिर से खोजने के अभ्यास के बजाय एक पंक्ति का संपादन बन जाए।

तीसरी कड़ी: Plex के भीतर वही पोर्ट पिन करें

Plex में सेटिंग्स खोलें, फिर सर्वर, फिर रिमोट एक्सेस, और उस बॉक्स पर टिक लगाएँ जो आपको हाथ से पोर्ट निर्दिष्ट करने देता है। 32400 के बजाय प्रदाता का बाहरी पोर्ट दर्ज करें, फिर पहुँच-परीक्षण चलने दें। नए बिल्ड ने इस नियंत्रण को पुराने Connect पृष्ठ से दूर स्थानांतरित कर दिया है, इसलिए अगर फ़ील्ड वहाँ नहीं है जहाँ कोई मार्गदर्शिका दावा करती है तो रिमोट एक्सेस के अंतर्गत देखें।

LAN से परीक्षण करना कुछ भी साबित नहीं करता। उसी Wi-Fi पर मौजूद लैपटॉप सीधे सर्वर तक पहुँचता है, इसलिए सार्वजनिक मार्ग के मृत होने पर भी जाँच सफल होती है। सेल्युलर डेटा वाला फ़ोन, या अपने नेटवर्क के बाहर का कोई भी होस्ट इस्तेमाल करें और वहाँ से सार्वजनिक पता और बाहरी पोर्ट डायल करें।

Plex को दोष देने से पहले हर कड़ी की पुष्टि करें

श्रोता से शुरू करें और बाहर की ओर काम करें। अगर Plex केवल LAN पते से बंधा है तो वह लूपबैक की ओर इशारा करने वाले रीडायरेक्ट को अनदेखा करेगा, इसलिए पहला आदेश वही है जो साबित करता है कि यह कहाँ सुनता है।

sudo lsof -nP -iTCP:32400 -sTCP:LISTEN

इसके बाद साबित करें कि रीडायरेक्ट मौजूद है और उस पोर्ट से मेल खाता है जो आपने प्रदाता को दिया था। nat तालिका को दोनों इंटरफ़ेस पर वही बाहरी पोर्ट दिखाना चाहिए।

sudo pfctl -s nat | grep 41893
nc -vz 203.0.113.42 41893

वह अंतिम आदेश नेटवर्क के बाहर से चलाएँ, Mac से नहीं। अगर सेल्युलर से TCP कनेक्शन पूरा होता है जबकि Plex अब भी अनुपलब्ध दिखाता है, तो पोर्ट श्रोता तक पहुँच रहा है और बचा हुआ संदिग्ध Plex फ़ील्ड में लिखा नंबर है। अगर कुछ भी जवाब नहीं देता, तो टूटन ऊपर की ओर है: प्रदाता की मैपिंग, टनल पता, या pf का सक्षम न होना।

संबंधित लेख