GCP HA VPN: BGP সেশন Waiting for peer-এ আটকে থাকে, ঠিকানা জোড়ার অদলবদল
Cloud VPN BGP সেশন Waiting for peer-এ আটকে থাকলে সাধারণত টানেল ও পিয়ার ঠিকানা অদলবদল হয়ে যায়। কিছু পুনর্নির্মাণ করার আগে জোড়াটি যাচাই করুন।
Cloud VPN টানেলে যে BGP সেশন কখনো Established-এ পৌঁছায় না, সেটি সাধারণত রাউটিং সমস্যা নয়। এটি তারের সংযোগের সমস্যা: দুটি ঠিকানা পরস্পরকে মিলতে হয়, সেগুলো উল্টো ক্রমে দেওয়া হয়েছে, অথবা প্রথম টানেলের জোড়া দ্বিতীয়টিতে পুনরায় ব্যবহার করা হয়েছে। টানেল নিজে পুরোপুরি সুস্থ থাকতে পারে, অথচ সেশনটি Waiting for peer-এ বসে থাকে, কারণ IPsec ও BGP একই দুটি প্রান্তের মধ্যে আলাদা আলোচনা। কিছু পুনর্নির্মাণের আগে ঠিক করুন এ দুটির মধ্যে কোনটি ভাঙা।
একটি প্রশ্নই বেশিরভাগ ক্ষেত্রের মীমাংসা করে: পিয়ার ডিভাইসটি কি Cloud Router-এর ঠিকানা আদৌ দেখে?
টানেলের অবস্থা ও সেশনের অবস্থা আলাদা যাচাই
প্রথমে IKE ও ESP। টানেল প্রতিষ্ঠিত না হলে ভেতরের কিছুই গুরুত্বপূর্ণ নয়, আর BGP ঠিকানার আলোচনা অকাল। টানেলের স্ট্যাটাস ও বিস্তারিত স্ট্যাটাস পড়ুন, তারপর সেই একই টানেলের জন্য রাউটারের BGP পিয়ার স্ট্যাটাস পড়ুন।
টানেল চালু অথচ তার BGP পিয়ার বন্ধ, এটি ত্রুটি সেশনে সীমিত করে: পিয়ার ঠিকানা, ASN, বা ভেতরের ঠিকানায় আসা TCP 179। টানেল চালু, সেশন চালু, এবং VPC-তে এখনো কোনো রুট নেই এটি তৃতীয় ঘটনা। ঠিকানা বদলালে সেখানে কাজ হবে না, কারণ সেশন ইতিমধ্যেই কাজ করছে এবং প্রিফিক্সটি কেবল ঘোষণা করা হচ্ছে না বা পছন্দ করা হচ্ছে না। এই তিনটি ঘটনা আলাদা রাখাই কাজের বড় অংশ।
প্রতিটি টানেলের নিজস্ব /30 দরকার, দুই প্রান্তই পূরণ করে
প্রতিটি HA VPN টানেল 169.254.0.0/16 থেকে একটি link-local /30 পায়, একটি ঠিকানা Cloud Router ইন্টারফেসে আর অন্যটি আপনার পিয়ারে। পিয়ার ফিল্ডে অবশ্যই দূরের প্রান্ত থাকবে, কখনো রাউটারের নিজের ঠিকানা নয়।
দুটি টানেল মানে Cloud Router-এ দুটি ইন্টারফেস, প্রতিটি আলাদা /30 সহ। টানেল 0-এর জোড়া টানেল 1-এ পুনরায় ব্যবহার করা সেই ভুল, যা সারসংক্ষেপ টেবিলে গোছানো দেখায় আর OPEN প্যাকেটে মারা যায়।
| Tunnel | Router interface | Peer address | What a swap produces |
|---|---|---|---|
| tunnel 0 | 169.254.1.1/30 | 169.254.1.2 | OPEN sent to itself or to nothing; session waits |
| tunnel 1 | 169.254.1.5/30 | 169.254.1.6 | same failure on the second session |
| both | one pair reused | one address reused | one session up, the other never leaves waiting |
জোড়াটি কনসোল সারসংক্ষেপ থেকে নয়, রাউটার রিসোর্স থেকে পড়ুন। সারসংক্ষেপ পিয়ার ঠিকানাটি এমন কলামে দেখায় যা ভুল পড়া সহজ, আর ইন্টারফেসের ipRange এবং পিয়ারের peerIpAddress অবশ্যই একই /30-এর বিপরীত প্রান্ত বর্ণনা করবে।
অদলবদল সাধারণত পুনর্নির্মাণের সময় ঘটে
টানেল পুনর্নির্মাণের সময়ই জোড়াগুলো আড়াআড়ি হয়। পুরোনো টানেলের পিয়ার ঠিকানা নতুন টানেলের ইন্টারফেস ফিল্ডে কপি হয়, অথবা নতুন সেশন আগের সেশনের পিয়ারের দিকে ঘুরিয়ে দেওয়া হয়। দুই ক্ষেত্রেই Cloud Router OPEN প্যাকেট পাঠায় এমন ঠিকানায় যা এখন সে নিজেই, বা এমন ঠিকানায় যার পেছনে কোনো টানেল নেই।
কনসোল খোলার আগে জোড়াগুলো লিখে রাখুন: টানেলের নাম, ইন্টারফেস, রাউটার ঠিকানা, পিয়ার ঠিকানা, পিয়ার ASN। তারপর দুটি টানেল একবারেই তৈরি করুন, যাতে দ্বিতীয়টি প্রথমটির অবশিষ্টাংশ দিয়ে পূরণ না হয়।
সেশন অপেক্ষা করার আরও তিনটি কারণ
প্রথমটি পিয়ার ASN: প্রতিটি পক্ষকে অন্যপক্ষের ASN দিয়ে কনফিগার করতে হয়, আর অমিল পিয়ার পর্যন্ত পৌঁছায় কিন্তু কখনো প্রতিষ্ঠিত হয় না। দ্বিতীয়টি পিয়ারের নিজের ফায়ারওয়াল, যা টানেল ইন্টারফেসে TCP 179 অনুমোদন করতে হবে; IKE বা ESP নিয়ম এটি কভার করে না। তৃতীয়টি এমন পিয়ার যা তার প্রতিবেশী হিসেবে কনফিগার করা ঠিকানার চেয়ে ভিন্ন উৎস ঠিকানা থেকে উত্তর দেয়।
পিয়ারের নিজের লগই নির্ণায়ক। যদি তার BGP সারসংক্ষেপে ওই ঠিকানার কোনো প্রতিবেশী না থাকে, প্যাকেট আসছে না এবং জোড়া বা পথ ভুল। প্রতিবেশী যদি Active বা Connect-এ থাকে, প্যাকেট আসছে কিন্তু সেশনের প্যারামিটার মিলছে না।
প্যাকেট যেভাবে যায় সেই ক্রমে যাচাই করুন
বাইরের দিকে কাজ করুন: টানেল স্ট্যাটাস, তারপর রাউটারের BGP পিয়ার স্ট্যাটাস, তারপর পিয়ারের BGP সারসংক্ষেপ, তারপর রুটগুলো। প্রথম দুটি সুস্থ হলে Cloud VPN দিক সম্পাদনা বন্ধ করে পিয়ার ডিভাইসে কাজ করুন। রাউটার যদি পিয়ারকে বন্ধ বলে আর আপনার ডিভাইসে কোনো প্রতিবেশী না থাকে, তবে জোড়া ভুল অথবা BGP পোর্ট ফিল্টার করা হয়েছে। পিয়ারের টানেল ইন্টারফেসে প্যাকেট ক্যাপচার এক নজরে এটি মীমাংসা করে, কারণ OPEN প্যাকেট হয় সেখানে আসে, নয় কখনো আসে না।
gcloud compute routers get-status ROUTER --region=REGION পিয়ার অবস্থাটি যে ঠিকানা ব্যবহার করছে তার পাশে দেখায়, আর সেটিই আপনার তুলনা করার জোড়া।
সেশন প্রতিষ্ঠিত হলে নিশ্চিত করুন যে শেখা প্রিফিক্সটি VPC রুট টেবিলে দেখা যাচ্ছে এবং দুই পাশে একটি করে হোস্ট উত্তর দিচ্ছে। তারপর চূড়ান্ত জোড়াগুলো টানেলের নামের পাশে লিখে রাখুন, যাতে পরের পুনর্নির্মাণ কনসোল সারসংক্ষেপ নয়, একটি যাচাই করা টেবিল থেকে শুরু হয়।