Cisco CCNA · 200-301 v2.0

Neighbor Discovery و ICMPv6

Neighbor Discovery یا ND مجموعه‌ای از وظایف حیاتی IPv6 را با ICMPv6 انجام می‌دهد: پیدا کردن Router، نگاشت IPv6 همسایه به آدرس لایه ۲، بررسی در دسترس بودن Neighbor و Duplicate Address Detection. اگر این بخش را فقط «ARP در IPv6» بنامی، بخش بزرگی از نقش آن را از دست می‌دهی. برای عیب‌یابی باید پیام‌های RS، RA، NS و NA را بشناسی، Solicited-Node Multicast را بفهمی و Neighbor Cache را مثل یک منبع وضعیت واقعی شبکه بخوانی.

در پایان این درس باید بتوانی
  • وظایف اصلی Neighbor Discovery را توضیح بدهی
  • پیام‌های RS، RA، NS و NA را با Typeهای ICMPv6 تشخیص بدهی
  • Solicited-Node Multicast را به جای Broadcast/ARP تحلیل کنی
  • Neighbor Cache و Stateهای رایج آن را بخوانی
  • نقش ND در DAD و Neighbor Unreachability را بفهمی
  • مشکلات ICMPv6 و ND را با Packet Capture عیب‌یابی کنی

Neighbor Discovery و پیام‌های ICMPv6

Neighbor Discovery یا ND مجموعه‌ای از پیام‌ها و فرآیندهاست که دستگاه‌های IPv6 روی یک Link برای شناخت همدیگر و Routerها استفاده می‌کنند. IPv4 برای پیدا کردن MAC مقصد محلی از ARP استفاده می‌کند؛ IPv6 ARP ندارد و بخشی از این کار را Neighbor Discovery انجام می‌دهد. ND فقط جایگزین ARP نیست. Router Discovery، Duplicate Address Detection و بررسی Reachability هم به همین خانواده مربوط هستند. Router Solicitation و Router Advertisement هم پیام‌های Neighbor Discovery هستند. RS از سمت Host برای پیدا کردن Routerها و RA از سمت Router برای اعلام اطلاعات Link و Prefix استفاده می‌شود. پس SLAAC و ND از هم جدا نیستند؛ SLAAC روی پیام‌های ND تکیه دارد. این ارتباط مفهومی کمک می‌کند وقتی Client Prefix نمی‌گیرد، فقط به Address نگاه نکنی و پیام‌های ICMPv6 مربوط به Router Discovery را هم بررسی کنی.

پیام‌های اصلی ND در ICMPv6 Typeهای مشخص قرار دارند: Router Solicitation نوع ۱۳۳، Router Advertisement نوع ۱۳۴، Neighbor Solicitation نوع ۱۳۵، Neighbor Advertisement نوع ۱۳۶ و Redirect نوع ۱۳۷ است. حفظ عددها هدف اصلی نیست، اما در Capture و ACL کمک می‌کند دقیقاً بفهمی چه Control Messageی دیده می‌شود. اهمیت بزرگ‌تر این است که ICMPv6 را یک ابزار جانبی برای Ping ندانی؛ بخشی از عملکرد پایه IPv6 روی آن بنا شده است.

ICMPv6 Neighbor Discovery Types
133 = Router Solicitation
134 = Router Advertisement
135 = Neighbor Solicitation
136 = Neighbor Advertisement
137 = Redirect

Neighbor Solicitation، Advertisement و Solicited-Node Multicast

Neighbor Solicitation یا NS پیامی است که یک دستگاه برای پرسیدن درباره Neighbor یا بررسی یک آدرس می‌فرستد. یکی از کاربردهای رایج آن پیدا کردن Link-Layer Address مقصد محلی است.

نمای ساده
Host A ---- NS ----> Multicast مرتبط با Host B
Host A می‌پرسد: صاحب این IPv6 روی Link کدام Interface است؟

