পডকাস্ট ট্রান্সক্রিপ্ট দেখুন
Ubiquiti UniFi-এর জন্য Captive Portal — একটি Purple প্রযুক্তিগত ব্রিফিং
[ভূমিকা এবং প্রেক্ষাপট — আনুমানিক ১ মিনিট]
Purple প্রযুক্তিগত ব্রিফিং সিরিজে আপনাকে স্বাগত জানাই। আমি আপনার হোস্ট, এবং আজ আমরা Ubiquiti UniFi অবকাঠামোতে একটি বাহ্যিক captive portal স্থাপন করার সুনির্দিষ্ট বিষয়গুলো নিয়ে আলোচনা করব — যা বিশ্বব্যাপী আতিথেয়তা, খুচরা বিক্রেতা এবং এন্টারপ্রাইজ পরিবেশের অন্যতম বহুল ব্যবহৃত নেটওয়ার্ক প্ল্যাটফর্ম।
আপনি যদি একজন আইটি ম্যানেজার, নেটওয়ার্ক আর্কিটেক্ট, বা সিস্টেম ইন্টিগ্রেটর হন যিনি UniFi Cloud Gateways, Dream Machines, বা UniFi Network Application নিয়ে কাজ করছেন, তবে এই পর্বটি আপনার জন্য। আমরা আলোচনা করব কীভাবে বাহ্যিক পোর্টাল মেকানিজমটি ভেতরের দিক থেকে ঠিকভাবে কাজ করে, কীভাবে এটি সঠিকভাবে কনফিগার করতে হয়, সাধারণ ভুলত্রুটিগুলো কোথায় হতে পারে এবং কেন একটি মৌলিক স্প্ল্যাশ পেজের চেয়ে বেশি কিছু প্রয়োজন এমন ভেন্যুগুলোর জন্য একটি UniFi ডেপ্লয়মেন্টের ওপর Purple যুক্ত করা সঠিক আর্কিটেকচারাল সিদ্ধান্ত।
আসুন শুরু করা যাক।
[প্রযুক্তিগত গভীর আলোচনা — আনুমানিক ৫ মিনিট]
প্রথমে আসুন বোঝা যাক যখন কোনো অতিথি একটি captive portal সক্রিয় থাকা UniFi SSID-এর সাথে সংযোগ স্থাপন করে, তখন আসলে কী ঘটে।
যখন কোনো অতিথির ডিভাইস আপনার গেস্ট SSID-এর সাথে যুক্ত হয়, তখন UniFi অ্যাক্সেস পয়েন্ট (AP) যথারীতি DHCP-এর মাধ্যমে এটিকে একটি IP অ্যাড্রেস বরাদ্দ করে। কিন্তু ডিভাইসটি অবিলম্বে একটি "পেন্ডিং" অবস্থায় চলে যায়, যাকে UniFi "pending" স্টেট বলে। এই অবস্থায়, AP-এর অন্তর্নির্মিত DNSmasq প্রক্রিয়াটি ডিভাইসটির করা প্রতিটি DNS কোয়েরি ইন্টারসেপ্ট করে, ডিভাইসটি কোন DNS সার্ভার ব্যবহার করছে তা বিবেচনা না করেই। AP সমস্ত DNS ট্রাফিককে নিজের দিকে রিডাইরেক্ট করে।
একই সাথে, AP পোর্ট ৮০-তে একটি লাইটওয়েট HTTP রিডাইরেক্টর চালায়। অতিথি ব্যবহারকারীর ব্রাউজার যেকোনো HTTP রিকোয়েস্ট - এবং এটিই মূল শব্দ, HTTP, HTTPS নয় - করা মাত্রই রিডাইরেক্টরটি একটি 302 রিডাইরেক্ট পাঠায়, যা ব্রাউজারটিকে captive portal স্প্ল্যাশ পেজে নিয়ে যায়। এটি সেই মেকানিজম যা iOS এবং Android ডিভাইসে "Sign in to WiFi" নোটিফিকেশনটি ট্রিগার করে।
এখন, এখানেই অন্তর্নির্মিত পোর্টাল বনাম বাহ্যিক পোর্টালের পার্থক্যটি অত্যন্ত গুরুত্বপূর্ণ হয়ে ওঠে। অন্তর্নির্মিত UniFi Hotspot Portal-এর ক্ষেত্রে, স্প্ল্যাশ পেজটি সরাসরি UniFi Network Application দ্বারা পরিবেশিত হয়। এটি কার্যকর, সেট আপ করা দ্রুত, কিন্তু এটি অত্যন্ত সীমিত। আপনি সাধারণ পাসওয়ার্ড প্রমাণীকরণ, ভাউচার এবং Stripe পেমেন্ট পাবেন। এখানে কোনো ইমেল ক্যাপচার, সোশ্যাল লগইন, GDPR সম্মতি ম্যানেজমেন্ট, CRM ইন্টিগ্রেশন এবং সেশন গণনার বাইরে কোনো অর্থপূর্ণ অ্যানালিটিক্স নেই।
আপনি যখন একটি External Portal Server কনফিগার করেন — যা আজকের আমাদের আলোচনার মূল বিষয় — তখন আপনি UniFi কন্ট্রোলারকে অতিথিদের সম্পূর্ণ আলাদা একটি ওয়েব অ্যাপ্লিকেশনে রিডাইরেক্ট করতে নির্দেশ দিচ্ছেন। আমাদের ক্ষেত্রে, সেটি হলো Purple। আপনি External Portal Server ফিল্ডে যে URLটি লিখবেন, তা-ই হবে সেই সমস্ত 302 রিডাইরেক্টের গন্তব্য।
এই রিডাইরেক্ট URL সম্পর্কে গুরুত্বপূর্ণ প্রযুক্তিগত বিবরণ এখানে দেওয়া হলো। যখন UniFi কোনো অতিথিকে আপনার এক্সটার্নাল পোর্টালে রিডাইরেক্ট করে, তখন এটি URL-এ বেশ কয়েকটি কোয়েরি প্যারামিটার যোগ করে। এর মধ্যে রয়েছে: AP MAC অ্যাড্রেস, ক্লায়েন্ট ডিভাইসের MAC অ্যাড্রেস, একটি Unix টাইমস্ট্যাম্প, ক্লায়েন্ট যে আসল URL-এ যাওয়ার চেষ্টা করছিল তা এবং SSID নাম। আপনার এক্সটার্নাল পোর্টাল - এই ক্ষেত্রে Purple - সেই প্যারামিটারগুলো ক্যাপচার করে, কানেক্ট হওয়া ডিভাইসটি শনাক্ত করতে সেগুলো ব্যবহার করে, উপযুক্ত স্প্ল্যাশ পেজ দেখায়, অথেন্টিকেশন হ্যান্ডেল করে এবং তারপর সেই MAC অ্যাড্রেসটিকে অথরাইজ করতে UniFi Network Application-এ একটি API কল ব্যাক করে।
সেই API কলটি হলো অত্যন্ত গুরুত্বপূর্ণ হ্যান্ডশেক। UniFi Network Application 9.1 এবং তার পরবর্তী সংস্করণ অনুযায়ী, সঠিক কী-ভিত্তিক অথেন্টিকেশন সহ একটি অফিসিয়াল REST API রয়েছে। অথরাইজেশন এন্ডপয়েন্টটি হলো সাইট API-এর ভার্সন ওয়ানের একটি POST রিকোয়েস্ট, যা নির্দিষ্ট ক্লায়েন্ট ID-কে টার্গেট করে, যার সাথে একটি JSON বডি থাকে যা মিনিটে সময়ের সীমা, মেগাবাইটে ডেটা ব্যবহারের সীমা এবং প্রতি সেকেন্ডে কিলোবিটে রেট লিমিট নির্দিষ্ট করতে পারে। কন্ট্রোলার একবার সেই অথরাইজেশন পেয়ে গেলে, এটি AP-তে নির্দেশনা পাঠায় এবং অতিথির স্ট্যাটাস পেন্ডিং থেকে অথরাইজড-এ পরিবর্তিত হয়। ইন্টারনেট অ্যাক্সেস মঞ্জুর করা হয়।
এবার চলুন Walled Garden সম্পর্কে কথা বলা যাক, যাকে UniFi বলে Pre-Authorization Access। এটি হলো ডোমেন এবং IP অ্যাড্রেসের হোয়াইটলিস্ট যা অতিথিরা অথেন্টিকেট করার আগেই অ্যাক্সেস করতে পারে। এটি অত্যন্ত জরুরি এবং এটি ভুল কনফিগারেশনের অন্যতম সাধারণ কারণ।
ন্যূনতমপক্ষে, আপনার walled garden-এ আপনার Purple পোর্টালের ফুল্লি কোয়ালিফাইড ডোমেন নেম এবং Purple-এর ইনফ্রাস্ট্রাকচার যে IP অ্যাড্রেস বা CIDR রেঞ্জগুলোতে রিসলভ হয় তা অন্তর্ভুক্ত থাকতে হবে। আপনি যদি সোশ্যাল লগইন - Facebook, Google, Microsoft - ব্যবহার করেন, তবে আপনাকে সেই প্রোভাইডারদের জন্য OAuth এন্ডপয়েন্ট ডোমেনগুলোও যোগ করতে হবে। Google-এর লগইন এন্ডপয়েন্টগুলো একাধিক IP রেঞ্জ এবং accounts.google.com ও oauth2.googleapis.com সহ বেশ কয়েকটি ডোমেন জুড়ে বিস্তৃত। Facebook-এর লগইন ইনফ্রাস্ট্রাকচারের জন্যও একইভাবে কয়েকটি এন্ট্রির প্রয়োজন হয়। Purple-এর ডকুমেন্টেশনে প্রয়োজনীয় সঠিক এন্ট্রিগুলোর একটি নিয়মিত আপডেট করা তালিকা দেওয়া থাকে এবং সেই প্রোভাইডাররা তাদের ইনফ্রাস্ট্রাকচার আপডেট করার সাথে সাথে এই তালিকাটি আপ-টু-ডেট রাখা হয়।
UniFi-এর ক্ষেত্রে একটি নির্দিষ্ট জটিলতা রয়েছে যা অনেক ডেপ্লয়মেন্টের সময় সমস্যার সৃষ্টি করে। AP-র HTTP রিডাইরেক্টরটি শুধুমাত্র পোর্ট 80-তে প্লেইন HTTP ট্রাফিক ইন্টারসেপ্ট করে। আধুনিক ডিভাইসগুলো - iOS, Android, Windows, macOS - সবই HTTPS-ভিত্তিক Captive Portal ডিটেকশন পরিচালনা করে। Apple ডিভাইসগুলো HTTPS-এর মাধ্যমে captive.apple.com-এ হিট করে। Android ডিভাইসগুলো connectivitycheck.gstatic.com-এ হিট করে। যদি সেই HTTPS রিকোয়েস্টগুলো কোনো নির্দিষ্ট রেসপন্স না পায়, তবে ডিভাইসটি ধরে নিতে পারে যে সেখানে কোনো Captive Portal নেই এবং সাইন-ইন প্রম্পট দেখাতে ব্যর্থ হতে পারে।
এর সমাধান হলো এটি নিশ্চিত করা যেন আপনার walled garden-এ প্রধান অপারেটিং সিস্টেমগুলোর জন্য Captive Portal ডিটেকশন ডোমেনগুলো অন্তর্ভুক্ত থাকে এবং আপনার Purple পোর্টালটি একটি বৈধ, বিশ্বস্ত SSL সার্টিফিকেট সহ HTTPS-এর মাধ্যমে অ্যাক্সেসযোগ্য হয়। সেলফ-সাইনড সার্টিফিকেটগুলোর কারণে ব্রাউজারে সিকিউরিটি ওয়ার্নিং দেখাবে যা পোর্টালটি লোড হতে বাধা দেবে। প্রোডাকশন ডেপ্লয়মেন্টের জন্য এটি নিয়ে কোনো আপস করা যাবে না।অন্যান্য UniFi-নির্দিষ্ট বিবেচনার মধ্যে রয়েছে কন্ট্রোলার অ্যাক্সেসিবিলিটি। UniFi Network Application — এটি ক্লাউড গেটওয়ে, ক্লাউড কি বা সেলফ-হোস্টেড সার্ভার যাতেই চলুক না কেন — API অথরাইজেশন কল সফল হওয়ার জন্য Purple-এর ইনফ্রাস্ট্রাকচার থেকে এটি অ্যাক্সেসযোগ্য হতে হবে। আপনার কন্ট্রোলার যদি NAT-এর অধীনে কোনো প্রাইভেট নেটওয়ার্কে থাকে, তবে আপনাকে নিশ্চিত করতে হবে যে প্রাসঙ্গিক API পোর্টগুলো অ্যাক্সেসযোগ্য। সেলফ-হোস্টেড কন্ট্রোলারের জন্য, এটি সাধারণত লেগ্যাসি API-এর জন্য পোর্ট 8443, অথবা সংস্করণ 9.1-এ প্রবর্তিত নতুন API-এর জন্য স্ট্যান্ডার্ড HTTPS পোর্ট 443। Purple-এর সাপোর্ট ডকুমেন্টেশন নির্দিষ্ট আইপি রেঞ্জগুলো উল্লেখ করে যেগুলোতে আপনার কন্ট্রোলারে ইনবাউন্ড অ্যাক্সেসের প্রয়োজন।
RADIUS-ভিত্তিক অথেনটিকেশনের জন্য - যা ওপেন গেস্ট SSID মডেলের পরিবর্তে WPA2-Enterprise বা WPA3-Enterprise SSID-এর সাথে Purple ব্যবহার করার সময় প্রাসঙ্গিক - UniFi-এর বিল্ট-ইন RADIUS সার্ভার স্ট্যান্ডার্ড 802.1X EAP মেথডগুলো সাপোর্ট করে। আপনি Settings, Networks, RADIUS Servers-এর অধীনে RADIUS প্রোফাইল কনফিগার করবেন এবং তারপর আপনার SSID কনফিগারেশনে সেই প্রোফাইলটি রেফারেন্স করবেন। UniFi সংস্করণ 8.4 থেকে RADSEC নামে পরিচিত RADIUS over TLS-ও সাপোর্ট করে, যা AP এবং অথেনটিকেশন সার্ভারের মধ্যে RADIUS ট্রাফিক এনক্রিপ্ট করে। মাল্টি-সাইট ডেপ্লয়মেন্টের জন্য যেখানে RADIUS ট্রাফিক পাবলিক ইন্টারনেট ব্যবহার করে, সেখানে RADSEC দৃঢ়ভাবে সাজেস্ট করা হয়।
[ইমপ্লিমেন্টেশন রিকমেন্ডেশনস এবং পিটফলস — আনুমানিক 2 মিনিট]
আপনাকে ব্যবহারিক ইমপ্লিমেন্টেশন চেকলিস্টটি দেওয়া যাক যা আমি UniFi-এ Purple ডেপ্লয় করা যেকোনো ক্লায়েন্টের সাথে ব্যবহার করি।
প্রথমত, নেটওয়ার্ক সেগমেন্টেশন। আপনার গেস্ট SSID অবশ্যই একটি ডেডিকেটেড VLAN-এ থাকতে হবে, যা আপনার কর্পোরেট এবং IoT নেটওয়ার্ক থেকে আলাদা। UniFi এটিকে সহজ করে তোলে - Settings, Networks-এ একটি ডেডিকেটেড নেটওয়ার্ক তৈরি করুন, এটিকে একটি VLAN ID অ্যাসাইন করুন এবং আপনার গেস্ট SSID-কে সেই নেটওয়ার্কের সাথে সংযুক্ত করুন। গেস্ট-টু-গেস্ট ট্রাফিক প্রতিরোধ করতে গেস্ট নেটওয়ার্কে ক্লায়েন্ট আইসোলেশন সক্ষম করুন।
দ্বিতীয়ত, কন্ট্রোলারের একটি বৈধ FQDN এবং একটি ট্রাস্টেড SSL সার্টিফিকেট থাকতে হবে। আইপি ঠিকানার ওপর নির্ভর করবেন না। একটি সঠিক ডোমেইন নাম ব্যবহার করুন, এতে একটি Let's Encrypt বা বাণিজ্যিক সার্টিফিকেট পান এবং সেই সার্টিফিকেট ব্যবহার করার জন্য UniFi কনফিগার করুন। এটি অধিকাংশ HTTPS রিডাইরেক্ট সমস্যার সমাধান করে।
তৃতীয়ত, আপনার ওয়াল্ড গার্ডেনটি সতর্কতার সাথে তৈরি করুন এবং এটি পরীক্ষা করুন। ন্যূনতম এন্ট্রিগুলো হলো: আপনার Purple পোর্টাল ডোমেইন এবং এর আইপি রেঞ্জ, iOS, Android এবং Windows-এর জন্য Captive Portal ডিটেকশন ডোমেইন এবং আপনার ব্যবহৃত যেকোনো OAuth প্রোভাইডার ডোমেইন। এমন একটি ডিভাইস দিয়ে পরীক্ষা করুন যা আগে কখনো নেটওয়ার্কে কানেক্ট হয়নি - ক্যাশড DNS এবং নেটওয়ার্ক স্টেট পরীক্ষার সময় ওয়াল্ড গার্ডেনের ঘাটতিগুলো আড়াল করতে পারে।
চতুর্থত, API ইন্টিগ্রেশনের জন্য, ন্যূনতম প্রয়োজনীয় পারমিশন সহ UniFi Network Application-এ একটি ডেডিকেটেড লোকাল অ্যাডমিন অ্যাকাউন্ট ব্যবহার করুন। আপনার প্রাইমারি অ্যাডমিন ক্রেডেন্সিয়াল ব্যবহার করবেন না। আপনি যদি Network Application 9.1 বা তার পরবর্তী সংস্করণ ব্যবহার করেন, তবে Control Plane, Integrations-এর অধীনে নতুন API কী মেকানিজম ব্যবহার করুন - এটি আরও নিরাপদ এবং এর জন্য ক্রেডেন্সিয়াল-ভিত্তিক অথেনটিকেশনের প্রয়োজন হয় না।পঞ্চমত, সেশনের সময়কাল সতর্কতার সাথে বিবেচনা করুন। UniFi-এর ডিফল্ট গেস্ট সেশনের মেয়াদ মাত্র আট ঘণ্টা পর্যন্ত হতে পারে। হসপিটালিটি স্থাপনার ক্ষেত্রে যেখানে অতিথিরা একাধিক রাত অবস্থান করতে পারেন, সেখানে Purple পোর্টালে উপযুক্ত সেশনের সময়কাল কনফিগার করুন এবং নিশ্চিত করুন যে সেই সময়কালগুলি API অথরাইজেশন কলে সঠিকভাবে পাঠানো হচ্ছে।
আমি যে সাধারণ সমস্যাটি সবচেয়ে বেশি দেখি তা হলো এমন একটি সেলফ-হোস্টেড কন্ট্রোলারে ডেপ্লয় করা যা সবার জন্য অ্যাক্সেসযোগ্য নয়। Purple যদি অতিথিদের অনুমোদন দেওয়ার জন্য আপনার কন্ট্রোলারে পৌঁছাতে না পারে, তাহলে পোর্টালটি লোড হবে কিন্তু অথেনটিকেশন কোনো বার্তা ছাড়াই ব্যর্থ হবে। লাইভ করার আগে সর্বদা Purple-এর ইনফ্রাস্ট্রাকচার থেকে API কানেক্টিভিটি যাচাই করুন।
[RAPID-FIRE Q&A — প্রায় ১ মিনিট]
এটি কি UniFi Dream Machine Pro-তে কাজ করে? হ্যাঁ। সব UniFi OS কনসোল - UDM, UDM Pro, UDM SE, UCG Ultra, UCG-Max - External Portal Server কনফিগারেশন সমর্থন করে। Network Application ডিভাইসেই চলে।
আমি কি একটি একক Purple অ্যাকাউন্ট থেকে একাধিক UniFi সাইটে Purple ব্যবহার করতে পারি? হ্যাঁ। Purple-এর মাল্টি-সাইট আর্কিটেকচার ঠিক এই কাজের জন্যই ডিজাইন করা হয়েছে। প্রতিটি ভেন্যু Purple-এ একটি পৃথক সাইট হিসেবে কনফিগার করা হয়, যা সংশ্লিষ্ট UniFi সাইটের সাথে ম্যাপ করা থাকে।
আমাকে কি UniFi গেটওয়েতে ফায়ারওয়াল পোর্ট খুলতে হবে? আপনাকে নিশ্চিত করতে হবে যে গেস্ট VLAN ট্রাফিক ৪৪৩ পোর্টে Purple পোর্টাল ডোমেনে পৌঁছাতে পারে। কন্ট্রোলার API পোর্টটিও Purple-এর সার্ভার থেকে অ্যাক্সেসযোগ্য হওয়া প্রয়োজন। Purple-এর ডকুমেন্টেশনে নির্দিষ্ট IP রেঞ্জ দেওয়া আছে।
WPA3-এর ক্ষেত্রে কী হবে? UniFi WPA3 Personal এবং WPA3 Enterprise সমর্থন করে। Captive Portal মেকানিজমটি গেস্ট নেটওয়ার্কে WPA3 Personal-এর সাথে কাজ করে। WPA3 Enterprise 802.1X এবং RADIUS ব্যবহার করে, যা একটি ভিন্ন অথেনটিকেশন ফ্লো।
[সারাংশ এবং পরবর্তী পদক্ষেপ — প্রায় ১ মিনিট]
সংক্ষেপে বলতে গেলে: UniFi-তে একটি এক্সটার্নাল Captive Portal হিসেবে Purple ডেপ্লয় করা একটি সু-সমর্থিত, আর্কিটেকচারালি শক্তিশালী ইন্টিগ্রেশন। প্রধান পদক্ষেপগুলো হলো: আপনার গেস্ট SSID-টিকে External Portal Server অপশন দিয়ে কনফিগার করুন যা আপনার Purple পোর্টাল URL-কে নির্দেশ করে, একটি বিস্তৃত ওয়াল্ড গার্ডেন তৈরি করুন যা Purple-এর ইনফ্রাস্ট্রাকচার এবং আপনার ব্যবহৃত যেকোনো OAuth প্রোভাইডারকে কভার করে, আপনার UniFi কন্ট্রোলারের একটি বৈধ SSL সার্টিফিকেট আছে এবং সেটি Purple-এর API সার্ভার থেকে অ্যাক্সেসযোগ্য তা নিশ্চিত করুন এবং আপনার ভেন্যুর ধরন অনুযায়ী উপযুক্ত সেশনের সময়কাল কনফিগার করুন।
ব্যবসায়িক দিকটি অত্যন্ত স্পষ্ট। বিল্ট-ইন UniFi পোর্টাল আপনাকে একটি স্প্ল্যাশ পেজ দেয়। Purple আপনাকে একটি কমপ্লায়েন্স-প্রস্তুত, অ্যানালিটিক্স-চালিত গেস্ট এক্সপেরিয়েন্স প্ল্যাটফর্ম দেয় যা আপনার CRM-এর সাথে একীভূত হয়, GDPR সম্মতির অধীনে ফার্স্ট-পার্টি ডেটা সংগ্রহ করে এবং ফুটফল ও ডুয়েল-টাইম অ্যানালিটিক্স প্রদান করে যা ভেন্যু অপারেটর ও মার্কেটিং টিমের আসলে প্রয়োজন।
আপনি যদি একজন MSP বা সিস্টেম ইন্টিগ্রেটর হন যিনি স্কেলে UniFi ডেপ্লয় করছেন, তাহলে Purple-এর মাল্টি-সাইট ম্যানেজমেন্ট এবং হোয়াইট-লেবেল ক্ষমতা এটিকে আপনার ক্লায়েন্টদের জন্য সঠিক ওভারলে হিসেবে গড়ে তোলে।
বিস্তারিত কনফিগারেশন ডকুমেন্টেশন, ওয়াল্ড গার্ডেন IP তালিকা এবং API ইন্টিগ্রেশন গাইডের জন্য, purple.ai ভিজিট করুন। শোনার জন্য ধন্যবাদ।