ما هو CGNAT؟
ترجمة العناوين على مستوى المشغّل (Carrier-Grade NAT) جهاز لدى مزود الخدمة يجعل مشتركين كثيرين يخرجون إلى الإنترنت بعنوان IPv4 عام واحد. يميّز الجهاز اتصالات كل مشترك بأرقام المنافذ، ويحفظ جدولاً يعيد به كل رد إلى صاحبه. وتعتمد عليه شبكات الجوال خاصةً، لأن عدد أجهزتها يفوق ما تملكه من عناوين.
لماذا ظهر
عنوان IPv4 طوله 32 بت، فلا يتجاوز عدد العناوين نحو 4.3 مليار. نفدت مخزونات السجلات الإقليمية من هذه العناوين، والانتقال إلى IPv6 لم يكتمل بعد، فلا يزال كثير من المواقع والشبكات يعتمد على IPv4.
المشغّل الذي يخدم ملايين الهواتف لا يملك عنواناً عاماً لكل هاتف. الحل العملي أن يعطي كل مشترك عنواناً داخلياً، وأن يترجم اتصالاته عند حافة شبكته إلى عدد محدود من العناوين العامة. أساسيات العناوين العامة والخاصة في مقال ما هو عنوان IP.
وبعض المشغّلين يعطون الهاتف عنوان IPv6 وحده، ويترجمون حركة IPv4 عند حافة الشبكة. في الحالتين يبقى عنوان IPv4 العام الذي تراه المواقع مشتركاً بين كثيرين.
كيف يعمل، خطوة بخطوة
- يحصل هاتفك على عنوان داخلي من المشغّل، كثيراً ما يكون من الكتلة 100.64.0.0/10 أو من كتل RFC 1918 الخاصة.
- يفتح تطبيق على الهاتف اتصالاً بخادم على المنفذ 443، من منفذ مصدر يختاره النظام.
- تمر الحزمة الأولى بجهاز CGNAT، فيختار عنواناً عاماً ومنفذاً خارجياً لم يُستخدما، ويسجّل الربط بين الداخلي والخارجي.
- يستبدل الجهاز عنوان المصدر ومنفذه في الحزمة بالعنوان والمنفذ الخارجيين، ثم يرسلها إلى الإنترنت.
- يرد الخادم إلى العنوان العام والمنفذ الخارجي، فيبحث الجهاز في جدوله ويعيد الحزمة إلى هاتفك.
- إذا بقي الربط خاملاً مدة محددة حذفه الجهاز، وأُعيد المنفذ إلى المخزون.
هكذا قد يبدو جزء من جدول الربط لمشتركين يتصلان بالخادم نفسه في اللحظة نفسها:
inside outside destination
100.71.4.12:51034 203.0.113.7:20112 198.51.100.20:443
100.92.8.40:40211 203.0.113.7:20113 198.51.100.20:443
الخادم يرى عنواناً واحداً، 203.0.113.7، بمنفذين مختلفين. لا يملك أي وسيلة ليعرف من الحزم وحدها أنهما مشتركان مختلفان.
الكتلة 100.64.0.0/10
حجز المعيار RFC 6598 عام 2012 هذه الكتلة باسم «مساحة العناوين المشتركة» لاستخدام مزودي الخدمة. وهي تضم 4,194,304 عناوين، وتُستخدم أساساً لترقيم الوصلات بين أجهزة CGNAT وموجّهات المشتركين.
ينص المعيار على أنها مختلفة عن العناوين الخاصة في RFC 1918. والسبب أن موجّهك المنزلي قد يستخدم 192.168.1.0/24 داخلياً، فلو أعطاه المزود عنواناً من الكتلة نفسها لتعارض المساران. ولا يجوز تمرير حزم هذه الكتلة ولا مساراتها خارج حدود شبكة المزود.
في الشبكات المنزلية التي تعمل خلف CGNAT تحدث الترجمة مرتين: في موجّهك من العنوان الخاص إلى عنوان المزود الداخلي، ثم لدى المزود إلى العنوان العام.
ماذا يشترط المعيار على أجهزة CGNAT
جمع المعيار RFC 6888 المتطلبات العامة لهذه الأجهزة. أهمها لمستخدم الإنترنت ثلاثة:
- العنوان المقترن. الإعداد الافتراضي أن تخرج كل اتصالات العنوان الداخلي الواحد بالعنوان العام نفسه، أياً كان البروتوكول. هذا يمنع موقعاً من رؤية جلستك تنتقل بين عنوانين.
- حد للمنافذ لكل مشترك. يجب أن يدعم الجهاز تحديد عدد المنافذ الخارجية التي يحجزها مشترك واحد، حتى لا يستهلك جهاز مصاب منافذ العنوان كلها.
- عدم تسجيل الوجهات. يوصي المعيار بألا يسجّل الجهاز عناوين الوجهات ومنافذها إلا لضرورة إدارية.
آثار مشاركة العنوان
يصف المعيار RFC 6269 المشكلات التي تنتج عن مشاركة عنوان IPv4 بين مشتركين، وأبرزها:
- الحظر يصيب الجميع. إن حظر موقع عنواناً بسبب مشترك مسيء، حُظر معه كل من يشاركه العنوان. ويخلص المعيار إلى أن عقوبة العنوان لا تنجح حين تكون المشاركة واسعة. لهذا يصعب على المواقع حظر عنوان خلوي دون إيذاء مستخدمين آخرين، وهو موضوع مقال سمعة عنوان IP.
- تتبّع الإساءة يحتاج إلى المنفذ والوقت. العنوان والوقت لا يكفيان لمعرفة المشترك. يلزم أيضاً منفذ المصدر وتوقيت دقيق، ولهذا يُنصح بأن تسجّل الخوادم منفذ المصدر إن أرادت تتبّع إساءة إلى صاحبها.
- الاتصالات الواردة لا تصل. لا يوجد ربط لحزمة تأتي من الخارج دون طلب، فيرميها الجهاز. استضافة خادم ألعاب أو كاميرا تصل إليها من الخارج لا تعمل بإعادة توجيه المنافذ في موجّهك.
- الموقع الجغرافي يتبع جهاز الترجمة. يُقدَّر موقع المشترك بمكان ظهور عنوان الجهاز، لا بمكان المشترك. التفاصيل في تحديد الموقع من عنوان IP.
- نفاد المنافذ. تطبيق يفتح عدداً كبيراً من الاتصالات قد يبلغ حد المنافذ المخصص للمشترك، فتفشل اتصالات جديدة حتى تُحذف ربوط قديمة.
كيف تعرف أنك خلف CGNAT
- افتح صفحة حالة الموجّه، وانظر إلى عنوان الواجهة الخارجية (WAN).
- قارنه بعنوانك العام كما تراه المواقع.
- إن كان عنوان الموجّه ضمن 100.64.0.0/10، أي من 100.64.0.0 إلى 100.127.255.255، فأنت في الغالب خلف CGNAT.
- إن كان ضمن كتل RFC 1918 واختلف عن العنوان العام، فهناك ترجمة أخرى قبل الإنترنت، لدى المزود أو في موجّه ثانٍ.
على بيانات الجوال يكفي أن ترى أن عنوان الهاتف في إعداداته يختلف عن العنوان العام. ويمكن أيضاً رؤية القفزات الداخلية بتتبع المسار:
tracert -d 9.9.9.9 # Windows
traceroute -n 9.9.9.9 # Linux, macOS
ظهور عناوين من 100.64.0.0/10 في القفزات الأولى علامة على شبكة المزود الداخلية.
إن احتجت اتصالاً وارداً
- اطلب عنواناً عاماً. بعض المزودين يعطون عنواناً عاماً أو ثابتاً عند الطلب، أحياناً برسم إضافي.
- استخدم IPv6 إن كان متاحاً. كل جهاز يحصل على عنوان عام دون ترجمة، فيمكن الوصول إليه مع ضبط جدار الحماية.
- اقلب اتجاه الاتصال. يتصل جهازك بخادم وسيط له عنوان عام، ويصل الآخرون إليك عبره. هذه طريقة الأنفاق العكسية وبعض خدمات VPN التي تعيد توجيه المنافذ.
syriaproxy وCGNAT
العناوين التي يخرج بها اتصالك عبر syriaproxy عناوين خلوية حقيقية من شبكة سيريتل للجيل الرابع داخل سوريا. ويتشاركها كثير من مشتركي سيريتل في الوقت نفسه خلف CGNAT. يبقى العنوان نفسه نحو ساعتين ثم تغيّره سيريتل، ويمكنك طلب عنوان جديد من حسابك متى شئت.
الفرق بين هذه العناوين وعناوين الخوادم في العنوان الخلوي وعنوان مركز البيانات.
أسئلة شائعة
هل يخفي CGNAT هويتي؟
عن المواقع جزئياً فقط، فهي ترى عنواناً يشاركك فيه آخرون. أما المزود فيعرف أي مشترك استخدم كل منفذ في كل لحظة، ويحتفظ عادةً بسجلات الربط لأغراض قانونية.
هل يبطئ CGNAT الاتصال؟
الترجمة نفسها خطوة صغيرة في المسار. لكن مرور حركة كثيرين عبر جهاز واحد قد يضيف تأخيراً في أوقات الذروة، وحد المنافذ قد يؤثر في تطبيقات تفتح اتصالات كثيرة جداً.
لماذا أرى اختبارات التحقق من أنني إنسان أكثر على الجوال؟
لأن العنوان الذي تخرج به يشاركك فيه مشتركون آخرون، فيرى الموقع منه حجم طلبات أكبر مما يرسله شخص واحد. بعض المواقع تطلب التحقق حين يرتفع عدد الطلبات من عنوان واحد.
هل يلغي IPv6 الحاجة إلى CGNAT؟
لحركة IPv6 نعم، فالعناوين تكفي كل جهاز. لكن ما دامت مواقع كثيرة تعمل بـIPv4 وحده، يبقى المشغّل محتاجاً إلى ترجمة حركة IPv4.
قارن عنوانك العام بعنوان موجّهك لتعرف إن كنت خلف ترجمة عناوين لدى المزود.