AWS Site-to-Site VPN: باہر، اندر اور LAN سابقہ
ایک AWS VPN پر تین پتہ کردار الجھ جاتے ہیں: بیرونی ساتھی، اندرونی /30 کڑی اور محفوظ LAN سابقے۔ اِنہیں ڈاؤن لوڈ شدہ ترتیب میں پڑھیں۔
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 کلید کو اُس چیز کے مطابق رکھیں جو IKE ڈیمن چائلڈ SA کو انٹرفیس سے باندھنے کے لیے استعمال کرتا ہے، ورنہ ٹریفک ٹنل پر آتی ہے مگر اُترنے کے لیے انٹرفیس نہیں ہوتا۔ کسی دوسری سائٹ سے عدد نقل کرنے کے بجائے MTU کو راستے اور IKE ڈیمن کی اپنی ترتیبات کے سامنے جانچیں۔
راستے جانچنے سے پہلے 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 اور اعلان شدہ سابقے ایک ہی جدول میں درج کریں۔ وہی جدول اگلی تبدیلی کو قابلِ جائزہ بناتا ہے۔