اگر سال‌ها شبکهٔ خانگی یا هوم‌لب را با IPv4 اداره کرده باشید، احتمالاً برای هر دستگاه یک آدرس کوتاه انتخاب می‌کنید، DHCP را مرکز آدرس‌دهی می‌دانید و NAT را بخشی از مرز امنیتی شبکه می‌بینید. همین تجربه هنگام شروع IPv6 گاهی مزاحم می‌شود؛ نه به این دلیل که IPv6 پیچیده‌تر است، بلکه چون چند تصمیم قدیمی دیگر لازم نیست.

این نوشته با الهام از راهنمای کوتاه IPv6 برای مدیران IPv4 نوشته شده است. ترجمهٔ خط‌به‌خط آن نیست؛ مدل ذهنی مفید راهنما را می‌گیرد و چند ساده‌سازی آن را برای یک شبکهٔ واقعی دقیق‌تر می‌کند. در پایان می‌دانید چرا هر رابط چند آدرس دارد، RA و SLAAC چه می‌کنند، چه Prefixی باید از سرویس‌دهنده بگیرید و چرا حذف NAT به معنی حذف فایروال نیست.

چهار عادت IPv4 که باید بازبینی شوند#

تفاوت اصلی با طول آدرس شروع نمی‌شود؛ با شیوهٔ ادارهٔ شبکه شروع می‌شود:

عادت رایج در IPv4مدل مناسب‌تر در IPv6
برای هر دستگاه یک عدد کوتاه و به‌یادماندنی انتخاب می‌کنیم.کلاینت‌ها معمولاً آدرس خود را خودکار می‌سازند و ما برای یادآوری از DNS استفاده می‌کنیم.
هر رابط معمولاً یک آدرس اصلی دارد.وجود هم‌زمان Link-local، آدرس عمومی پایدار و آدرس موقت طبیعی است.
DHCP آدرس، Gateway و اطلاعات دیگر را یک‌جا می‌دهد.Router Advertisement مسیر پیش‌فرض و Prefix را اعلام می‌کند؛ SLAAC و DHCPv6 نقش‌های مکمل دارند.
NAT هم ترجمهٔ آدرس است و هم ناخواسته جلوی اتصال ورودی را می‌گیرد.مسیریابی سراسری از فیلتر امنیتی جداست؛ فایروال Stateful اتصال ورودی ناخواسته را می‌بندد.

این توصیه به معنی ممنوع‌بودن آدرس ثابت نیست. Router، DNS Resolver یا سروری که در DNS ثبت می‌شود ممکن است به آدرس پایدار نیاز داشته باشد. نکته این است که نباید هزاران Interface ID را مانند آدرس‌های کمیاب IPv4 دستی مدیریت کنیم. DNS، سامانهٔ مدیریت آدرس و پیکربندی خودکار برای این کار مناسب‌ترند.

آدرس ۱۲۸ بیتی را چگونه بخوانیم؟#

آدرس IPv6 از هشت گروه چهاررقمی مبنای شانزده ساخته می‌شود. در LAN معمولی، چهار گروه نخست Prefix شبکه و چهار گروه بعدی Interface ID یا شناسهٔ رابط را تشکیل می‌دهند:

2001:0db8:1200:0010:7c2a:0000:91f0:0042
|--------- prefix /64 ---------| |------ interface ID ------|

صفرهای ابتدای هر گروه را می‌توان حذف کرد و یک دنبالهٔ پیوسته از گروه‌های تمام‌صفر را فقط یک بار با :: نوشت. برای مثال، شکل کوتاه‌شدهٔ 2001:0db8:1200:0010:0000:0000:0000:0042 برابر 2001:db8:1200:10::42 است.

چند محدودهٔ مهم را باید از هم تشخیص دهیم:

محدودهکاربرد
fe80::/10آدرس Link-local؛ فقط روی همان Link معتبر است و برای همسایه‌یابی و ارتباط با Router به کار می‌رود.
2000::/3فضای اصلی Global Unicast؛ در صورت وجود Route و مجوز فایروال در اینترنت مسیریابی می‌شود.
fc00::/7آدرس یکتای محلی یا ULA؛ در عمل Prefixهای محلی از fd00::/8 ساخته می‌شوند و روی اینترنت عمومی Route نمی‌شوند.
2001:db8::/32مخصوص مستندسازی و مثال؛ نباید در شبکهٔ عملیاتی استفاده شود.

داشتن چند آدرس روی یک رابط خطا نیست. لپ‌تاپ می‌تواند یک Link-local برای همان شبکه، یک آدرس عمومی نسبتاً پایدار برای اتصال‌های ورودی و یک یا چند آدرس موقت برای اتصال‌های خروجی داشته باشد. آدرس‌های موقت با شناسهٔ تصادفی و عمر محدود، ردیابی طولانی‌مدت یک دستگاه را دشوارتر می‌کنند؛ سازوکار آن‌ها در RFC 8981 تعریف شده است.

جملهٔ «همهٔ Subnetهای IPv6 همیشه /64 هستند» میان‌بری آموزشی است، نه قانون بدون استثنا. برای LANی که از Stateless Address Autoconfiguration یا SLAAC استفاده می‌کند، /64 انتخاب استاندارد است. اما /127 در لینک نقطه‌به‌نقطهٔ Routerها و /128 برای یک Route میزبان کاربرد دارند. تحلیل مرز ۶۴ بیتی و استثناهای آن را می‌توان در RFC 7421 خواند.

یک کلاینت بدون DHCP سنتی چگونه بالا می‌آید؟#

در IPv4 عادت داریم DHCP یک آدرس و Default Gateway را تحویل دهد. در IPv6، شروع کار یک کلاینت معمولاً چنین است:

ISP
  |
  |  delegated prefix, for example /56
  v
[home router]
  |
  |  one /64 + Router Advertisement
  v
[LAN / VLAN] ---- [laptop: link-local + stable GUA + temporary GUA]

کلاینت ابتدا برای رابط خود یک آدرس Link-local می‌سازد و تکراری‌نبودن آن را روی Link بررسی می‌کند. سپس Router Advertisement یا RA را می‌شنود. RA می‌تواند Router پیش‌فرض، Prefixهای روی Link، طول عمر آن‌ها و پرچم‌های مربوط به پیکربندی خودکار را اعلام کند. کلاینت با SLAAC، Prefix اعلام‌شده را با یک Interface ID ترکیب می‌کند و آدرس خودش را می‌سازد.

RA فقط «نسخهٔ بی‌حالت DHCP» نیست. آدرس Router پیش‌فرض در IPv6 از RA آموخته می‌شود؛ حتی شبکه‌ای که آدرس کلاینت‌ها را با DHCPv6 توزیع می‌کند همچنان به RA نیاز دارد. جزئیات کشف Router در RFC 4861 و پیکربندی خودکار در RFC 4862 آمده است.

DHCPv6 نیز حذف نشده است. این پروتکل می‌تواند آدرس یا گزینه‌های پیکربندی را به کلاینت بدهد و، مهم‌تر از آن برای Router خانگی، یک Prefix را واگذار کند. RFC 9915 نسخهٔ جاری استاندارد DHCPv6 است. بنابراین انتخاب واقعی میان «RA یا DHCPv6» نیست؛ باید مشخص کنیم هر کدام در کدام سمت Router و برای چه اطلاعاتی استفاده می‌شود.

آدرس WAN با Prefix شبکهٔ داخلی یکی نیست#

Router برای ساخت LAN به فضای قابل مسیریابی نیاز دارد. سرویس‌دهنده ممکن است روی رابط WAN یک آدرس منفرد بدهد و جداگانه با DHCPv6 Prefix Delegation یا PD، یک Prefix بزرگ‌تر به Router واگذار کند. Router آن Prefix را به /64های مستقل تقسیم می‌کند و روی هر LAN یا VLAN یکی را با RA اعلام می‌کند.

فرض کنید Prefix مستندسازی‌شدهٔ زیر به Router واگذار شده باشد:

2001:db8:1200:ab00::/56

در این حالت ۸ بیت برای ساخت Subnetهای /64 باقی می‌ماند؛ یعنی ۲۵۶ شبکه از 2001:db8:1200:ab00::/64 تا 2001:db8:1200:abff::/64. یک /60 شانزده شبکهٔ /64 می‌دهد و یک /64 فقط برای یک LAN معمولی کافی است.

هیچ قاعدهٔ عمومی نمی‌گوید همهٔ کاربران خانگی حتماً باید /56 بگیرند. RFC 6177 انتخاب اندازه را به سیاست سرویس‌دهنده و نیاز Site وابسته می‌داند. بااین‌حال باید Prefixی بگیرید که برای LAN کاربران، سرورها، مهمان‌ها و تجهیزات هوشمند، /64های جدا داشته باشد. کشیدن یک /64 مشترک روی چند VLAN یا جبران کمبود Prefix با NAT66، طراحی شبکه را شکننده می‌کند.

پیش از فعال‌سازی IPv6 این پرسش‌ها را از سرویس‌دهنده بپرسید:

  • IPv6 بومی است یا با Tunnel ارائه می‌شود؟
  • DHCPv6-PD در دسترس است و طول Prefix واگذارشده چقدر است؟
  • Prefix پس از قطع و وصل ثابت می‌ماند یا تغییر می‌کند؟
  • آدرس WAN و Prefix قابل استفاده در LAN جدا هستند؟
  • اتصال ورودی یا بعضی پورت‌ها در شبکهٔ سرویس‌دهنده فیلتر می‌شوند؟

ULA جای فایروال یا VLAN را نمی‌گیرد#

Unique Local Address یا ULA برای ارتباط محلی است و روی اینترنت عمومی Route نمی‌شود. Prefix محلی را نباید به‌شکل fd00::/48 یا یک عدد خوش‌دست انتخاب کرد. RFC 4193 یک شناسهٔ ۴۰ بیتی شبه‌تصادفی را در ساخت Prefix محلی در نظر می‌گیرد تا هنگام اتصال دو شبکه، احتمال برخورد کم باشد.

ULA می‌تواند در کنار آدرس عمومی مفید باشد. برای مثال، اگر Prefix عمومی اتصال خانگی تغییر می‌کند، نام داخلی NAS یا Printer را می‌توان در DNS محلی به ULA نسبتاً پایدار آن‌ها وصل کرد. در همان زمان، دستگاه برای دسترسی به اینترنت یک Global Unicast Address یا GUA هم دارد. سیستم‌عامل بر اساس مقصد، آدرس مبدأ مناسب را انتخاب می‌کند.

اما ULA ابزار جداسازی تجهیزات ناامن نیست. اگر تلویزیون هوشمند برای کارکرد به اینترنت نیاز دارد، دادن ULA بدون GUA شما را دوباره به ترجمهٔ آدرس یا Proxy وابسته می‌کند. راه روشن‌تر این است که دستگاه در VLAN جدا، با GUA و Policy فایروال محدود قرار بگیرد. اگر دستگاه اصلاً نباید اینترنت داشته باشد، نبود Route خروجی و قواعد فایروال این تصمیم را اعمال می‌کنند؛ نوع آدرس به‌تنهایی Policy امنیتی نیست.

حذف NAT به معنی بازبودن شبکه نیست#

در IPv6 معمولاً هر میزبان GUA خودش را دارد و Router آدرس آن را ترجمه نمی‌کند. این ویژگی، نیاز به Port Forwarding را برای انتشار سرویس حذف می‌کند، اما نباید بسته‌های ورودی ناخواسته را آزاد بگذارد. برای شبکهٔ خانگی، الگوی معقول چنین است:

  • اتصال‌هایی که از داخل آغاز شده‌اند و پاسخ‌های مرتبط با آن‌ها عبور کنند؛
  • اتصال ورودی تازه از WAN به‌صورت پیش‌فرض رد شود؛
  • فقط سرویس‌های مشخص روی مقصد و پورت مشخص استثنا شوند؛
  • فایروال خود میزبان نیز فعال بماند؛
  • ICMPv6 بر اساس نوع پیام فیلتر شود، نه اینکه یک‌جا بسته شود.

RFC 6092 قابلیت‌های امنیتی ساده برای Gateway خانگی را شرح می‌دهد. بستن کامل ICMPv6 روش امنی نیست؛ Neighbor Discovery، گزارش خطا و Path MTU Discovery به پیام‌های آن وابسته‌اند. RFC 4890 برای فیلترکردن پیام‌های ضروری و نامطلوب توصیه‌های جداگانه دارد.

