يعطيك أحدهم عنوانًا أول وعنوانًا أخيرًا ويطلب منك مسار VPN. الخطوة المغريّة هي اختيار أقصر بادئة تضم الطرفين، وهذه الخطوة تضيف بهدوء وجهات لم يسأل عنها أحد. كتلة CIDR لها دائمًا حجم من قوة اثنين وعنوان بداية محاذى لها، لذا يحتاج النطاق العشوائي عادةً إلى أكثر من واحدة. امشِ عبر النطاق، وقسّمه بدقة، ثم افحص العناوين الواقعة خارجه مباشرة.

ابدأ بالنطاق، لا بالبادئة

اكتب العنوان الأول والعنوان الأخير قبل أن تكتب أي شيء آخر. الزوج هو المتطلب؛ والبادئة ليست سوى تعبير محتمل عنه، وأحيانًا تعبير خاطئ. كما أن رقمين أسهل بكثير في التحقق من قناع.

النطاق المحاذى ينطوي إلى كتلة واحدة. أما غير المحاذى فيتحلل إلى عدة كتل، والتحلل دقيق لا تقريبي. ما يجب ألا تفعله هو التقريب إلى الخارج واعتباره قريبًا بما يكفي، لأن العناوين الإضافية تتلقى السياسة التي يحملها المسار.

اتجاهان للخطأ كلاهما مهم. فبالنسبة لمسار داخل النفق، تُسحب العناوين الإضافية إلى VPN. وبالنسبة لاستثناء تجاوز، تتخطاه العناوين الإضافية. ولا يظهر أي من النتيجتين في جدول مسارات يعرض البادئة التي ثبّتها فقط.

الحالة الأولى: النطاق يصادف أنه محاذى

خذ 198.51.100.64 حتى 198.51.100.127. العنوان الأول محاذى على حد 64 عنوانًا والنطاق بالضبط 64 عنوانًا، لذا تصفه بادئة /26 واحدة دون أي فائض.

هذه هي الحالة السهلة ويستحق التعرف عليها، لأنها تعني أن المتطلب كتبه على الأرجح شخص كان يفكر بالبادئات أصلًا. وتعني أيضًا أن الفحص قصير: تأكد من أن الحجم قوة اثنين وأن البداية من مضاعفات ذلك الحجم.

نطاقات التوثيق تصنع أمثلة جيدة تحديدًا لأن لا أحد يملكها. لا تثبّت هذه العناوين على نفق حقيقي، ولا تفترض أن نطاقًا أُعطي لك هو مساحة توثيق لمجرد أنه يبدو غير معتاد.

الحالة الثانية: لا يصادف، لذا قسّمه

الآن خذ 198.51.100.100 حتى 198.51.100.107. هذه ثمانية عناوين، وهي قوة اثنين، لكن 100 ليس من مضاعفات ثمانية. لا يمكن لكتلة واحدة بهذا الحجم أن تبدأ هناك، لذا يجب تغطية النطاق بأكثر من واحدة.

التغطية الدقيقة هي كتلتا /30: تغطي 198.51.100.100/30 العناوين 100 حتى 103، وتغطي 198.51.100.104/30 العناوين 104 حتى 107. ثمانية عناوين إجمالًا، ولا شيء خارج النطاق، والتحلل فريد لنطاق معين.

python3 -c "from ipaddress import ip_address, summarize_address_range as s; print(*s(ip_address('198.51.100.100'), ip_address('198.51.100.107')), sep='\n')"

دالة المكتبة القياسية تقوم بالحساب نيابة عنك، وتحدد وثائق ipaddress ما تعيده. ما لا تفعله هو اختيار بوابة، أو تحديد من يملك العناوين، أو منح الوصول إلى أي خدمة خلفها.

قِس ما كانت البادئة الأوسع ستلتقطه

قبل أن تقبل اختصارًا، احسب تكلفته. بادئة /28 تبدأ عند 198.51.100.96 تغطي 96 حتى 111، أي ستة عشر عنوانًا بدلًا من ثمانية. الثمانية الإضافية هي 96 حتى 99 و108 حتى 111، وكل واحد منها سيرث المسار.

python3 -c "from ipaddress import ip_network as n; w=set(n('198.51.100.96/28')); t=set(n('198.51.100.100/30'))|set(n('198.51.100.104/30')); print(len(w), len(t), sorted(w-t))"

ثماني وجهات إضافية رقم ملموس يمكنك وضعه في طلب تغيير. وهو أيضًا الرقم الذي يقرر ما إذا كان الاختصار مقبولًا، وهي مسألة سياسة لا مسألة حساب.

أبقِ الحساب والاستكشاف منفصلين. النطاق الذي يقدمه مشغّل الشبكة يتحول بدقة. إجابة DNS واحدة من خدمة متغيرة لا تثبت نطاق تلك الخدمة الكامل أو الدائم، وقد تتشارك أسماء غير ذات صلة عنوانًا واحدًا.

ثبّت المجموعة الدقيقة وتحقق من الحواف

سلّم كل بادئة ناتجة إلى من يملك إعداد VPN ودعه يثبّتها عبر الآلية المدعومة. إذا احتاج المتطلب إدخالين، فأبقِ إدخالين بدلًا من توسيع واحد لجعل النموذج أقصر.

sudo ip route add 198.51.100.100/30 via 10.90.0.1 dev tun0
sudo ip route add 198.51.100.104/30 via 10.90.0.1 dev tun0
ip route get 198.51.100.101
ip route get 198.51.100.97

الأمران الأخيران هما ما يتخطاه الناس. يجب أن يتبع أول عنوان داخلي المسار الجديد، ولا يجب أن يتبعه العنوان الواقع خارج النطاق مباشرة. إذا سلك الاثنان الاتجاه نفسه، فقد وُسّع النطاق في مكان ما بين المتطلب والإعداد.

سجّل العنوان الأول والعنوان الأخير والبادئات التي تعبّر عنهما. يستطيع من يراجع القاعدة بعد ذلك مطابقة المتطلب مع الإعداد دون إعادة الحساب، ويبقى الفرق بين مسار دقيق ومسار مريح ظاهرًا.

مقالات ذات صلة