استكشاف أخطاء الشبكة على AWS
استكشاف أخطاء الشبكة على AWS
تكلّف إخفاقات الاتصال في بيئات الإنتاج أموالاً حقيقية. المهندس في شركة تقنية من الدرجة الأولى لا يبدأ بتعديل قواعد مجموعات الأمان عشوائياً — بل يجمع الأدلة بمنهجية، ويستخدم أدوات التشخيص المتخصصة التي تقدمها AWS، ويصيغ فرضية قبل لمس أي مورد. هذا الدرس يعلّمك تلك المنهجية: VPC Flow Logs للتحليل الجنائي للحركة، وVPC Reachability Analyzer لتحليل المسار على مستوى التكوين المنطقي، والنموذج الذهني لفئات إخفاقات الاتصال الخمس الشائعة في AWS.
هرم التشخيص
قبل لمس أي شيء في مستوى التحكم، اجمع البيانات أولاً. تقدم AWS ثلاث طبقات لمراقبة الشبكة:
- Reachability Analyzer — تحليل المسار المنطقي. يخبرك فوراً إذا كان بإمكان الحزمة الوصول إلى وجهتها بالنظر إلى التكوين الحالي، دون إرسال حركة حقيقية.
- VPC Flow Logs — أدلة مستوى البيانات الفعلي. تلتقط البيانات الوصفية لكل تدفق مقبول أو مرفوض عبر واجهة شبكية (ENI) أو شبكة فرعية أو VPC بأكمله.
- CloudWatch Metrics / Network Monitor — إشارات صحة مجمّعة (الحزم المُسقطة، زمن الاستجابة، معدلات الأخطاء).
هذه الأدوات مكملة لبعضها لا بدائل. يخبرك Reachability Analyzer لماذا لا تصل الحركة إلى الهدف بتحليل نموذج التكوين لديك. تخبرك Flow Logs بما اجتازته الحركة فعلياً (أو ما أُسقط منها) على الشبكة. استخدم Analyzer أولاً للتحقق المنطقي السريع؛ وادرس Flow Logs لتأكيد السلوك الواقعي أو للتحقيق في مشاكل متقطعة.
VPC Reachability Analyzer
يُجري Reachability Analyzer اجتياز رمزي حتمياً لرسم بيانات تكوين شبكة AWS لديك. يُنمذج كل مكون VPC — مجموعات الأمان، وقوائم التحكم بالوصول الشبكي (NACLs)، وجداول التوجيه، وبوابات NAT، ومرفقات VPN/TGW، والتناظر (Peering) — ويُعيد إما مسار توجيه مفصلاً بالكامل مع كل نقطة ملابسة، أو شرحاً دقيقاً للمكون الحاجب. لا يضخ حزم اختبارية؛ بل يقرأ حالة مستوى التحكم لديك.
إنشاء مسار باستخدام واجهة سطر الأوامر:
عندما تكون NetworkPathFound بقيمة false، يحتوي مصفوفة Explanations على كائن أو أكثر بقيم ExplanationCode مثل SECURITY_GROUP_RULE_BLOCKED أو ROUTE_TABLE_MISSING_ROUTE أو ACL_RULE_BLOCKED. كل كائن يُعرّف ARN المورد المحدد — قاعدة مجموعة الأمان أو NACL بالضبط، أو جدول التوجيه، أو الشبكة الفرعية. هذا وحده يلغي 80% من التخمينات أثناء الحوادث الحية.
VPC Flow Logs
تلتقط Flow Logs سجل بيانات وصفية لكل تدفق شبكي: عنوان IP المصدر/الوجهة والمنفذ، البروتوكول، البايتات، الحزم، وبشكل حاسم — الحقل action: إما ACCEPT أو REJECT. يمكن تحديد نطاقها لواجهة شبكية، أو شبكة فرعية، أو VPC بأكمله. تُسلَّم السجلات إلى CloudWatch Logs أو S3 أو Kinesis Data Firehose.
تفعيل Flow Logs على مستوى VPC مع حقول مخصصة لتحليل جنائي أغنى:
الحقول الأساسية لتضمينها دائماً: ${tcp-flags} (يميّز رفض SYN-فقط عن RST — مفيد لتشخيص التوجيه غير المتماثل)، ${traffic-path} (يُخبرك إذا دخلت الحزمة عبر NAT Gateway أو IGW أو VPN)، و${pkt-srcaddr} / ${pkt-dstaddr} (العناوين الأصلية قبل NAT، على عكس srcaddr/dstaddr التي تعكس القيم بعد NAT). هذه الفروق مهمة جداً في هياكل متعددة المناطق وTransit Gateway.
تشريح فئات الإخفاق الشبكي الخمس الشائعة
معظم حوادث الاتصال في AWS تقع ضمن إحدى خمس فئات. معرفتها يجعل استكشاف الأخطاء عملية محددة لا استكشافية:
- قاعدة مفقودة في مجموعة الأمان — الأكثر شيوعاً. لم تُضَف خدمة مصغرة جديدة أو منفذ جديد إلى مجموعة الأمان المعنية. يُعيد Reachability Analyzer
SECURITY_GROUP_RULE_BLOCKEDفوراً. الحل: أضف قاعدة واردة تستند إلى معرّف SG المصدر (وليس CIDR حيثما أمكن). - عدم تناسق NACL — NACLs عديمة الحالة (stateless)، لذا يجب وجود قاعدة واردة وقاعدة صادرة مطابقة للمنافذ الوقتية (1024–65535 لحركة الإرجاع). تبدو NACL التي تحجب الاستجابات الصادرة الوقتية تماماً كاتصال أحادي الاتجاه من جانب العميل. ستُظهر Flow Logs
REJECTفي الاتجاه الصادر. - مسار مفقود أو ميت — جدول التوجيه يفتقر إلى مسار للـ CIDR المستهدف، أو يشير مسار إلى مورد محذوف أو متوقف (مثل NAT instance متوقف). يُعيد Reachability Analyzer
ROUTE_TABLE_MISSING_ROUTEأوROUTE_TABLE_BLACKHOLE_ROUTE. - مشاكل MTU / التجزئة — شائعة في المسارات عبر مرفقات VPN أو Transit Gateway. للمسار MTU أصغر (غالباً 1500 → 8500 لـ TGW peering بين المناطق، أو 1500 → 1436 لـ VPN). التطبيقات التي تستخدم أحجام نوافذ TCP كبيرة تعاني من تعليق أو انتهاء مهلة. العَرَض: الاتصال يُنشأ لكن نقل البيانات يتعطل. الحل: ضبط MSS clamping على VPN/TGW أو تعيين
net.ipv4.tcp_mtu_probing=1على الـ instances. Flow Logs وحدها لن تكشف ذلك — تحتاج إلى استكشاف مسار MTU نشط. - إخفاقات تحليل DNS — تقنياً ليست على مستوى الشبكة لكنها تشكّل نسبة كبيرة من تذاكر "الخدمة غير قابلة للوصول". المناطق المستضافة الخاصة غير مرتبطة بـ VPC الصحيح، أو Route 53 Resolver لا يُحيل إلى DNS المحلي، أو
enableDnsSupport/enableDnsHostnamesمعطّلان على الـ VPC. تحقق دائماً بـdigأوnslookupمن داخل VPC قبل افتراض مشكلة توجيه أو جدار حماية.
مخطط سير عمل استكشاف الأخطاء
دليل عملي: "Instance لا تستطيع الوصول إلى RDS"
هذا هو التسلسل الدقيق الذي يتبعه مهندس SRE أول عندما يُبلّغ تطبيق ما بعدم قدرته على الاتصال بقاعدة بياناته:
اعتبارات التكلفة والتشغيل
تُولّد Flow Logs عند حجم حركة مرتفع تكاليف ضخمة لاستيعاب CloudWatch Logs. أفضل الممارسات الإنتاجية: أرسل Flow Logs إلى S3 لكفاءة التكلفة (تكاليف تسليم السجلات ~0.50 دولار/GB مقارنة بـ 0.50 دولار/GB للاستيعاب في CWL بالإضافة إلى 0.03 دولار/GB تخزيناً)، وفعّل صيغة Parquet لتسليم S3 لتمكين استعلامات Athena دون تحويل، واحدد النطاق لحركة REJECT فقط ما لم تكن بحاجة إلى تغطية جنائية كاملة. يُفرض على Reachability Analyzer رسوم لكل تحليل (0.10 دولار للتحليل)، وهو مبلغ زهيد مقارنة بوقت الهندسة الذي يوفره — استخدمه بحرية.