به‌جای Broadcast به همه دستگاه‌ها، IPv6 از Solicited-Node Multicast استفاده می‌کند تا گروه کوچک‌تری هدف قرار بگیرد. Neighbor Advertisement یا NA پاسخی است که اطلاعات Neighbor را اعلام می‌کند. وقتی Host B NS مربوط به خودش را دریافت کند، می‌تواند NA بفرستد و Link-Layer Address خودش را اعلام کند.

نمای ساده
Host A <--- NA ----- Host B
Host B اطلاعات لازم برای ارتباط محلی را اعلام می‌کند

نتیجه در Neighbor Cache ذخیره می‌شود تا برای هر Packet لازم نباشد دوباره فرآیند کشف انجام شود. برای پیدا کردن یک Neighbor لازم نیست NS به همه دستگاه‌های VLAN برسد. IPv6 برای هر Unicast یا Anycast یک گروه Multicast ویژه به نام Solicited-Node Multicast می‌سازد. NS به این گروه فرستاده می‌شود تا فقط دستگاه‌هایی که احتمالاً آدرس موردنظر را دارند پیام را پردازش کنند. این طراحی یکی از دلیل‌های حذف Broadcast از IPv6 است. هدف این نیست که هیچ Packet گروهی وجود نداشته باشد؛ هدف این است که گروه دقیق‌تری نسبت به Broadcast کل LAN انتخاب شود.

وقتی Host می‌خواهد آدرس لایه ۲ Neighbor را پیدا کند، به‌جای ARP Broadcast یک NS به Solicited-Node Multicast مربوط به مقصد می‌فرستد. این گروه از Prefix برابر FF02::1:FF00:0/104 و ۲۴ بیت انتهایی IPv6 مقصد ساخته می‌شود. مثلاً برای مقصد 2001:db8::1234:5678، ۲۴ بیت آخر 34:5678 است و Solicited-Node Multicast برابر FF02::1:FF34:5678 می‌شود. فقط Nodeهایی که آدرس مرتبط دارند لازم است به این Multicast توجه کنند. Neighbor Advertisement پاسخ یا اعلان مربوط به Neighbor است و می‌تواند Link-Layer Address و Flagهای کنترلی داشته باشد. بنابراین نگاشت IPv6 به MAC در IPv6 از مسیر ND انجام می‌شود، نه ARP. اگر در یک شبکه IPv6 دنبال جدول ARP می‌گردی، ابزار اشتباه را انتخاب کرده‌ای؛ باید Neighbor Cache را با دستورهایی مثل show ipv6 neighbors یا ابزار سیستم‌عامل مشاهده کنی.

Neighbor Cache و بررسی Reachability

Neighbor Cache جدولی است که نگاشت IPv6 Address به اطلاعات Link-Layer Neighbor را نگه می‌دارد. از نظر کاربرد شبیه ARP Cache در IPv4 است، ولی وضعیت‌های بیشتری برای Reachability دارد.

Cisco IOS
show ipv6 neighbors

در خروجی می‌توان IPv6 Neighbor، Age، Link-Layer Address و State را دید. اگر یک Neighbor مورد انتظار وجود ندارد، مشکل می‌تواند در VLAN، Link، Addressing یا پیام‌های ND باشد. Neighbor Discovery فقط MAC یا Link-Layer Address را پیدا نمی‌کند؛ وضعیت دسترسی Neighbor را هم پیگیری می‌کند. اگر یک Neighbor مدتی استفاده نشود یا پاسخ مناسب ندهد، سیستم می‌تواند دوباره Reachability آن را بررسی کند. به این مکانیزم Neighbor Unreachability Detection گفته می‌شود. در CCNA لازم نیست همه Timerها و Stateها را حفظ کنی. کافی است بدانی Neighbor Cache یک جدول ثابت و ابدی نیست و سیستم وضعیت Neighbor را در طول زمان ارزیابی می‌کند.

