ASA VPN hairpin: একটি ইন্টারফেস দিয়ে দুটি টানেল রাউটিং
একজন রিমোট ব্যবহারকারীর ট্রাফিক যে ASA ইন্টারফেস দিয়ে এসেছে সেই একই ইন্টারফেস দিয়েই বেরোতে পারে, কিন্তু hairpin অনুমতি, টানেলের পরিধি, NAT ও ACL চারটি আলাদা সিদ্ধান্ত।
একজন রিমোট ব্যবহারকারী ASA-তে সংযোগ করেন, একটি শাখার পেছনের হোস্ট চান, আর ASA সেই অনুরোধটি ব্যবহারকারী যে ইন্টারফেস দিয়ে এসেছেন সেই একই ইন্টারফেস দিয়ে পাঠিয়ে দেয়। এর জন্য দ্বিতীয় কোনো ভৌত পোর্ট দরকার নেই। যা দরকার তা হলো চারটি স্বতন্ত্র সিদ্ধান্ত, যেগুলো মানুষ সাধারণত একটিতে মিলিয়ে ফেলে: hairpin করার অনুমতি, সঠিক ঠিকানাগুলো সুরক্ষিত রাখা একটি টানেল, আপনি যে সোর্সের প্রতিশ্রুতি দিয়েছেন তা সংরক্ষণকারী একটি NAT নীতি, এবং সার্ভিসটিকে অনুমোদনকারী একটি অ্যাক্সেস নীতি।
একটি প্যাকেট, দুটি টানেল
প্রবাহটি অনুসরণ করুন, অপারেশনের ক্রম আর রহস্যময় থাকবে না। প্যাকেটটি রিমোট-অ্যাক্সেস টানেলের ভেতরে পৌঁছায়, ডিক্রিপ্ট হয় এবং ক্লায়েন্ট পুল থেকে উৎসযুক্ত একটি সাধারণ IP প্যাকেটে পরিণত হয়। এরপর ASA এটিকে রাউট করে, সাইট-টু-সাইট crypto ACL-এর সঙ্গে মেলায়, আবার এনক্রিপ্ট করে এবং বাইরের ইন্টারফেস দিয়ে শাখার দিকে পাঠায়।
নিচের ঠিকানাগুলো উদাহরণমাত্র, কিন্তু আকৃতিটাই গুরুত্বপূর্ণ: উৎস হলো পুল, ASA-র ভেতরের LAN নয়।
remote client 10.77.0.20
-> remote-access tunnel, terminated on ASA outside
-> decrypted, routed, matched against site-to-site policy
-> site-to-site tunnel, sent from ASA outside
-> branch host 10.60.20.10এখান থেকে দুটি বিষয় আসে। ক্লায়েন্টের রিমোট-অ্যাক্সেস সংযোগের মাধ্যমে শাখার প্রিফিক্সের জন্য একটি রুট দরকার, অর্থাৎ split-tunnel বা পুশ করা রুট তালিকায় এটি থাকতে হবে। আর শাখাকে জানতে হবে কীভাবে ট্রাফিক 10.77.0.20 বা আপনার NAT ডিজাইন যে ঠিকানা বসিয়েছে সেখানে ফেরত পাঠাতে হয়।
hairpin অনুমতি বৈশ্বিক
মানুষ যে কমান্ডটির দিকে ঝোঁকে তা হলো same-security-traffic permit intra-interface. এটি ট্রাফিককে একই ইন্টারফেসে ঢুকতে ও বেরোতে দেয়, যা এই পথের জন্য ঠিক দরকার। এটি একটি বৈশ্বিক সেটিংও বটে: এটি চালু করলে অন্য সেই প্রবাহগুলোর আচরণ বদলে যায় যেগুলো একই ইন্টারফেস দুবার অতিক্রম করে।
এই কারণেই এটি ডিবাগিং সেশনের নয়, পরিবর্তন রেকর্ডের বিষয়। জিজ্ঞেস করুন ডিভাইসে আর কী এখন একই-ইন্টারফেস পথ নিতে পারে, এবং তার কোনোটি নেওয়া উচিত কি না। গেস্ট নেটওয়ার্ক বা ওভারল্যাপিং পার্টনার টানেলওয়ালা ব্যস্ত এজে উত্তরটি স্বয়ংক্রিয়ভাবে না নয়। সেটিংয়ের পাশে কারণটি লিখে রাখুন, কারণ পরের প্রকৌশলী কমান্ডটি পাবেন, কথোপকথনটি নয়।
সুরক্ষার পরিধি ও NAT আলাদা
সাইট-টু-সাইট টানেল তার crypto ACL যা নির্বাচন করে তা-ই সুরক্ষা দেয়। যদি সেই ACL সোর্স হিসেবে ASA-র ভেতরের সাবনেটের নাম দেয়, তবে রিমোট-অ্যাক্সেস পুল সুরক্ষিত নয় এবং প্যাকেটটি হয় বাদ পড়বে, নয়তো প্ল্যাটফর্মের অমিল ট্রাফিকের আচরণ অনুযায়ী খোলাখুলি পাঠানো হবে। ডিজাইন পুল ঠিকানা সংরক্ষণ করলে পুলটি সুরক্ষিত প্রবাহে যোগ করুন।
এরপর NAT ঠিক করে পুল ঠিকানাটি টিকে থাকবে কি না। Identity NAT এটি রাখে, আর শাখা 10.77.0.20-কে সোর্স হিসেবে দেখে। অনুবাদ চুক্তিটি বদলে দেয়: শাখা এখন অনূদিত ঠিকানায় ট্রাফিক ফেরত পাঠায় এবং তার নিজের নীতিকে তা গ্রহণ করতে হয়। নিয়মের ক্রম ঠিক করে crypto ACL অনুবাদের আগে মেলে না পরে, তাই কোনটি জিতবে ধরে না নিয়ে কার্যকর প্রবাহটি পড়ুন।
একটি ট্রানজিট কেস কাজ করানোর জন্য সাধারণ ইন্টারনেট PAT নিয়মগুলো মুছবেন না। লক্ষ্যযুক্ত ছাড় বা ইচ্ছাকৃত identity নিয়ম ব্যাখ্যা করাও সহজ, ফিরিয়েও নেওয়া সহজ, বহির্গামী নীতিতে ফাটল তৈরির চেয়ে।
এনক্রিপশন অনুমোদন নয়
একটি কাজ করা টানেল কেবল প্রমাণ করে যে দুই প্রান্ত কী ও সিলেক্টরে একমত. এই ব্যবহারকারী সেই সার্ভিসে পৌঁছাতে পারবেন কি না, সে বিষয়ে এটি কিছুই বলে না। রিমোট-অ্যাক্সেস সংযোগের সঙ্গে যুক্ত VPN ফিল্টার বা গ্রুপ নীতিকে এখনও শাখার গন্তব্য ও পোর্ট অনুমোদন করতে হবে, আর বাইরের পথের ইন্টারফেস ACL এখনও প্রযোজ্য।
উত্তরটি দুই দিকেই পরীক্ষা করুন। এমন একটি সংযোগ যা সফল হয় অথচ পাশের সার্ভিসটির ব্যর্থ হওয়া উচিত, তা একটি সফল পিংয়ের চেয়ে বেশি তথ্য দেয়, কারণ এটি দেখায় নীতিটি বাছাইমূলক, পুরোপুরি খোলা নয়। নিষিদ্ধ পরীক্ষাটি যদি সফল হয়, দোষ টানেলের নয়, নীতির। দুটি ফলাফলই পরিবর্তন রেকর্ডে রাখুন, যাতে পরের ব্যক্তি জানেন কোন আচরণটি অভিপ্রেত ছিল।
hairpin না দ্বিতীয় ইন্টারফেস
hairpin ট্রানজিট ডিজাইনটিকে ছোট রাখে এবং একটি বৈশ্বিক সেটিংয়ের খরচ নেয়। আলাদা ইন্টারফেস, বা নিজস্ব ভার্চুয়াল ইন্টারফেসসহ রুট-ভিত্তিক টানেল, ট্রানজিট পথটিকে বিচ্ছিন্ন করে এবং প্রতি-ইন্টারফেস নীতি দেয়, বিনিময়ে ঠিকানাকরণ ও আরেকটি crypto map বা প্রোফাইলের খরচে। কোনোটিই বেশি সঠিক নয়; তারা ভিন্নভাবে ব্যর্থ হয়।
রুট-ভিত্তিক ডিজাইন ভিন্ন একটি বিন্যাস, একই কনফিগারেশনে একটি চেকবক্স নয়। আপনি যদি একটিতে যান, উপরের নীতি-ভিত্তিক crypto ACL আলোচনা প্রযোজ্য হওয়া বন্ধ করে এবং রাউটিং টেবিল নির্বাচনের কাজ শুরু করে।
প্রকৃত ক্লায়েন্ট থেকে যাচাই করুন
ASA থেকে শুরু করা প্রোবের সোর্স ঠিকানা আলাদা এবং এটি পুল-থেকে-শাখা পথটি চালাবে না। পাঁচ-টুপল যাচাই করতে packet-tracer ব্যবহার করুন, তারপর প্রকৃত রিমোট ক্লায়েন্ট থেকে সত্যিকারের সংযোগ খুলুন, কারণ ট্রেসার কেবল অনুকরণ করে এবং ক্লায়েন্টের নিজের রাউটিং ও নীতিকে প্রতিস্থাপন করে না।
পরিকল্পিত পরিবর্তনের পর যে সার্ভিসটি কাজ করার কথা সেটিতে সংযোগ করুন, তারপর যেটিতে অস্বীকার হওয়ার কথা সেটিতে, তারপর শাখার ফেরত রুট নিশ্চিত করুন। Cisco-র VPN hairpin NAT উদাহরণ intra-interface অনুমতি, NAT ও ACL-গুলোকে দৃশ্যত আলাদা রাখে, এবং এটিই অনুকরণযোগ্য মানসিক মডেল।