AWS Site-to-Site VPN-এর বেশিরভাগ ভুল ঠিকানার ভুল, আর সেগুলো কোনো প্যাকেট নড়ার আগেই তৈরি হয়। টানেলের বাইরের ঠিকানাগুলো IPsec পিয়ার পর্যন্ত পৌঁছায়, ভেতরের ঠিকানাগুলো তাদের মধ্যে রাউটিং লিংক গঠন করে, আর সুরক্ষিত প্রিফিক্সগুলো হলো সেই লিংক যার জন্য। এক ভূমিকা অন্য ভূমিকায় কপি করুন, টানেল উঠে আসবে অথচ কিছুই রাউট হবে না। BGP কাস্টমার গেটওয়েতে আমি যে পড়া-যাচাই-কনফিগার ক্রম ব্যবহার করি সেটি এই, আর মানগুলো মুখস্থ নয়, ডাউনলোড করা ডিভাইস কনফিগারেশন থেকেই নেওয়া।

তিনটি ঠিকানার ভূমিকা, একটি টানেল

বাইরের ঠিকানাগুলো পাবলিক এবং IPsec পিয়ারদের অন্তর্গত: AWS পাশে প্রতি টানেলে একটি, আর আপনার পাশে কাস্টমার গেটওয়ের পৌঁছানোযোগ্য পরিচয়, আপনার যে NAT ব্যবস্থা আছে তার সঙ্গে মিলিয়ে নেওয়া। ভেতরের ঠিকানাগুলো প্রাইভেট এবং লজিক্যাল লিংকের অন্তর্গত, যা AWS 169.254.0.0/16 থেকে নেওয়া /30 হিসেবে নথিভুক্ত করে। সুরক্ষিত প্রিফিক্সগুলো হলো VPC, অন-প্রিমাইসেস বা ট্রানজিট নেটওয়ার্ক, যেগুলো আপনি সেই লিংকের ওপর রাউট ও ঘোষণা করেন।

টানেল ইন্টারফেসের ঠিকানা হিসেবে একটি LAN প্রিফিক্স বসানো এই ভুলের ক্লাসিক রূপ। ইন্টারফেসটি কনফিগার করা দেখায়, LAN ঘোষিত হয় না, আর ওপাশে তার কোনো রুট থাকে না। টানেল নিজের ভেতরের ping পর্যন্ত পার করতে পারে, অথচ প্রতিটি অ্যাপ্লিকেশন নাম টাইমআউট হয়। টানেল অপশন রেফারেন্স-এ ভেতরের CIDR-এর সীমাবদ্ধতা, কোন ঠিকানা পরিসর থেকে আসতে হবে সেটিসহ, তালিকাভুক্ত আছে।

মানগুলো ডাউনলোড করা কনফিগারেশন থেকে পড়ুন

সংযোগ থেকে আপনার নির্দিষ্ট ডিভাইস মডেলের কনফিগারেশন ডাউনলোড করুন, তারপর তার ঠিকানা টেবিলকে সত্যের উৎস ধরুন। কনসোল প্রতি টানেলে একই মান দেখায়: বাইরের IP, ভেতরের CIDR, আর AWS পাশে BGP পিয়ার ঠিকানা। দুটি টানেল আলাদা অবজেক্ট, আলাদা বাইরের এন্ডপয়েন্ট আর আলাদা ভেতরের /30 নিয়ে, যদিও দুটোই একই সুরক্ষিত নেটওয়ার্ক বহন করে।

aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
  --query 'VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,TunnelInsideCidr]'
aws ec2 describe-customer-gateways --customer-gateway-ids cgw-0123456789abcdef0 \
  --query 'CustomerGateways[0].[IpAddress,BgpAsn]'

ডাউনলোড করা ফাইল আর লাইভ কনসোলের অমিল হলে ফাইলটি পুরোনো। হাতে ঠিকানা সম্পাদনার বদলে আবার ডাউনলোড করুন, কারণ ভেতরের জোড়া আর পিয়ারের কনফিগার করা নেইবারের মধ্যে অমিল মানে নীরব BGP ব্যর্থতা।

সঠিক ঠিকানা বসিয়ে লিংক তৈরি করুন

Linux গেটওয়েতে টানেল হলো VTI বা XFRM ইন্টারফেস, আর ভেতরের /30 সেই ইন্টারফেসে যায়। দুটি টানেল মানে দুটি ইন্টারফেস আর দুটি BGP নেইবার, প্রতি AWS এন্ডপয়েন্টে একটি। AWS ডাউনলোড করা ডিভাইস কনফিগারেশনে যে রীতি ছাপে তা ভার্চুয়াল প্রাইভেট গেটওয়েকে প্রতিটি ভেতরের /30-এর প্রথম ঠিকানায় আর আপনার কাস্টমার গেটওয়েকে দ্বিতীয়টিতে রাখে, তাই আপনি উঁচু ঠিকানাটি নেন এবং নিচু ঠিকানার সঙ্গে পিয়ার করেন। এখানে কোনো কিছুতে LAN ঠিকানা লাগে না।

