iOS VPN নামে তিনটি ভিন্ন পণ্য সাড়া দেয়, এবং তারা একই API ভাগ করে না। ব্যক্তিগত VPN সিস্টেমের অন্তর্নির্মিত IPsec ও IKEv2 পরিবহনের উপর চলে। কাস্টম টানেল আপনার নিজের প্রোটোকল একটি নেটওয়ার্ক এক্সটেনশনের ভেতরে চালায়। আর কনফিগারেশন প্রোফাইল দুটির যেকোনোটি কনফিগার করে এবং চাহিদা অনুযায়ী আচরণ যোগ করতে পারে। যে পরিবহনে কথা বলতে হবে তার ভিত্তিতে বাছাই করা প্রথমে কম্পাইল হওয়া যেকোনো টিউটোরিয়ালের ভিত্তিতে বাছাই করার চেয়ে দ্রুত।

নিচের পরীক্ষাগুলো ক্রমে চালান, কারণ প্রতিটি ধাপ ধরে নেয় যে আগেরটি একটি বৈধ কনফিগারেশন তৈরি করেছে।

ধাপ 1: পরিবহন দেখে বাছুন

সার্ভারটি IKEv2 বা Cisco-শৈলীর IPsec হলে NEVPNManager যথেষ্ট এবং সিস্টেমের পরিবহন বিনামূল্যে আসে। সার্ভারটি যদি OpenVPN, WireGuard বা অন্য কিছুতে কথা বলে, NEVPNManager সাহায্য করতে পারে না: তৃতীয় পক্ষের প্রোটোকলের জন্য এতে কোনো হুক নেই। সেই ক্ষেত্রে প্রোটোকলটি বাস্তবায়নকারী প্যাকেট টানেল প্রোভাইডারসহ NETunnelProviderManager দরকার। প্রোফাইল কেবল কনফিগারেশন বিতরণ করে, এবং অপারেটিং সিস্টেমে না থাকা কোনো পরিবহন যোগ করতে পারে না।

PPTP বর্তমান সিস্টেমে লক্ষ্য নয়। শেয়ার্ড-সিক্রেট IPsec এখনও remoteIdentifier-এ গ্রুপের নাম, গোপনটি ধারণ করা একটি কি-চেইন আইটেম এবং সার্ভার ব্যবহারকারীর নাম চাইলে বর্ধিত প্রমাণীকরণ আশা করে। প্রতিটি অনুপস্থিত অংশ একই সাধারণ কনফিগারেশন ত্রুটি হিসেবে দেখা দেয়, তাই অন্য কিছু ডিবাগ করার আগে সবগুলো যোগ করুন।

ধাপ 2: সংরক্ষণ, লোড, শুরু — এই ক্রম মানুন

NEVPNManager পছন্দে লেখে, সেগুলো ফিরিয়ে পড়ে, এবং কেবল তারপর শুরু করে। প্রোটোকল ও ম্যানেজার অবজেক্ট পূরণ করুন, saveToPreferences ডাকুন, loadFromPreferences ডাকুন, এবং লোডের সম্পন্নতা হ্যান্ডলার থেকে startVPNTunnel ডাকুন। লোড ফেরার আগে শুরু করলে অন্যথায় সঠিক কনফিগারেশনে কনফিগারেশন-অবৈধ ত্রুটি, NEVPNErrorDomain কোড 1 হয়।

আকৃতিটি এক জায়গায় রাখার মতো যথেষ্ট ছোট:

manager.protocolConfiguration = proto
manager.isEnabled = true
manager.saveToPreferences { }
manager.loadFromPreferences { manager.connection.startVPNTunnel() }

startVPNTunnel অনুরোধ গ্রহণ হলে ফেরে, টানেল ওঠার সময় নয়। NEVPNStatusDidChange লক্ষ্য করুন এবং প্রকৃত অবস্থার জন্য connection.status পড়ুন। যে অ্যাপ কলের জায়গাতেই সাফল্য ধরে নেয়, এক্সটেনশনটি এখনও দর-কষাকষি করার সময়েই সংযুক্ত VPN রিপোর্ট করে। সংযোগরত অবস্থা এক মুহূর্তের জন্য স্বাভাবিক; যে অবস্থা কখনও তা ছাড়ে না, সেটাই লগ করার যোগ্য ব্যর্থতা।

ধাপ 3: প্রোভাইডার প্রসেসকে যা দরকার তা দিন