Neighbor Cache فقط یک جدول ثابت IPv6-to-MAC نیست. Entryها می‌توانند Stateهایی مثل INCOMPLETE، REACHABLE، STALE، DELAY و PROBE داشته باشند. INCOMPLETE معمولاً یعنی Resolution شروع شده ولی پاسخ معتبر هنوز نرسیده است. REACHABLE یعنی Neighbor اخیراً قابل دسترس تأیید شده. STALE الزاماً خرابی نیست؛ یعنی مدتی تأیید تازه نداریم و در صورت نیاز دوباره Reachability بررسی می‌شود. خواندن State باعث می‌شود بین «MAC هرگز پیدا نشد» و «Entry قدیمی است ولی ممکن است سالم باشد» تفاوت بگذاری.

Cisco IOS
show ipv6 neighbors
show ipv6 interface GigabitEthernet0/0

Router Discovery، DAD و وابستگی به ICMPv6

DAD قبل از استفاده عادی از یک IPv6 Address بررسی می‌کند آیا همان آدرس روی Link توسط دستگاه دیگری استفاده می‌شود یا نه. برای این کار از Neighbor Solicitation استفاده می‌شود. اگر پاسخ نشان دهد آدرس تکراری است، Interface نباید آن را به شکل عادی فعال کند. DAD یک کنترل محلی است. اگر طراحی Address Plan اشتباه باشد یا Duplicate در Link دیگری باشد، این مکانیزم جای همه کنترل‌های شبکه را نمی‌گیرد. ICMPv6 علاوه بر Echo Request و Echo Reply، پیام‌های خطا و کنترل مهمی دارد. Neighbor Discovery، Packet Too Big و Router Discovery از ICMPv6 استفاده می‌کنند. به همین دلیل Policy امنیتی که همه ICMPv6 را کورکورانه Drop کند می‌تواند عملکرد طبیعی IPv6 را مختل کند. امنیت یعنی اجازه دادن به پیام‌های لازم و کنترل پیام‌های نامعتبر، نه حذف یک Protocol کامل بدون شناخت نقش آن.

DAD نیز از Neighbor Solicitation استفاده می‌کند، اما با هدف متفاوت: بررسی می‌کند آدرس پیشنهادی روی Link تکراری نباشد. Router Discovery با RS و RA انجام می‌شود. یعنی چهار فرآیند ظاهراً متفاوت — پیدا کردن Router، پیدا کردن MAC Neighbor، DAD و Reachability — همگی به خانواده ICMPv6/ND وابسته‌اند. Firewall یا ACLی که ICMPv6 را به‌صورت کورکورانه Block کند ممکن است Ping را ببندد، اما مشکل بزرگ‌تر این است که خود Address Configuration و Neighbor Communication را هم مختل کند.

Packet Capture و عیب‌یابی Neighbor Discovery

Wireshark می‌تواند پیام‌های ICMPv6 را نشان دهد. در یک Lab ساده، Capture را شروع کن، Interface را فعال کن و دنبال RS، RA، NS و NA بگرد. دیدن ترتیب واقعی پیام‌ها کمک می‌کند مفاهیم از حالت حفظی خارج شوند.

Display Filter
icmpv6

اگر Client مشکل IPv6 دارد، Capture می‌تواند نشان دهد RA اصلاً دریافت می‌شود یا نه، NS فرستاده می‌شود یا پاسخ NA برمی‌گردد. در Packet Capture یک روش منظم داشته باش: ابتدا RS/RA را برای Router Discovery پیدا کن، سپس NS/NA مربوط به مقصد یا DAD را بررسی کن و Source/Destination Multicast را بخوان. اگر NS خارج می‌شود ولی NA برنمی‌گردد، سؤال بعدی Layer 2، VLAN، مقصد خاموش، ACL یا Duplicate/Scope اشتباه است. اگر اصلاً NS تولید نمی‌شود، ممکن است Host مقصد را Remote تشخیص داده باشد و به‌جای آن MAC Router را Resolve کند؛ بنابراین Route Table و Prefix هم باید کنار Capture دیده شوند.

