Cloud VPN থেকে Cisco ASA: প্রস্তাবের অমিলের পরে পুনর্নির্মাণ
Cloud VPN প্রস্তাবটি টানেল অবজেক্টের ভিতরে গেঁথে রাখে, তাই ASA-এর সঙ্গে অমিল মানে তা পুনর্নির্মাণ করা। সিলেক্টর লিখে রাখুন, দুই ফেজ মিলিয়ে নিন, পুরোনো SA মুছে ফেলুন।
Cisco ASA দিয়ে অন্য প্রান্তে যুক্ত Cloud VPN টানেলে NEGOTIATION_FAILURE প্রায় সবসময়ই প্রস্তাব বা সিলেক্টরের অমিল বোঝায়, এবং প্রথম কাজের কথা হলো কোনো সম্পাদনা এটি ঠিক করবে না। টানেল অবজেক্ট তৈরি হওয়ার সময়ই Cloud VPN IKE প্রস্তাবটি স্থির করে দেয়। অ্যালগরিদম জায়গায় বসিয়ে বদলানোর কোনো ফিল্ড নেই, তাই মেরামত মানে ডিলিট করে রেকর্ড করা শুরুর বিন্দু দিয়ে আবার তৈরি করা। এটিকে পুনর্নির্মাণ হিসেবে ধরুন, তাহলে কাজটি অনুমানের এক বিকেল নয়, একটি চেকলিস্ট হয়ে যায়।
কিছু মুছে ফেলার আগে ব্যর্থতাটি পড়ুন
নেগোশিয়েশনের ব্যর্থতা একটি ফেজের সমস্যা, এবং পিয়ার লগ সাধারণত ফেজটির নাম বলে। ফেজ 1 ব্যর্থ মানে দুই প্রান্ত প্রস্তাব নিয়ে একমত হতে পারেনি বা একে অপরকে প্রমাণীকরণ করতে পারেনি। ফেজ 2 ব্যর্থ মানে টানেল উঠেছে কিন্তু সুরক্ষিত সিলেক্টরগুলো মেলেনি। এরা ভিন্ন মেরামত, এবং কেউ কনফিগারেশন স্পর্শ করার আগেই লগের লাইনটি বের করে নেওয়া উচিত।
এই ব্যর্থতা কিছু বিষয় বাদও দেয়। এটি VPC রুট নয়, টানেল ইন্টারফেসের ফায়ারওয়াল নিয়ম নয়, আর নেটওয়ার্কের ভিতরের নাম-রিজলিউশন ত্রুটি নয়। এসবের পিছনে দৌড়ালে আত্মবিশ্বাসী এমন পরিবর্তন হয় যা ফলাফল বদলাতে পারে না, আর শেষ মেরামতটি কাকে দায়ী করা যায় তা কঠিন হয়ে যায়।
দুই কনফিগারেশনই এখনো থাকতে থাকতে লিখে নিন
একটি টানেল মুছতে আধা মিনিট লাগে আর আপনার একমাত্র প্রমাণটি নষ্ট হয়ে যায়। তার আগে লোকাল ও রিমোট সিলেক্টর, পিয়ার ঠিকানা, শেয়ার্ড সিক্রেট কার, আর ASA-এর ক্রিপ্টো ম্যাপ বা IKEv2 প্রোফাইল লিখে রাখুন। ASA দুটি আলাদা প্রশ্নের উত্তর দেয়: কী কনফিগার করা আছে আর এখন কী চালু আছে:
show running-config crypto ikev2
show crypto ikev2 sa
show crypto ipsec sa | include local ident|remote ident|statusGoogle-এর দিকে কনসোল সারাংশ নয়, টানেল অবজেক্টটি পড়ুন, কারণ পিয়ার ঠিকানা ও সিলেক্টর ফিল্ডগুলোই সেই মান যা আপনাকে হুবহু পুনরুৎপাদন করতে হবে:
gcloud compute vpn-tunnels describe tunnel-to-asa --region europe-west1 \
--format="yaml(peerIp,localTrafficSelector,remoteTrafficSelector,ikeVersion,sharedSecret)"প্রথম ডিলিটের আগেই সেই মানগুলো টিকিটে লিখুন। নিচের পুনর্নির্মাণ কেবল তখনই কাজ করে যখন আপনি একই অবজেক্ট একটি ইচ্ছাকৃত পার্থক্য দিয়ে আবার তৈরি করতে পারেন।
যে অ্যালগরিদমে এক পক্ষ নেগোশিয়েট করতে রাজি নয়
Cloud VPN প্রচলিত পিয়ারের মতো IKEv1 অ্যালগরিদমের একটি পরিসর থেকে বেছে নেয় না। যে পিয়ার সেটিংস এটি আশা করে তা নির্দিষ্ট: এনক্রিপশনের জন্য aes-cbc-128, ইন্টিগ্রিটি ও PRF দুটির জন্যই sha1-96, Diffie-Hellman গ্রুপ 2, ফেজ 1-এর জন্য 36,600 সেকেন্ড এবং ফেজ 2-এর জন্য 10,800 সেকেন্ড। ASA নীতিকে ঠিক এই সেটটিই দিতে হবে। ASA-তে দ্বিতীয় প্রস্তাব ক্ষতি করে না, যদি মিলে যাওয়াটিও তালিকায় থাকে।
IKEv2 দুই পক্ষকে বেশি জায়গা দেয়, তবে নিয়মগুলোর আকৃতি একই থাকে: PFS চালু করুন, টানেল যে DH গ্রুপ সমর্থন করে তা বাছুন, আর প্রস্তাবের তালিকা এত ছোট রাখুন যাতে অমিল স্পষ্ট হয়। Cloud VPN-এ ASA পিয়ার মানে স্ট্যাটিক রাউটিংও, তাই সুরক্ষিত প্রিফিক্সগুলো BGP-এর হাতে ছেড়ে না দিয়ে পরিকল্পনা করে তালিকাভুক্ত করতে হবে।
অন্য ভেন্ডরের টেমপ্লেট থেকে কপি করা লাইফটাইম এখানে চেনা ভুল মোড়। Google এই মানগুলো প্রয়োজনীয় পিয়ার সেটিংস হিসেবে প্রকাশ করে, তাই সেগুলোই দিন; ছোট মান ASA যা চায় তার পর্যন্ত ওপরে নেগোশিয়েট হয় না।
মুছুন, আবার তৈরি করুন, পুরোনো অবস্থা পরিষ্কার করুন
গেটওয়ে নয়, টানেলটিই মুছুন, আর Cloud VPN প্রতিস্থাপনটিকে যে নাম দেয় তা টুকে রাখুন, কারণ নাম বরাদ্দ হয়, পুনর্ব্যবহার হয় না। রেকর্ড করা মান আর একই পিয়ার ঠিকানা দিয়ে এটি আবার তৈরি করুন, তারপর মিলে যাওয়া প্রস্তাবটি ASA নীতির তালিকায় যোগ করুন।
ASA পরিবর্তনের পরে এবং ফলাফল পড়ার আগে সিকিউরিটি অ্যাসোসিয়েশনগুলো পরিষ্কার করুন। বর্তমান SA শেষ না হওয়া পর্যন্ত ASA একটি পুরোনো নীতি দিতে থাকতে পারে, তাই সঠিক কনফিগারেশন পুরোনো লাইফটাইমের পুরো সময়টুকু ভাঙা দেখায় আর পর্যবেক্ষক মনে করেন পুনর্নির্মাণ ব্যর্থ হয়েছে, যদিও তা শুরুই হয়নি:
clear crypto ikev2 sa
clear crypto ipsec saফেজ 2-এর দিকে তাকানোর আগে নিশ্চিত করুন ফেজ 1 উঠেছে। ফেজ 1 নিচে থাকা অবস্থায় প্রস্তাব বা প্রি-শেয়ার্ড কী ভুল, এবং সিলেক্টরের কাজ তা বদলাবে না।
সিলেক্টর আয়নার মতো মেলে, তারপর কাউন্টারই সিদ্ধান্ত দেয়
ফেজ 2 কেবল তখনই কাজ করে যখন দুই প্রান্ত সুরক্ষিত ঠিকানাগুলো নিয়ে একমত, আর সেই সম্মতি ভাগাভাগি নয়, আয়নার মতো। Google-এর লোকাল সিলেক্টরকে ASA যে সিলেক্টরকে রিমোট বলে তার সঙ্গে মিলতে হবে, আর Google-এর রিমোট সিলেক্টরকে ASA যা লোকাল বলে তার সঙ্গে মিলতে হবে। এক দিকে 0.0.0.0/0 আর অন্য দিকে একটিমাত্র সাবনেট থাকা টানেল ফেজ 1 পার হয়, তারপর একই মূল ত্রুটি দিয়ে ফেজ 2-এ ব্যর্থ হয়। কোনো পক্ষই অন্য পক্ষের তালিকা বাড়াতে পারে না।
নীতি-ভিত্তিক সিলেক্টরের জন্য প্রতিটি প্রিফিক্স জোড়া তালিকাভুক্ত করুন আর তালিকাটি টিকিটে রাখুন। পরে অন-প্রিমাইসে যোগ করা একটি সাবনেটের দুই প্রান্তেই সম্পাদনা দরকার, কারণ ASA-তে নতুন রুট কোনো সিলেক্টর প্রশস্ত করে না, আর ফল হলো এমন টানেল যা উঠে আছে কিন্তু কেবল প্রথম দিনে থাকা প্রিফিক্সগুলোর জন্যই ট্র্যাফিক পার করে।
একটি হোস্ট-থেকে-হোস্ট প্রবাহ দিয়ে শেষ করুন এবং দুই দিকেই বাইট কাউন্টার পড়ুন। ASA-তে বাড়তে থাকা অথচ Google-এ স্থির থাকা কাউন্টার সাধারণত বোঝায় উত্তরটি অন্য ইন্টারফেস দিয়ে বেরোচ্ছে, বা সিলেক্টর ফেরতের প্রিফিক্স ঢাকছে না। অ্যালগরিদম, লাইফটাইম, সিলেক্টর আর নতুন টানেলের নাম লিখে রাখুন, কারণ পরের প্রস্তাব পরিবর্তনে এই পুনর্নির্মাণই আবার হবে আর ওই মানগুলো তা ছোট কাজে পরিণত করে।