پرش به محتویات

آموزش IPv6؛ شب دوم: نگارش آدرس و Subnetting

در این شب، آدرس‌های IPv6 را باز و فشرده می‌کنیم و از یک Prefix واگذارشده، برای VLANهای مختلف یک Address Plan بی‌ابهام می‌سازیم.

خواندن و نوشتن آدرس

IPv6 هشت گروه Hexadecimal شانزده‌بیتی دارد. صفرهای ابتدایی هر گروه را حذف کنید و فقط یک‌بار، طولانی‌ترین دنبالهٔ گروه‌های تمام‌صفر را با :: جایگزین کنید:

2001:0db8:1200:0010:0000:0000:0000:0080
2001:db8:1200:10::80

استفاده از :: بیش از یک‌بار مجاز نیست. حروف Hex به بزرگی و کوچکی حساس نیستند، ولی حروف کوچک عرف رایج‌اند. Prefix Length نیز مانند CIDR در IPv4، تعداد بیت‌های ثابت از سمت چپ را نشان می‌دهد.

برای Subnetها برنامه‌ریزی کنید، نه تک‌آدرس‌ها

فرض کنید Provider مقدار 2001:db8:1200:ab00::/56 را Delegate کرده است. Byte آخر از Hextet چهارم، امکان ساخت ۲۵۶ شبکهٔ /64 را می‌دهد:

کاربرد VLAN Prefix Router
کاربران ۱۰ 2001:db8:1200:ab10::/64 ...:ab10::1
سرورها ۲۰ 2001:db8:1200:ab20::/64 ...:ab20::1
مهمان ۳۰ 2001:db8:1200:ab30::/64 ...:ab30::1
مدیریت ۹۹ 2001:db8:1200:ab99::/64 ...:ab99::1

در این جدول، شناسه‌های VLAN برای خوانایی شبیه Hex نوشته شده‌اند؛ VLAN ده‌دهی ۲۰ برابر 20 در مبنای شانزده نیست. اگر این قرارداد باعث خطای Operator می‌شود، طرح ترتیبی ab00، ab01 و… ساده‌تر است.

قواعد عملی:

  • هر Broadcast Domain یا VLAN لایهٔ ۲، یک /64 یکتا می‌گیرد.
  • یک /64 را روی Interfaceهای Route‌شده یا هم‌زمان روی WAN و LAN نکشید.
  • /127 را تنها برای Link نقطه‌به‌نقطهٔ Routerها و با پشتیبانی هر دو سمت به‌کار ببرید.
  • /128 برای Loopback و آدرس منفرد Route‌شدهٔ سرویس مناسب است.
  • برای هر Site یک /48 یا /56 بخواهید و با ذهنیت IPv4 آدرس ذخیره نکنید.
  • Prefix، VLAN، کاربرد، Gateway، حالت RA/DHCP و مالک را در IPAM ثبت کنید.

تمرین

پیش از استفاده از Calculator، این آدرس‌ها را کامل باز کنید:

2001:db8::1
fe80::a:b:c:d
2001:db8:1234:ff00::80

در 2001:db8:44:1200::/56، نخستین، دهمین و آخرین /64 چنین‌اند:

2001:db8:44:1200::/64
2001:db8:44:1209::/64
2001:db8:44:12ff::/64

برای اعتبارسنجی می‌توان از کتابخانهٔ استاندارد Python استفاده کرد:

python3 - <<'PY'
import ipaddress
p = ipaddress.ip_network('2001:db8:44:1200::/56')
for i, subnet in zip(range(4), p.subnets(new_prefix=64)):
    print(i, subnet)
PY

خروجی این شب یک جدول Address Plan است. همهٔ مقدارهای 2001:db8::/32 را Lab-only علامت بزنید و اطلاعات واقعی Provider را در Inventory خصوصی نگه دارید.