فیلترهای مفید در Wireshark
icmpv6
icmpv6.type == 135
icmpv6.type == 136
ipv6.dst == ff02::1

در محیط عملی قبل از اجرای Debug روی Router پرترافیک، Capture روی SPAN یا ابزارهای show را ترجیح بده. Debug می‌تواند حجم خروجی زیادی تولید کند و خودش روی Troubleshooting اثر بگذارد.

سناریوی عملی

Client با آدرس 2001:db8:10:1::25/64 نمی‌تواند Server هم‌Subnet را Ping کند. در Neighbor Cache برای Server وضعیت INCOMPLETE دیده می‌شود. Capture نشان می‌دهد NS به Solicited-Node Multicast مقصد ارسال می‌شود ولی NA برنمی‌گردد. این یافته Routing را تا حد زیادی از دایره مظنون‌ها خارج می‌کند، چون Host مقصد را Local تشخیص داده و Resolution لایه ۲ را شروع کرده است. حالا باید VLAN، Port، Server، Firewall محلی و مسیر Multicast/ND روی همان Link بررسی شوند.

اشتباهات رایج

اشتباه‌های رایج در Neighbor Discovery

  • ND را فقط جایگزین ARP ندان؛ Router Discovery و DAD هم بخشی از آن هستند
  • برای IPv6 دنبال ARP Table نگرد
  • همه ICMPv6 را بدون شناخت Typeها Block نکن
  • STALE را به‌تنهایی خرابی Neighbor تفسیر نکن
  • NS بدون NA را فوراً مشکل Routing ندان؛ ابتدا Scope و Layer 2 را بررسی کن
تمرین عملی

تمرین Neighbor Discovery و Capture

  1. Solicited-Node Multicast آدرس 2001:db8::abcd:1234 را محاسبه کن
  2. در Capture یک NS و NA پیدا و Source/Destination هرکدام را یادداشت کن
  3. روی Cisco show ipv6 neighbors را اجرا و Stateهای Entryها را تحلیل کن
  4. یک سناریو بنویس که Block شدن ICMPv6 باعث شکست SLAAC شود
  5. تفاوت NS برای Neighbor Resolution و NS برای DAD را توضیح بده

نکته‌هایی که باید با خودت ببری

  • Neighbor Discovery بر ICMPv6 متکی است
  • NS و NA نگاشت و ارتباط با Neighbor را انجام می‌دهند
  • Solicited-Node Multicast جای Broadcast عمومی ARP را می‌گیرد
  • Neighbor Cache Stateهای مختلف دارد و هر State معنی جداگانه دارد
  • RS/RA و DAD نیز بخشی از خانواده ND هستند
  • Block کامل ICMPv6 می‌تواند عملکرد پایه IPv6 را مختل کند
خودسنجی

پیام ND را از نشانه‌ها تشخیص بده

ICMPv6 Type 135 چه پیامی است؟

Neighbor Solicitation.

INCOMPLETE در Neighbor Cache معمولاً چه می‌گوید؟

Resolution شروع شده ولی هنوز Neighbor Advertisement معتبر دریافت نشده است.

چرا IPv6 به ARP Broadcast نیاز ندارد؟

Neighbor Discovery از NS/NA و Solicited-Node Multicast برای Resolve کردن Neighbor استفاده می‌کند.

آیا Block شدن ICMPv6 فقط Ping را خراب می‌کند؟

نه. ND، SLAAC، DAD و پیام‌های خطای ضروری IPv6 نیز می‌توانند آسیب ببینند.

منابع رسمی

منابع مرجع این درس

مطالعه همیشه آزاد است

برای ذخیره پیشرفت وارد حساب شو

حساب کاربری برای آزمون و ثبت مرحله‌ها استفاده می‌شود

ورود یا ثبت‌نام