ما هو تسريب IPv6 ولماذا يحدث؟
تسريب IPv6 يحدث حين ينقل نفق VPN حركة IPv4 وحدها، بينما يملك جهازك اتصال IPv6 عاملاً. حينها تخرج الاتصالات إلى المواقع التي تدعم IPv6 مباشرة من شبكتك، بعنوانك الحقيقي. ولا يلاحظ المستخدم شيئاً، لأن المواقع تفتح كالمعتاد.
عنوانان لكل جهاز
كثير من الشبكات اليوم تعطي الجهاز عنوانين معاً. الأول IPv4 بطول 32 بتاً، والثاني IPv6 بطول 128 بتاً كما يحدّد RFC 8200. يسمّى ذلك المكدّس المزدوج (dual stack)، ولكل عائلة جدول توجيه ومسار افتراضي مستقل في نظام التشغيل.
عنوان IPv4 المنزلي في الغالب عنوان خاص خلف ترجمة العناوين، وعند مشغّلي الهاتف كثيراً ما يكون مشتركاً بين مشتركين كثيرين. أما عنوان IPv6 فعام في العادة، ويصل إلى الجهاز نفسه دون ترجمة.
وتغيّر الأجهزة الحديثة الجزء الأخير من عنوان IPv6 دورياً بما يسمّى العناوين المؤقتة. لكن RFC 8981 الذي يعرّفها ينبّه إلى أن بادئة الشبكة تبقى معرّفاً ثابتاً. وهذه البادئة يخصّصها المزوّد لخطك عادةً.
كيف يحصل الجهاز على عنوان IPv6 ومساره
لا يحتاج IPv6 في العادة إلى خادم يوزّع العناوين. يرسل الراوتر رسائل إعلان (Router Advertisement) بصورة دورية، وفيها بادئة الشبكة، فيجري الباقي على الجهاز:
- يأخذ الجهاز البادئة المعلنة ويضيف إليها معرّف الواجهة، فيتكوّن عنوان عام كامل. هذه الآلية التلقائية موصوفة في RFC 4862.
- يجعل الجهاز الراوتر الذي أرسل الإعلان مساراً افتراضياً لحركة IPv6.
- قد يحمل الإعلان أيضاً عناوين خوادم الأسماء، عبر الخيار RDNSS المعرّف في RFC 8106.
تتكرر هذه الإعلانات ما دامت الشبكة قائمة، فتجدّد العنوان والمسار باستمرار. لذلك قد يعود مسار IPv6 العادي بعد تشغيل النفق، حتى لو حذفه برنامج النفق عند البداية.
لماذا تفضّل البرامج IPv6
لا تختار البرامج عائلة العنوان عشوائياً. جدول السياسات الافتراضي في RFC 6724 يقدّم IPv6 على IPv4 حين يتوفر الاثنان للوجهة نفسها.
والمتصفحات وكثير من البرامج تطبّق خوارزمية Happy Eyeballs الموصوفة في RFC 8305. ترسل استعلام AAAA أولاً ثم A، وتبدأ الاتصال عبر IPv6. ولا تجرّب IPv4 إلا بعد مهلة قصيرة يقترح المعيار أن تكون 250 ms.
هذا التفضيل مفيد في الأحوال العادية، لكنه يعني أن أي ثغرة في تغطية IPv6 ستُستخدم أولاً لا أخيراً.
كيف يحدث التسريب
- يضيف برنامج النفق مساراً لكل عناوين IPv4، مثل 0.0.0.0/0، ولا يضيف شيئاً لـIPv6.
- يبقى مسار IPv6 الافتراضي على حاله، ويشير إلى الراوتر في شبكتك.
- تطلب صفحة من موقع له سجل AAAA، فيختار النظام IPv6 لأنه مقدّم.
- يخرج الاتصال عبر المسار الافتراضي لـIPv6، خارج النفق، بعنوانك الحقيقي.
يتكرر الأمر مع استعلامات الأسماء. إن أعلن الراوتر خادم أسماء بعنوان IPv6، فقد تذهب الاستعلامات إليه خارج النفق، وهذا وجه من وجوه تسريب DNS.
والنتيجة خليط يصعب ملاحظته. بعض المواقع ترى عنوان النفق، وبعضها يرى عنوانك الحقيقي، حسب دعمها لـIPv6.
ما الذي يكشفه العنوان المسرَّب
عنوان IPv6 المسرَّب يكشف ما يكشفه أي عنوان عام: مزوّد الإنترنت، والبلد، وأحياناً المدينة. ويزيد عليه أن بادئته ثابتة لخطك في الغالب، فتربط زياراتك بعضها ببعض عبر الأيام.
ويستطيع موقع واحد أن يرى العنوانين معاً. يكفي أن تحمّل الصفحة ملفاً من اسم له سجل A فقط، وآخر من اسم له سجل AAAA فقط، ثم تقارن العنوانين اللذين وصلا. فيظهر أن الزائر نفسه يملك عنوان نفق وعنواناً منزلياً.
إعداد النفق ونتيجته
| إعداد النفق | الشبكة المحلية | النتيجة |
|---|---|---|
| IPv4 فقط | لا تدعم IPv6 | لا تسريب، فالجهاز لا يملك مساراً عبر IPv6 |
| IPv4 فقط | تدعم IPv6 | تسريب إلى كل موقع يدعم IPv6 |
| IPv4 في النفق، وIPv6 يُوجَّه إليه ثم يُسقط | أي شبكة | لا تسريب، وتعود البرامج إلى IPv4 بعد فشل المحاولة |
| العائلتان داخل النفق | أي شبكة | لا تسريب، وترى المواقع عنوان IPv6 الخاص بالنفق |
كيف تفحص اتصالك
صِل النفق، ثم اسأل خدمة تعيد عنوانك عبر كل عائلة على حدة. في PowerShell على ويندوز اكتب curl.exe بدل curl:
curl -4 https://api64.ipify.org
curl -6 https://api64.ipify.org
- الأمر الأول يجب أن يطبع عنوان النفق.
- الثاني يجب أن يفشل، أو أن يطبع عنوان IPv6 تابعاً لمشغّل النفق.
- إن طبع الثاني عنواناً يبدأ ببادئة مزوّدك، فحركة IPv6 تتسرّب.
وفي لينكس يعرض الأمر ip -6 route show default مسار IPv6 الافتراضي. إن أشار إلى بطاقة الشبكة العادية والنفق قائم، ولم يكن للنفق مسار أخص منه، فهذا هو مصدر التسريب.
كيف تمنع التسريب
- انقل IPv6 إلى النفق. في WireGuard اكتب العائلتين في السطر AllowedIPs = 0.0.0.0/0, ::/0. وإن لم يكن لدى الخادم IPv6 أسقط هذه الحزم، فلا تخرج إلى الإنترنت من شبكتك مكشوفة. شرح البروتوكول في ما هو WireGuard.
- أو عطّل IPv6 على الجهاز. في ويندوز ألغِ تحديد Internet Protocol Version 6 (TCP/IPv6) في خصائص بطاقة الشبكة. وفي لينكس يعطّله الأمر sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 حتى إعادة التشغيل.
- اجعل قاطع الاتصال يشمل العائلتين. قواعد جدار ناري لـIPv4 وحده تترك IPv6 مفتوحاً. التفاصيل في قاطع الاتصال.
- إن كان النفق على الراوتر، فراقب إعلاناته. إن ظل الراوتر يعلن بادئة IPv6 من خط المزوّد لأجهزة البيت، خرجت حركتها عبر IPv6 مباشرة دون أن تمر بالنفق. عطّل IPv6 على جهة الشبكة المحلية، أو أدخله في النفق.
- افحص على كل شبكة تستخدمها. قد لا تدعم شبكة البيت IPv6 بينما تدعمه بيانات الهاتف أو شبكة العمل، فالنتيجة تتغيّر بتغيّر الشبكة.
IPv6 في syriaproxy
شبكتنا تعمل بـIPv4 فقط، وIPv6 ممنوع داخل النفق. لذلك ترى المواقع عنواناً سورياً من نوع IPv4 في تطبيقاتنا وفي WireGuard. خطوات إعداد الملف على آيفون وماك والراوتر في إعداد WireGuard.
أسئلة شائعة
هل أعطّل IPv6 نهائياً؟
ليس ضرورياً. يكفي أن يحمله النفق أو يمنعه ما دام قائماً. تعطيله على الجهاز حل مقبول، لكنه قد يعطّل خدمات محلية تعتمد عليه، مثل بعض أجهزة الشبكة المنزلية.
هل يتأثر البروكسي بتسريب IPv6؟
البروكسي يخص البرنامج المضبوط فيه. حركة هذا البرنامج تذهب إلى البروكسي أياً كانت عائلة عنوان الموقع، والبروكسي هو الذي يتصل. أما البرامج الأخرى فتبقى على اتصالك العادي بالعائلتين.
هل يحدث هذا التسريب على أندرويد؟
أقل من غيره. يمنع أندرويد افتراضياً كل حركة من عائلة عناوين لا يضبط لها تطبيق VPN عنواناً أو مساراً أو خادم أسماء، كما توضح وثائق VpnService.Builder. لكن التطبيق يستطيع السماح بها صراحة، فتمر حينها خارج النفق.
كيف أعرف أن شبكتي تدعم IPv6؟
أطفئ النفق وشغّل أمر الفحص الثاني. إن طبع عنواناً فشبكتك تدعمه. وفي إعدادات أغلب أجهزة الراوتر قسم خاص بـIPv6 يبيّن حالته.
اعرف العنوان الذي تراه المواقع بأداة عنوانك المجانية، والنفق قائم.