প্রথম সেশনই জেতে: উচ্ছেদের আগে OpenVPN লগইন নিয়ন্ত্রণ
পরে আসা লগইন প্রত্যাখ্যান করা পুরোটাকে প্রতিস্থাপন করার সমান নয়। সিদ্ধান্তটি একই নামের উচ্ছেদের আগেই নিতে হবে, আর স্লট পরীক্ষা হতে হবে পারমাণবিক।
প্রতি অ্যাকাউন্টে একটি সেশন - এমন নীতি দ্বিতীয় লগইন আসার আগ পর্যন্ত স্থির মনে হয়। দুটি ফল সম্ভব: নতুন আগন্তুক চলমান সেশনটিকে প্রতিস্থাপন করে, অথবা চলমান সেশনটি স্লট ধরে রাখে এবং নতুনকে প্রত্যাখ্যান করা হয়। কেবল দ্বিতীয়টিই প্রথম-সেশন-জেতে নীতি। বেশিরভাগ মানুষ যে ক্লায়েন্ট অপশনের দিকে ঝোঁকেন সেটি সমবর্তিতা চালু করে, তাই এই ফল দেয় না।
একটি সেটিংয়ের পিছনে দুটি চুক্তি লুকিয়ে আছে
সমবর্তিতা বন্ধ থাকলে একই সার্টিফিকেট নামযুক্ত দ্বিতীয় সংযোগ চলমান সেশনটিকে সরিয়ে দিতে পারে। সমবর্তিতা চালু করলে একসাথে কয়েকটি সেশন অনুমোদিত হয়, যা সীমার বিপরীত। কোনোটিই প্রত্যাখ্যান নীতি নয়, তাই সিদ্ধান্ত পুরোপুরি অন্যত্র নিতে হবে।
কিছু বাস্তবায়নের আগে চুক্তিটি লিখে ফেলুন: কাকে প্রত্যাখ্যান করা হয়, কোন প্রমাণ চলমান সেশন শনাক্ত করে, আর পরিষ্কার বিচ্ছিন্নতা ছাড়া সেশন মরে গেলে কী হয়। এই ভাষায় কেউ না বলা নীতি পরে পরীক্ষা করা যায় না।
আপনার কানেক্ট হুকের আগেই উচ্ছেদ ঘটে
2.6 সার্ভার কোড পথে, নতুন ক্লায়েন্টের প্রাথমিক সেটআপ সমবর্তিতা বন্ধ থাকলে একই নামের বিদ্যমান দৃষ্টান্ত সরিয়ে দেয়। এই অপসারণ কানেক্ট হ্যান্ডলার চেইন চলার আগেই ঘটে। তাই ডুপ্লিকেট দেখে ব্যর্থতা ফেরানো স্ক্রিপ্ট নতুনকে প্রত্যাখ্যান করে চলমান সেশন বাদ পড়ার পরে - ঠিক যে ফল নীতিটি ঠেকাতে চেয়েছিল। upstream বাস্তবায়নের কলব্যাক ক্রমই আপনার বিল্ডের একমাত্র নির্ভরযোগ্য উত্তর।
| Stage | Who can still refuse | Effect on the incumbent |
|---|---|---|
| Certificate check | Server trust configuration | None |
| Authentication decision | The authentication controller | None, because establishment has not run |
| Connect handler | A profile script | Already evicted in the same-name case |
| Post-establishment | Status tooling, monitoring | Both sessions already exist or one is gone |
স্ট্যাটাস ফাইল পোল করাও কোনো গেট নয়। একসাথে আসা দুটি চেষ্টা কেউ নিশ্চিত হওয়ার আগেই খালি স্লট দেখতে পারে, আর দুটোই এগিয়ে যায়।
সিদ্ধান্তটি প্রমাণীকরণে নিয়ে যান
সার্টিফিকেট যাচাইয়ের পর ম্যানেজমেন্ট ইন্টারফেস প্রমাণীকরণের সিদ্ধান্ত নিতে পারে। সেই বিন্যাসে কন্ট্রোলার পর্যবেক্ষক নয়: সে প্রতিটি সংযোগকারী ক্লায়েন্ট দৃষ্টান্ত পায় এবং উত্তর দেয় সেই দৃষ্টান্ত এগোতে পারবে কি না। উত্তর প্রতিষ্ঠার আগেই আসে, তাই প্রত্যাখ্যান চলমান সেশনকে অক্ষত রাখে। একই চ্যানেল বিচ্ছিন্নতার কথা জানায়, আর এভাবেই কন্ট্রোলার জানে স্লট বৈধভাবে ছাড়া হয়েছে।
প্রতিটি নতুন দৃষ্টান্তকে এই গেট পেরোতে হবে, পুনঃসংযোগ এবং প্রম্পট ছাড়া পুনঃপ্রমাণীকরণের যেকোনো পথসহ। যে গেটে কিছু দৃষ্টান্ত কখনো পৌঁছায় না তা কিছুই রক্ষা করে না, আর এই বাদ পড়া কেউ বাইপাস ব্যবহার না করা পর্যন্ত অদৃশ্য থাকে।
টোকেন গেট এড়িয়ে যেতে পারে
একবার টোকেন ইস্যু হলে, সার্ভার এটি অভ্যন্তরীণভাবে যাচাই করে সেই সংযোগের বাহ্যিক প্রমাণীকরণ এড়িয়ে যেতে পারে. ম্যানেজমেন্ট কল কখনো হয় না, তাই কেবল সেখানে বাস্তবায়িত স্লট পরীক্ষা নতুন দৃষ্টান্ত দেখে না। এই আচরণ ব্যবহারকারীদের জন্য সুবিধা, সমবর্তিতা নীতির জন্য ফাঁক। টোকেন-প্রমাণিত সংযোগগুলিকে সমতুল্য কর্তৃত্বপূর্ণ পরীক্ষা পাস করান, অথবা নীতি প্রতিটি সংযোগে সিদ্ধান্ত দাবি করলে টোকেন পথ বন্ধ করুন।
প্রতিটি টোকেন নিঃশর্তে গ্রহণ করে এর ক্ষতিপূরণ করবেন না। মেয়াদোত্তীর্ণ বা অবৈধ টোকেনকেও ব্যর্থ হতে হবে, এবং তা বাকি সবকিছুর মতো একই সিদ্ধান্ত-বিন্দু দিয়ে ব্যর্থ হতে হবে।
সংরক্ষণকে ঠিকানায় নয়, দৃষ্টান্তে বাঁধুন
ঠিকানা দুর্বল পরিচয়: একই ল্যাপটপ থেকে পুনঃসংযোগ ভিন্ন ঠিকানা থেকে আসতে পারে, আর কপি করা ক্রেডেনশিয়াল একই ঠিকানা থেকে আসতে পারে। সংরক্ষণটি সার্ভারের নির্ধারিত ক্লায়েন্ট দৃষ্টান্তে বাঁধুন, যাতে ইতিমধ্যে গৃহীত দৃষ্টান্তের পুনঃপ্রমাণীকরণ মালিক হিসেবে চেনা যায়। নতুন দৃষ্টান্ত শনাক্তকারীকে একই টোকেন দিলেও প্রথম-জেতে সিদ্ধান্তের মাধ্যমে নিজের স্লট নিতে হবে।
কেবল ব্যর্থ চেষ্টার সংরক্ষণ ছাড়ুন। পুরনো চেষ্টার বিলম্বিত বিচ্ছিন্নতা ঘটনা নতুন মালিকের স্লট মুছতে পারবে না, তাই ছাড়ার সময় অ্যাকাউন্ট নয়, দৃষ্টান্তের নাম বলা হয়। কন্ট্রোলার পুনরারম্ভের পরে কাউকে গ্রহণের আগে জীবিত সেশনগুলি মিলিয়ে নিন, এবং অ্যাকাউন্ট পরিবেশনকারী প্রতিটি গেটওয়েতে একই নিয়ম প্রয়োগ করুন।
সত্যিই পুরনো স্লট কীভাবে উদ্ধার হবে তা আলাদাভাবে ঠিক করুন। প্রশাসকের এটি পরিষ্কার করার নথিভুক্ত উপায় দরকার, আর সেই পথ শুধু পুনঃসংযোগ ক্লিক করা ব্যবহারকারীর নাগালে থাকা উচিত নয়।
গুরুত্বপূর্ণ জোড়াগুলি পরীক্ষা করুন: প্রায় একসাথে দুটি লগইন, পরিষ্কার বিচ্ছেদের পরে পুনঃসংযোগ, চলমান সেশনের পুনঃপ্রমাণীকরণ, প্রত্যাখ্যাত নবাগত এবং কন্ট্রোলার পুনরারম্ভ। প্রতিটি ক্ষেত্রে চলমান সেশন ব্যবহারযোগ্য থাকতে হবে এবং অন্য অ্যাকাউন্টের কোনো ক্ষতি ছাড়াই নবাগতকে প্রত্যাখ্যান করতে হবে।