Cisco ASA থেকে Azure VPN: ট্রাফিক সিলেক্টর প্রিফিক্স জোড়া
ASA থেকে Azure VPN সংযোগটি একটি চুক্তি হিসেবে লিখুন: সংযোগ মডেল, সঠিক প্রিফিক্স জোড়া, সিলেক্টর যাচাই, তারপর রোলব্যাক। রিলিজের সঙ্গে মেলে এমন রানবুক।
টানেল উঠে আসে, IKE সুস্থ দেখায়, কিন্তু এর ভেতর দিয়ে কিছুই যায় না। ASA থেকে Azure সিলেক্টর সমস্যার এটাই সাধারণ রূপ, আর এজন্যই দুই কনসোলের কোনোটিই স্পর্শ করার আগে আমি চুক্তিটি লিখি। চুক্তিটি চারটি জিনিস: প্রতিটি পিয়ারকে শনাক্ত করা অবজেক্ট, সংযোগ মডেল, সঠিক প্রিফিক্স জোড়া এবং প্রতিটি জোড়া প্রমাণ করার যাচাই। এগুলো ভুল হলে পরের প্রতিটি কমান্ড এমন কনফিগারেশন ডিবাগ করে যা আপনার বানানোই উচিত হয়নি। এই রানবুকে আমি যে ক্রম ব্যবহার করি, তার সঙ্গে সেই কমান্ডগুলো আছে যা দেখায় কোন অবজেক্টটি আসলে ভুল।
কনফিগার করার আগে চারটি অবজেক্ট লিখে রাখুন
শুরু করুন ASA-র রিলিজ ও প্ল্যাটফর্ম, পাবলিক এন্ডপয়েন্ট, Azure VPN গেটওয়ের ধরন ও SKU, এবং আপনার দিকটিকে প্রতিনিধিত্ব করা লোকাল নেটওয়ার্ক গেটওয়ে দিয়ে। এই চারটি নাম পরের সবকিছুর শব্দভাণ্ডার, আর কিছু ভেঙে গেলে প্রতিটির মালিক আলাদা।
এর মধ্যে দুটি এখনও অনুমান হলে থামুন। লোকাল নেটওয়ার্ক গেটওয়েতে ভুল প্রিফিক্স তালিকা কোনো টিউনিং সমস্যা নয়।
একটি সংযোগ মডেল বাছুন, টেমপ্লেট মেশানো বন্ধ করুন
ক্রিপ্টো-ম্যাপ ডিজাইন আর টানেল-ইন্টারফেস ডিজাইন আলাদা কনফিগারেশন, আর একটির টেমপ্লেট পিয়ার ঠিকানা সম্পাদনা করে অন্যটির জন্য বৈধ হয়ে যায় না। কিছু পেস্ট করার আগে লিখে রাখুন কোনটি বানাচ্ছেন, কারণ অমিলটি পরে কনফিগারেশন ত্রুটি নয়, সিলেক্টর সমস্যা হিসেবে প্রকাশ পায়। Microsoft-এর ASA আন্তঃকার্যক্ষমতা নির্দেশিকা দুটি প্যাটার্নই কভার করে এবং বলে প্রতিটি কোন Azure গেটওয়ে মডেল ধরে নেয়। আপনার নোটে মডেলের নাম না থাকলে আপনার এখনও ডিজাইন নেই।
পলিসি-ভিত্তিক ট্রাফিক সিলেক্টরসহ রুট-ভিত্তিক Azure গেটওয়ে একটি নির্দিষ্ট নথিভুক্ত বিকল্প, ডিফল্ট নয়। আপনার ডিজাইন যদি এটির উপর নির্ভর করে, ডিজাইনকে তা বলতেই হবে, কারণ ডিফল্ট রুট-ভিত্তিক সিলেক্টর মডেল Azure-র দিকে ভিন্নভাবে আচরণ করে।
সংস্করণের সীমাও চুক্তির অংশ। এনক্রিপশন ডোমেইনের সীমা নিয়ে পুরোনো এক ফিল্ড রিপোর্ট নির্দিষ্ট কিছু রিলিজ সম্পর্কিত তথ্য, প্রতিটি ASA-র স্থায়ী বৈশিষ্ট্য নয়।
অ্যাগ্রিগেট নয়, প্রিফিক্স জোড়াগুলো তালিকাভুক্ত করুন
ম্যাট্রিক্সটি লিখুন। অন-প্রিমাইজেস A ও B থেকে Azure X ও Y — এই চারটি জোড়া, আর প্রতিটির হয় কভারেজ দরকার, নয় স্পষ্ট বাদ। A ও B-কে এক অ্যাগ্রিগেটে মিলিয়ে দিলে তাদের মাঝের সবকিছুও ঢুকে পড়ে, আর এভাবেই ডিজাইনে চুপচাপ একটা ফাঁক তৈরি হয়।
আপনি কী সংরক্ষণ করেছেন নয়, পিয়াররা কী নিয়ে সম্মত হয়েছে তা দেখুন। ASA-র লোকাল ও রিমোট নেটওয়ার্ক তালিকা হলো অভিপ্রায়; CHILD SA হলো ফলাফল।
কোনো জোড়া অনুপস্থিত থাকলে সমাধান সাধারণত access-list লাইন বা সিলেক্টর এন্ট্রি, নতুন টানেল নয়।
যে কমান্ড অবজেক্টের নাম বলে, তা দিয়ে যাচাই করুন
ASA-তে আগে IKE সেশন, তারপর IPsec SA, তারপর সিলেক্টর জোড়া নিশ্চিত করুন। প্রতিটি কমান্ড ভিন্ন প্রশ্নের উত্তর দেয়, আর শুধু প্রথমটি চালানোই টানেল উঠেছে — এই কথাটিকে ভুল সিদ্ধান্তে পরিণত করে। তালিকায় প্রথম যে SA আছে তার জন্য নয়, আপনি যাকে সত্যিই কনফিগার করেছেন তার আউটপুট পড়ুন। Azure-র দিকটি একই তিনটি প্রশ্নের উত্তর নিজের দৃষ্টিভঙ্গি থেকে দেয়।
show crypto ikev2 sa detailed
show crypto ipsec sa peer 203.0.113.10
show run access-list AZURE-SELECTORS
packet-tracer input inside icmp 10.1.10.10 8 0 10.2.20.20 detailed
az network vpn-connection show --name <connection> --query connectionStatus দিয়ে Azure-র কাছে সংযোগের অবস্থা জিজ্ঞাসা করুন। ডেটা পথে শূন্য বাইট নিয়ে Connected মানে সিলেক্টর সমস্যা, রাউটিং সমস্যা নয়।
প্রতি জোড়ায় একটি অনুমোদিত ফ্লো পরীক্ষা করুন, অন্য দিকে দেখা যাওয়া সোর্স ঠিকানা দেখুন, এবং এমন একটি রিসোর্স চেষ্টা করুন যা প্রত্যাখ্যাত হওয়া উচিত। ওই শেষ পরীক্ষাটিই একমাত্র যা প্রমাণ করে সীমাটি এখনও আছে।
এনক্রিপশন পরিধি অ্যাক্সেস অনুমতির থেকে আলাদা রাখুন
প্রশস্ত সিলেক্টর অনুমতি নয়। সমর্থিত লেআউট অ্যাপ্লিকেশন পলিসির চেয়ে প্রশস্ত হলে সংকীর্ণ সেবাগুলো ফায়ারওয়াল নিয়মে রাখুন এবং এনক্রিপশন পরিধি যেখানে থাকা উচিত সেখানেই রাখুন।
Azure ওয়ার্কলোড রুট আর অন-প্রিমাইজেস ফেরত রুট আলাদাভাবে পর্যালোচনা করা হয়। BGP ঘোষণা, স্ট্যাটিক নেটওয়ার্ক পরিধি এবং ব্যবহারকারী-নির্ধারিত রুট সবই একই পথ বর্ণনা করতে হবে, আর এর কোনোটিই পিয়ার ট্রান্সপোর্ট পুনরাবৃত্তভাবে ধরে ফেলতে পারবে না।
রোলব্যাক এবং এটি কাজ করেছে তার প্রমাণ
সিলেক্টর বদলানোর আগে আগের চালু কনফিগারেশন রেখে দিন, আর যে একটিমাত্র কমান্ড এটি ফিরিয়ে আনে তা জানুন। ASA-তে এর মানে সংরক্ষিত কপি ও মিলে যাওয়া পুনরুদ্ধার পথ, আপনি কী সম্পাদনা করেছিলেন তার স্মৃতি নয়। পরিবর্তনটি যখন এখনও কল্পিত, তখনই চেঞ্জ টিকিটে পুনরুদ্ধার কমান্ডটি লিখুন। তারপর একই তিনটি পরীক্ষা আবার চালান: IKE অবস্থা, IPsec SA জোড়া, প্রতি জোড়ায় একটি অনুমোদিত ফ্লো।
পুনরুদ্ধারের পরেও কোনো জোড়া ব্যর্থ হলে পরিবর্তনটি কারণ ছিল না, আর আপনি নিজেকে দ্বিতীয় বিভ্রাট থেকে বাঁচালেন।