كم عدد مجاميع التحقق في حزمة VPN؟ الأمر يعتمد على ذلك
يعتمد العدد على إصدارات IP والبروتوكول المحمول وصيغة الحماية. تختلف مجاميع تحقق الترويسة ومجاميع تحقق الطبقة العليا ووسوم السلامة.
الادعاء بأن حزمة VPN تحمل مجموعَي تحقق بالضبط يبدو مرتباً، وهو خطأ في كثير من الأحيان بما يستحق التفكيك. يعتمد العدد على إصدارات IP التي تظهر، والبروتوكول الناقل المحمول، وصيغة الحماية التي يستخدمها النفق. مجموع تحقق الترويسة ومجموع تحقق الطبقة العليا ووسم سلامة تشفيري هي ثلاث آليات بثلاثة نطاقات. ويبدأ عدّها بتحديد ما يغطيه كل واحد منها.
تحقّق من إصدارات IP الموجودة فعلاً على السلك
تحمل ترويسات IPv4 مجموع تحقق للترويسة بطول 16 بت، ولا تحمل ترويسات IPv6 شيئاً من هذا القبيل. هذه الحقيقة الواحدة تغيّر العدد لكل نفق، لأن تغليف IPv4 داخل IPv6 وتغليف IPv6 داخل IPv4 ينتجان مستندين مختلفين. ويمكن للنفق أن يحمل العائلتين معاً، وفي هذه الحالة قد يحتوي أحد الاتجاهين على حقل يفتقده الآخر. أثبت الإصدارات قبل عدّ أي شيء على الإطلاق.
اكتب التخطيط كقائمة ترويسات بدلاً من صورة. الترتيب مهم عند قراءة التقاط، ووجود حقل مجموع التحقق أو غيابه هو أول ما يجب تعليمه.
outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data
السطر الأول لا يحمل أي مجموع تحقق لترويسة IP في أي من ترويساته، بينما يحمل الثاني اثنين عندما تكون الترويستان من IPv4. التقنية نفسها للنفق، وعدد مختلف، ولا يمثل أي من السطرين صيغة سلك كاملة.
تحقّق مما يغطيه كل مجموع تحقق
التغطية هي الجزء الذي يتخطاه الناس، وهي ما يجعل العدد ذا معنى. مجموع تحقق ترويسة IPv4 يحمي الترويسة ولا شيء غيرها، لذا لا يقول شيئاً عن الحمولة خلفها. مجموع تحقق UDP فوق IPv6 يغطي ترويسة زائفة إضافة إلى ترويسة UDP وحمولتها، أي أنه يمتد إلى الحزمة المحمولة عندما يكون مخطط البيانات منفقاً. ولـ TCP مجموع تحقق خاص به يعتمد اعتماداً مشابهاً على الترويسة الزائفة. هذه ثلاثة نطاقات مختلفة وإن كانت الثلاثة تسمى مجاميع تحقق.
يحدد RFC 791 فحص ترويسة IPv4 وإعادة حسابه عند كل قفزة، ويحدد RFC 8200 معالجة الطبقة العليا فوق IPv6 بما في ذلك الترويسة الزائفة. ولا يقول أي من المستندين إن حزمة VPN تحمل عدداً ثابتاً من مجاميع التحقق، لأن أياً منهما لا يصف نفقاً.
tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum
تحقّق من حماية السلامة بشكل منفصل
سلامة ESP حماية تشفيرية لها تغطيتها الخاصة وتمثيل يعتمد على الخوارزمية. وهي ليست مجموع تحقق IP أو UDP باسم آخر، ويتباين طولها حسب البنية المختارة. وفحص السلامة يغطي جزءاً محدداً من الحزمة، قد يشمل ترويسة ESP وجزءاً من الحمولة حسب الوضع المستخدم. وعدّه حقلاً لمجموع التحقق بعرض معروف هو ما تنهار عنده معظم هذه الشروح.
اقرأ البنية المختارة قبل عدّ البايتات، واصف النتيجة بأنها حماية سلامة لا مجموع تحقق بتسمية مختلفة. وسيسمّي المفكّك الحقل لك إن سألته.
tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"
تحقّق من نقطة المراقبة قبل العدّ
يمكن أن يُظهر الالتقاط على الواجهة الداخلية والالتقاط على السلك طبقات مختلفة تماماً. على الواجهة الداخلية يكون النفق منزوعاً بالفعل، فترى الحزمة المحمولة ولا ترى أياً من الترويسات الخارجية. وعلى السلك ترى الترويسات الخارجية وحمولة مشفرة لا تستطيع قراءتها. لا توجد رؤية خاطئة، وهما ليستا رؤيتين للشيء نفسه. اذكر مكان أخذ الالتقاط قبل نقل أي عدد.
sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5
يُظهر الأمر الأول الحزمة الخارجية مع ذيل السلامة الخاص بها، ويُظهر الثاني الحزمة المحمولة مع مجموع تحقق النقل الخاص بها. وجمع أرقام من كلا الالتقاطين لا يعدّ شيئاً مرتين، لكنه يشرح الحزمة نفسها مرتين.
تحقّق من العدد مقابل التقاط حقيقي
فكّ ترميز حزمة واحدة بالكامل وعلّم كل حقل يسميه المفكّك مجموع تحقق أو قيمة سلامة. ثم قارن كل علامة بالتخطيط الذي كتبته، واحذف أي علامة تنتمي إلى طبقة لا تعدّها فعلاً. والعدد الذي ينجو من ذلك التمرين قابل للدفاع عنه، والعدد المنقول من الذاكرة ليس كذلك.
كرّر ذلك لاتجاه الرد، لأن نفقاً يحمل العائلتين قد يختلف بحسب الاتجاه وبحسب التدفق. ثم اذكر العدد مع نطاقه، مثلاً ثلاثة مجاميع تحقق لهذه الحزمة الداخلية عند نقطة المراقبة هذه، لا كخاصية عامة لحزم VPN.
tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum