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

آموزش IPv6؛ شب سوم: ND، RA، SLAAC و DHCPv6

Host چگونه آدرس، Router پیش‌فرض، MTU و DNS را یاد می‌گیرد؟ پاسخ میان ICMPv6، Router Advertisement، SLAAC و گاهی DHCPv6 تقسیم شده است.

Control Plane در LAN

Neighbor Discovery یا ND با ICMPv6 چند وظیفهٔ ARP و سازوکارهای دیگر IPv4 را انجام می‌دهد:

  • Router Solicitation یا RS با Type ۱۳۳ و Router Advertisement یا RA با Type ۱۳۴؛
  • Neighbor Solicitation یا NS با Type ۱۳۵ و Neighbor Advertisement یا NA با Type ۱۳۶؛
  • Redirect با Type ۱۳۷، Duplicate Address Detection و بررسی دسترسی‌پذیری Next Hop.
Host جدید --RS: Router کجاست؟--> Router
Host جدید <--RA: prefix, lifetime, flags, MTU, DNS-- Router
Host جدید -- ساخت آدرس و Duplicate Address Detection
Host جدید --NS برای آدرس لایهٔ ۲ Next Hop--> Router
Host جدید <--NA-- Router

RA می‌تواند Prefix Information Option، مقدار MTU و Recursive DNS Server یا RDNSS را حمل کند. Flagهای آن مشخص می‌کنند Client از SLAAC و/یا DHCPv6 استفاده کند. Default Route معمولاً از RA می‌آید، نه DHCPv6.

حالت آدرس داده‌های دیگر کاربرد رایج
SLAAC Host از /64 اعلام‌شده می‌سازد RA/RDNSS Clientهای عمومی
SLAAC + DHCPv6 بدون State SLAAC Optionهای بیشتر از DHCPv6 شبکهٔ مدیریت‌شده
DHCPv6 با State DHCPv6 Optionهای DHCPv6 و Route از RA Clientهای کنترل‌شده
DHCPv6-PD Router یک Prefix می‌گیرد Upstream آن را Delegate می‌کند Router مشتری

Android به‌طور تاریخی برای تخصیص آدرس از Stateful DHCPv6 استفاده نمی‌کند؛ پس SLAAC سازگارترین انتخاب پیش‌فرض LAN است. DHCPv6-PD متفاوت است: Router به‌جای یک Host معمولی، فضای Subnet درخواست می‌کند.

مشاهدهٔ واقعی RA

sudo tcpdump -ni enp1s0 -vv 'icmp6 && (ip6[40] == 133 || ip6[40] == 134)'
ip -6 address show dev enp1s0
ip -6 route show default
ip -6 neighbor show dev enp1s0
networkctl status enp1s0 2>/dev/null || true

Capture را آغاز، Interface را در Lab دوباره متصل و این موارد را استخراج کنید:

  • مبدأ RA که معمولاً Link-local مربوط به Router است؛
  • /64 اعلام‌شده و Valid/Preferred Lifetime؛
  • Router Lifetime و Default Route؛
  • Flagهای Autonomous یا A و On-link یا L؛
  • RDNSS، اگر وجود دارد.

ملاحظات عملیاتی

  • RA جعلی می‌تواند Traffic را منحرف کند. روی Switchهای مناسب RA Guard را با توجه به Fragment و Portهای مجاز Router فعال کنید.
  • باقی ماندن آدرس Deprecated یا Temporary طبیعی است؛ پیش از اعلام خرابی، Lifetime آن را ببینید.
  • فعال شدن Linux Forwarding رفتار پذیرش RA را تغییر می‌دهد. WAN یک Linux Router که Default Route را از RA می‌گیرد، ممکن است به accept_ra=2 نیاز داشته باشد.
  • Link-local یا Multicast را بدون شناخت ND به‌طور کامل Filter نکنید.