ip tunnel add tun0 mode vti local 203.0.113.10 remote 18.230.1.1 key 42
ip addr add 169.254.10.2/30 dev tun0
ip link set tun0 up mtu 1400
ip tunnel add tun1 mode vti local 203.0.113.10 remote 18.230.2.1 key 43
ip addr add 169.254.10.6/30 dev tun1
ip link set tun1 up mtu 1400

আপনার ডিভাইস মডেলের ফাইল উল্টো জোড়া ছাপলে তার সংখ্যাগুলো ব্যবহার করুন আর নিয়ম ধরে রাখুন: ইন্টারফেসের ঠিকানা আপনার, পিয়ার ঠিকানা AWS-এর। এটা উল্টো করলে এমন টানেল হয় যা কখনো Established-এ পৌঁছায় না, কারণ আপনি যে নেইবার কনফিগার করেছেন সেটিই আপনার নিজের ইন্টারফেস ইতিমধ্যে ধরে আছে।

mark আর VTI key যেভাবে IKE ডেমন চাইল্ড SA ইন্টারফেসে বাঁধতে ব্যবহার করে তার সঙ্গে মিলিয়ে রাখুন, নইলে ট্রাফিক টানেলে পৌঁছায় কিন্তু নামার ইন্টারফেস থাকে না। অন্য সাইট থেকে সংখ্যা কপি না করে পথ আর IKE ডেমনোর নিজের সেটিংসের বিপরীতে MTU যাচাই করুন।

রুট যাচাই করার আগে BGP যাচাই করুন

IPsec উঠে আসা প্রমাণ করে পিয়াররা একটি সিকিউরিটি অ্যাসোসিয়েশনে একমত, আর কিছুই না। BGP সেশন ভেতরের লিংকের ওপর আলাদা দরকষাকষি, তাই নেইবার স্টেট আর প্রিফিক্স কাউন্টার পড়ুন, তারপর আপনি কী ঘোষণা করতে চেয়েছিলেন তার সঙ্গে তুলনা করুন।

ip -s addr show dev tun0
vtysh -c 'show bgp summary'
vtysh -c 'show bgp neighbors 169.254.10.1'
vtysh -c 'show ip bgp neighbors 169.254.10.1 advertised-routes'

Established স্টেট আর শূন্য প্রিফিক্স পাওয়া মানে পলিসি বা ঘোষণার সমস্যা, টানেলের সমস্যা নয়। দ্বিতীয় টানেলে পুরো যাচাই আবার করুন; একটি কাজ করা টানেল বলে ঠিকানাগুলো বিশ্বাসযোগ্য, দ্বিতীয় টানেলটি আদৌ কনফিগার হয়েছে তা নয়।

রাউট হওয়া প্যাকেট অনুসরণ করুন, তারপর থামুন

সেশন যখন প্রিফিক্স বহন করে, তখন গেটওয়ে থেকে দুই দিকেই রুট পরীক্ষা করুন: সোর্স ঠিকানা, পরবর্তী হপ, আর ট্রাফিকের অনুমতি দেওয়া সিকিউরিটি পলিসি। BGP সেশন আপ থাকতে পারে অথচ আপনার অ্যাপ্লিকেশনের দরকারি নির্দিষ্ট প্রিফিক্স ফিল্টার হয়েছে, সারসংক্ষেপে হারিয়েছে বা ভুল ইন্টারফেসে নির্দেশিত হয়েছে।

Reachability Analyzer হলো AWS পাশের টুল, যা একটি সোর্স, একটি গন্তব্য আর একটি পথ নেয় এবং সমর্থিত কনফিগারেশনে কোন উপাদান তা আটকেছে তা জানায়। এটি VPC থেকে আপনার কাস্টমার গেটওয়ে ঠিকানা পর্যন্ত পথ পরীক্ষা করতে ব্যবহার করুন, অ্যাপ্লিকেশন হোস্ট থেকে নয়। এটি কনফিগারেশন বিশ্লেষণ করে আর অন-প্রিমাইসেস ফায়ারওয়াল দিয়ে প্যাকেট পাঠায় না, তাই এর রায় আপনার নিজের ইন্টারফেস কাউন্টার ও প্যাকেট ক্যাপচার থেকে আলাদা রাখুন।

প্রতিটি টানেলের বাইরের জোড়া, ভেতরের /30 আর ঘোষিত প্রিফিক্স একটি টেবিলে লিখুন। এই টেবিলই পরের পরিবর্তনকে পর্যালোচনাযোগ্য করে।

সম্পর্কিত নিবন্ধ