কাস্টম পরিবহন আলাদা প্রসেসে চলে, নিজস্ব বান্ডেল আইডেন্টিফায়ার ও নিজস্ব এনটাইটেলমেন্ট নিয়ে। কনটেইনার অ্যাপ ও প্রোভাইডার — উভয়েরই সই করার সময় নেটওয়ার্ক-এক্সটেনশন এনটাইটেলমেন্ট দরকার, এবং App Store-এর বাইরে Developer ID বিল্ডকেও তা প্রভিশনিং প্রোফাইলে বহন করতে হয়। অনুপস্থিত এনটাইটেলমেন্ট প্রোটোকল বাগের মতো দেখায়, কারণ এক্সটেনশনটি সহজভাবে শুরুই হয় না।

ধার করার মতো কোনো পাবলিক সকেট ডেসক্রিপ্টর নেই। NEPacketTunnelProvider আপনাকে read, write ও cancel সহ NEPacketTunnelFlow দেয়, আর প্রাইভেট কী পাথের দিকে হাত বাড়ানো কোড রিলিজের মধ্যে ভেঙে পড়ে। অ্যাপ ব্যাকগ্রাউন্ডে থাকলেও প্রোভাইডার চলতে থাকে, তাই কনটেইনারের এর জন্য ব্যাকগ্রাউন্ড মোড লাগে না।

ধাপ 4: চাহিদা অনুযায়ী চলা নিয়মের সেট, কোনো সুইচ নয়

isOnDemandEnabled কেবল নিয়মগুলো প্রস্তুত করে; টানেল কখন উঠবে তা NEOnDemandRuleConnect ও তার সহোদরেরা ঠিক করে। প্রোব URLসহ সংযোগ-মূল্যায়ন নিয়ম সেই URL যতটা ভালো ততটাই ভালো। প্রোব যদি টানেল ছাড়াই উত্তর দেয়, নিয়ম সিদ্ধান্তে আসে যে প্রাইভেট নেটওয়ার্ক ইতিমধ্যেই পৌঁছানোর মতো, এবং কখনও সংযোগ করে না, তাই এটিকে এমন কিছুতে লক্ষ্য করুন যা কেবল ভেতর থেকেই উত্তর দেয়।

সর্বদা-চালু একটি আলাদা প্রতিশ্রুতি। এর জন্য তত্ত্বাবধানে থাকা ডিভাইস ও ব্যবস্থাপিত প্রোফাইল দরকার, আর তত্ত্বাবধানহীন ব্যবহারকারী যখন খুশি প্রোফাইল সরাতে পারেন। বহর তত্ত্বাবধানে না থাকলে সর্বদা-চালুর উপর নির্ভর করা কোনো নকশা পাঠাবেন না।

ধাপ 5: লেবেল নয়, পথ প্রমাণ করুন

tun, tap, ppp বা ipsec ইন্টারফেসের জন্য স্ক্যান করা প্রমাণ করে VPN কনফিগার করা আছে, আপনার অনুরোধ সেটি ব্যবহার করেছে তা নয়। usesInterfaceType(.other) সহ NWPathMonitor বলে একটি ভার্চুয়াল ইন্টারফেস পাওয়া যায়, এবং একটি কার্যক্ষমতা হ্যান্ডলার একটি হোস্ট পরীক্ষা করতে পারে। কোনোটিই নির্গমন পথ প্রমাণ করে না, তাই এগুলোকে কেবল টানেল যে রিসোর্সে পৌঁছাতে পারে তার অনুরোধের সঙ্গে মেলান। ইন্টারফেসের নাম একটি ডায়াগনস্টিক সহায়ক, অ্যাপ্লিকেশন লজিক যার উপর শাখা করবে এমন দ্বার কখনও নয়।

মাঠপর্যায়ের পরীক্ষার জন্য টানেলসহ ও ছাড়া পাবলিক ঠিকানা তুলনা করুন এবং কেবল অভ্যন্তরীণ একটি পৃষ্ঠা আনুন। প্রোভাইডার দর-কষাকষি করার সময় স্ট্যাটাস কল সংযুক্ত রিপোর্ট করতে পারে, তাই রিসোর্সের ফলাফলকে সিদ্ধান্ত নিতে দিন এবং স্ট্যাটাসকে সমর্থক প্রমাণ হিসেবে দেখুন।

সম্পর্কিত নিবন্ধ