VPN-এর পিছনে Plex রিমোট অ্যাক্সেস কেন ব্যর্থ হয় এবং এটি কীভাবে ঠিক করবেন
VPN-এর পিছনে Plex রিমোট অ্যাক্সেসের জন্য তিনটি লিঙ্ক দরকার: প্রোভাইডারে পোর্ট ফরওয়ার্ড, স্থানীয় pf রিডাইরেক্ট এবং Plex-এ লেখা একই এক্সটার্নাল পোর্ট।
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 সক্রিয় না থাকা।