راهنمای اصلی پیشنهاد می‌کند در Prefixهای پویا، Rule فایروال فقط ۶۴ بیت آخر آدرس یک سرور را تطبیق دهد. این روش را نباید بدون بررسی کپی کرد. آدرس موقت تغییر می‌کند، Interface ID همیشه به روش EUI-64 ساخته نمی‌شود و Policy وابسته به نیمهٔ آدرس می‌تواند از موجودی واقعی شبکه جدا شود. برای سرویس عمومی، یک آدرس پایدار انتخاب کنید، رکورد AAAA را با Dynamic DNS به‌روز نگه دارید و تغییر Prefix را هم‌زمان به DNS و مجموعهٔ آدرس‌های فایروال برسانید.

نتیجه را روی Linux چگونه بررسی کنیم؟#

نام رابط را با محیط خود جایگزین کنید. این فرمان‌ها تغییری در شبکه نمی‌دهند و فقط وضعیت را می‌خوانند:

ip -br -6 address
ip -6 route
ip -6 neighbor
ip -6 route get 2606:4700:4700::1111

در خروجی باید دست‌کم یک Link-local ببینید. در شبکه‌ای که IPv6 عمومی فعال است، یک یا چند آدرس Global و Route پیش‌فرضی شبیه default via fe80::... نیز دیده می‌شود. فرمان route get رابط خروجی، Next Hop و آدرس مبدأ انتخاب‌شده را نشان می‌دهد؛ ارسال موفق Packet را تضمین نمی‌کند، اما تصمیم Routing را روشن می‌کند.

سپس لایه‌ها را جدا آزمایش کنید:

ping -6 -c 3 ::1
ping -6 -c 3 'fe80::1%enp1s0'
ping -6 -c 3 2606:4700:4700::1111
getent ahostsv6 example.com
curl -6 --fail --show-error --head https://example.com/

آدرس Link-local مثال دوم را از Route پیش‌فرض خود بردارید؛ %enp1s0 محدوده یا Zone را مشخص می‌کند. ping نخست پشتهٔ محلی، سپس دسترسی به Router و بعد مسیر اینترنت را جدا می‌سنجد. getent حل نام و curl اتصال برنامه را بررسی می‌کنند. این خروجی‌ها در این نوشته نتیجهٔ آزمایش واقعی نیستند و بسته به Policy مقصد، نرم‌افزار نصب‌شده و نام رابط شما تفاوت دارند.

اگر اتصال کار نکرد، از همین ترتیب جلو بروید: Link-local، دریافت RA، Route پیش‌فرض، GUA، Route بالادست، DNS و در پایان Policyهای فایروال. این ترتیب جلوی آن را می‌گیرد که خطای DNS را با تغییر آدرس یا مشکل Prefix Delegation را با NAT66 پنهان کنید.

نقشهٔ مهاجرت یک هوم‌لب#

برای شروع لازم نیست IPv4 را همان روز خاموش کنید. شبکه را Dual Stack بالا بیاورید و هر دو مسیر را مستقل بسنجید:

  1. از سرویس‌دهنده روش دریافت IPv6 و اندازهٔ Prefix Delegation را مستند کنید.
  2. برای هر LAN یا VLAN یک /64 یکتا در نظر بگیرید.
  3. RA را روی LAN فعال و رفتار SLAAC کلاینت‌های واقعی را بررسی کنید.
  4. برای شبکهٔ داخلی فقط در صورت نیاز ULA تصادفی بسازید و آن را کنار GUA به کار ببرید.
  5. فایروال IPv6 را با Policy صریح ورودی و استثناهای محدود تنظیم کنید.
  6. DNS، مانیتورینگ و سرویس‌های عمومی را برای AAAA و مسیر IPv6 جدا آزمایش کنید.
  7. تغییر Prefix، قطع سرویس‌دهنده و راه‌اندازی دوبارهٔ Router را تمرین کنید.

مدل ذهنی نهایی ساده است: ISP به Router فضای آدرس می‌دهد؛ Router برای هر Link یک Prefix اعلام می‌کند؛ میزبان‌ها می‌توانند چند آدرس بسازند؛ DNS نام‌ها را به آدرس وصل می‌کند؛ Routing دسترسی‌پذیری و فایروال مجازبودن ارتباط را تعیین می‌کند. وقتی این مسئولیت‌ها را از هم جدا ببینیم، IPv6 دیگر مجموعه‌ای از عددهای طولانی نیست.

برای راه‌اندازی گام‌به‌گام در Linux و RouterOS، طراحی فایروال و عیب‌یابی، مسیر یادگیری شبکه با IPv6 ادامهٔ کامل‌تری برای این راهنمای کوتاه است.