Cisco CCNA · 200-301 v2.0

Link-Local و Interface ID

Link-Local یکی از مهم‌ترین تفاوت‌های عملی IPv6 با IPv4 است. هر Interface فعال IPv6 به یک آدرس با Scope همان Link نیاز دارد و بسیاری از فرآیندهای پایه مانند Neighbor Discovery و یادگیری Default Router به آن وابسته‌اند. در کنار آن باید مفهوم Interface Identifier و روش Modified EUI-64 را بشناسی؛ نه به این معنی که همه سیستم‌های امروزی آدرسشان را همیشه از MAC می‌سازند، بلکه چون برای CCNA و Configuration بعضی تجهیزات هنوز باید بتوانی منطق EUI-64 را محاسبه و خروجی آن را تشخیص بدهی.

در پایان این درس باید بتوانی
  • کاربرد و Scope آدرس Link-Local را توضیح بدهی
  • FE80::/10 را در خروجی‌ها تشخیص بدهی و محدودیت Routing آن را بفهمی
  • Interface Identifier و Modified EUI-64 را مرحله‌به‌مرحله محاسبه کنی
  • Link-Local خودکار و دستی را روی Cisco IOS بررسی کنی
  • Zone ID را برای آدرس‌های Link-Local روی سیستم‌عامل توضیح بدهی
  • استفاده Link-Local به‌عنوان Next Hop را درست تحلیل کنی

Link-Local و Scope یک Link

Link-Local Address از Prefix FE80::/10 استفاده می‌کند. معنی Scope محلی این است که این آدرس فقط داخل همان Link معتبر است. اگر دو Interface پشت یک Router در دو شبکه مختلف باشند، Link-Local یک سمت به سمت دیگر Route نمی‌شود. این محدودیت اتفاقاً مزیت است. دستگاه‌ها می‌توانند بدون داشتن GUA با Neighborهای همان لینک صحبت کنند و فرآیندهای پایه IPv6 را انجام بدهند. Link در IPv6 به مجموعه Interfaceهایی گفته می‌شود که بدون عبور از Router می‌توانند مستقیماً با هم تبادل لایه ۲ داشته باشند؛ یک VLAN نمونه رایج آن است. FE80::/10 برای همین محدوده تعریف شده است. Router ممکن است روی هر Interface خود یک Link-Local داشته باشد و حتی می‌توان همان مقدار FE80::1 را روی Interfaceهای مختلف Router استفاده کرد، چون هرکدام در Scope یک Link جدا قرار دارند. چیزی که ممنوع و مشکل‌ساز است Duplicate بودن آدرس در یک Link مشترک است.

بسیاری از عملیات پایه IPv6 حتی اگر Global Unicast نداشته باشیم با Link-Local کار می‌کنند. دو Node روی یک VLAN می‌توانند با Link-Local ارتباط داشته باشند، Router Advertisement از Link-Local Router استفاده می‌کند و Routeها ممکن است Next Hop را به شکل Link-Local نشان دهند. بنابراین در Troubleshooting، سالم بودن Link-Local یک تست میانی مهم بین سلامت Layer 2 و سلامت کامل Routed Connectivity است.

Interface Identifier و Modified EUI-64

در یک /64، ۶۴ بیت اول Prefix شبکه هستند و ۶۴ بیت دوم معمولاً Interface ID نام دارند. Interface ID بخشی است که Interface را داخل همان Prefix مشخص می‌کند. لازم نیست همیشه از MAC ساخته شود؛ می‌تواند دستی، تصادفی، Privacy-based یا با روش‌های دیگر تولید شود.

نمونه
FE80::1234:5678:9ABC:DEF0

FE80::/64 بخش Prefix محلی را نشان می‌دهد
1234:5678:9ABC:DEF0 نمونه Interface ID است

در بعضی مستندات FE80::/10 را می‌بینی و در نمایش Interface معمولاً Link-Local با /64 استفاده می‌شود. برای CCNA کافی است محدوده FE80::/10 و نقش ۶۴ بیت Interface ID در LAN را بشناسی. EUI-64 روشی است که می‌تواند از MAC Address یک Interface ID 64 بیتی بسازد. MAC معمولی ۴۸ بیت است. برای تبدیل، مقدار FFFE وسط MAC قرار می‌گیرد و یک بیت مشخص در بخش اول تغییر می‌کند. نتیجه یک شناسه ۶۴ بیتی است.

نمونه ساده‌شده
MAC: 00:1A:2B:3C:4D:5E

میانه اضافه می‌شود:
00:1A:2B:FF:FE:3C:4D:5E

سپس U/L bit تغییر می‌کند و Interface ID نهایی ساخته می‌شود.

لازم نیست هر بار این تبدیل را دستی در شبکه واقعی انجام بدهی، اما CCNA از تو انتظار دارد مفهوم Modified EUI-64 را بشناسی و بتوانی ساختار کلی آن را توضیح بدهی. Modified EUI-64 یک روش تاریخی و آموزشی برای ساخت Interface Identifier ۶۴ بیتی از MAC ۴۸ بیتی است. ابتدا MAC را به دو بخش ۲۴ بیتی تقسیم می‌کنیم، FFFE را وسط آن قرار می‌دهیم تا ۶۴ بیت شود، سپس بیت U/L در اولین Byte را معکوس می‌کنیم. برای MAC برابر 00:1C:42:2E:60:4A، بعد از درج FFFE مقدار 00:1C:42:FF:FE:2E:60:4A به‌دست می‌آید و با تغییر بیت U/L، Byte اول از ۰۰ به ۰۲ تبدیل می‌شود.

Modified EUI-64
MAC: 00:1C:42:2E:60:4A
Insert FFFE: 00:1C:42:FF:FE:2E:60:4A
Flip U/L bit: 02:1C:42:FF:FE:2E:60:4A
Interface ID: 021c:42ff:fe2e:604a

تولید خودکار و پیکربندی دستی Link-Local

وقتی IPv6 روی یک Interface فعال می‌شود، سیستم می‌تواند یک Link-Local به‌صورت خودکار بسازد. روش دقیق تولید Interface ID به سیستم‌عامل و تنظیمات بستگی دارد. پس انتظار نداشته باش Link-Local همیشه از MAC قابل حدس باشد. روی سیستم‌های جدید Privacy و روش‌های تصادفی‌سازی باعث می‌شوند Interface ID لزوماً MAC را نشان ندهد. این موضوع برای عیب‌یابی مهم است؛ از ظاهر آدرس درباره MAC نتیجه قطعی نگیر. روی Router Cisco می‌توان Link-Local را دستی تعیین کرد. این کار گاهی برای خوانایی و مستندسازی مفید است، مثلاً FE80::1 روی Gateway یک LAN. دستور در Interface Configuration وارد می‌شود.

نمونه Configuration
interface GigabitEthernet0/0
 ipv6 address FE80::1 link-local
 no shutdown

کلمه link-local به IOS می‌گوید این آدرس با Scope محلی تنظیم می‌شود. همین Interface می‌تواند هم‌زمان یک GUA هم داشته باشد. در سیستم‌های امروزی نباید انتظار داشته باشی همه Interface IDها از MAC و EUI-64 ساخته شوند. سیستم‌عامل‌ها ممکن است از شناسه‌های پایدار یا Temporary Address برای حریم خصوصی استفاده کنند. در Cisco IOS می‌توان EUI-64 را صریحاً در Configuration درخواست کرد یا Link-Local را دستی تعیین کرد. پس اگر بخش پایانی آدرس شبیه MAC نبود، نتیجه نگیر Configuration خراب است؛ ابتدا ببین آدرس با چه روشی ساخته شده است.

Cisco IOS
interface GigabitEthernet0/0
 ipv6 address 2001:db8:10:1::/64 eui-64
 ! یا Link-Local دستی
 ipv6 address FE80::1 link-local
 no shutdown

Zone ID و تکرار آدرس روی Interfaceهای مختلف

چون Link-Local از Router عبور نمی‌کند، یک Router می‌تواند روی Interfaceهای مختلف Link-Local یکسانی مثل FE80::1 داشته باشد. این موضوع در نگاه اول عجیب است، ولی Scope هر آدرس به Interface مربوط خودش محدود می‌شود. به همین دلیل هنگام Ping کردن یک Link-Local روی بعضی سیستم‌ها باید Interface خروجی یا Zone ID را هم مشخص کنی. بدون این اطلاعات سیستم ممکن است نداند FE80::1 مربوط به کدام Link است. اگر یک سیستم چند Interface داشته باشد، ممکن است روی هرکدام Neighborی با Link-Local مشابه وجود داشته باشد. چون خود FE80 فقط روی Link محلی معنی دارد، سیستم‌عامل گاهی باید بداند Packet از کدام Interface خارج شود. برای همین کنار Link-Local ممکن است یک Zone ID یا نام Interface ببینی.

نمونه مفهومی
FE80::1%Ethernet
FE80::1%12

علامت % و مقدار بعد از آن جزو خود IPv6 Address نیست. این اطلاعات فقط به سیستم‌عامل کمک می‌کند Scope را به Interface درست وصل کند. در Cisco IOS معمولاً Interface خروجی را در Command یا Route مشخص می‌کنی. چون Link-Local فقط در Scope یک Interface معنا دارد، سیستم‌عامل هنگام استفاده از آن گاهی باید بداند Packet از کدام Interface خارج شود. به این مشخص‌کننده Zone ID یا Scope ID گفته می‌شود. در Windows ممکن است آدرسی مثل fe80::1234%۱۲ ببینی که %۱۲ شناسه Interface است. در بعضی Linuxها نام Interface بعد از % می‌آید. این علامت بخشی از ۱۲۸ بیت IPv6 نیست؛ فقط به سیستم محلی می‌گوید کدام Link مورد نظر است.

Link-Local به‌عنوان Next Hop و روش بررسی

در IPv6 ممکن است Routing Table، Next Hop را به شکل Link-Local نمایش دهد. این رفتار طبیعی است چون Router بعدی روی همان لینک مستقیماً با Link-Local قابل شناسایی است. لازم نیست Next Hop حتماً GUA باشد. در مرحله Routing این موضوع را با Static Route و OSPF کامل‌تر می‌بینیم. فعلاً مهم است که دیدن FE80 در Routing Table را خطا تصور نکنی.

دستورهای مفید
show ipv6 interface brief
show ipv6 interface gigabitEthernet 0/0

دستور اول خلاصه Interfaceها و آدرس‌های IPv6 را نشان می‌دهد. دستور دوم اطلاعات جزئی‌تر همان Interface را نمایش می‌دهد. با این خروجی می‌توانی Link-Local و GUA را کنار هم ببینی و وضعیت Interface را هم بررسی کنی. در Routing IPv6 استفاده از Link-Local به‌عنوان Next Hop رایج است. چون FE80::1 ممکن است روی Linkهای مختلف تکرار شود، Router برای Routeهای دستی معمولاً باید بداند این Next Hop از کدام Interface قابل دسترسی است. این موضوع دلیل خوبی است که Route Table را فقط از روی آدرس Next Hop نخوانی؛ Exit Interface و Prefix مقصد را هم بررسی کن. در پروتکل‌های Routing IPv6 نیز همسایگی روی Link می‌تواند با Link-Local شکل بگیرد.

بررسی روی Cisco IOS
show ipv6 interface brief
show ipv6 interface GigabitEthernet0/0
show ipv6 neighbors
show ipv6 route
سناریوی عملی

دو Router روی VLAN 100 به هم متصل‌اند. R1 روی G0/0 آدرس FE80::1 و R2 آدرس FE80::2 دارد. ارتباط Link-Local بین آن‌ها بدون نیاز به Global Unicast روی همان Link ممکن است. اگر روی R1 یک Route با Next Hop برابر FE80::2 تعریف شود، Exit Interface نیز اهمیت دارد تا R1 بداند FE80::2 مربوط به کدام Link است. این سناریو نشان می‌دهد Link-Local فقط یک آدرس خودکار جانبی نیست؛ بخشی از عملکرد واقعی IPv6 است.

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

اشتباه‌های رایج درباره Link-Local و EUI-64

  • Link-Local را به اینترنت یا Site دیگر Route نکن
  • فرض نکن هر Interface ID باید از MAC ساخته شده باشد
  • FFFE را بدون تغییر بیت U/L به‌عنوان EUI-64 نهایی در نظر نگیر
  • Zone ID مثل %۱۲ را بخشی از خود IPv6 حساب نکن
  • Next Hop لینک‌لوکال را بدون توجه به Exit Interface تحلیل نکن
تمرین عملی

تمرین Link-Local و Interface ID

  1. برای MAC برابر 00:25:96:12:34:56 مقدار Modified EUI-64 را مرحله‌به‌مرحله محاسبه کن
  2. روی Router آزمایشگاهی یک Link-Local دستی تنظیم و با show ipv6 interface brief بررسی کن
  3. روی سیستم خودت Link-Local و Scope ID کارت‌های شبکه را پیدا کن
  4. توضیح بده چرا FE80::1 می‌تواند روی دو Interface جدا از یک Router استفاده شود ولی روی یک VLAN مشترک نباید Duplicate باشد
  5. یک Route نمونه با Next Hop لینک‌لوکال طراحی کن و مشخص کن چرا Exit Interface مهم است

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

  • Link-Local با FE80::/10 فقط روی همان Link معتبر است
  • هر Interface فعال IPv6 معمولاً Link-Local دارد
  • Modified EUI-64 با درج FFFE و تغییر بیت U/L ساخته می‌شود
  • سیستم‌های مدرن الزاماً از EUI-64 برای همه آدرس‌ها استفاده نمی‌کنند
  • Zone ID Interface محلی را مشخص می‌کند و جزو آدرس نیست
  • Link-Local می‌تواند Next Hop یک Route IPv6 باشد
خودسنجی

Link-Local را عملی تحلیل کن

چرا Router آدرس Link-Local را به Link دیگر Forward نمی‌کند؟

Scope این آدرس فقط همان Link است و برای ارتباط خارج از آن طراحی نشده است.

در Modified EUI-64 چه مقداری وسط MAC قرار می‌گیرد؟

FFFE؛ سپس بیت U/L در Byte اول نیز معکوس می‌شود.

%۱۲ بعد از یک Link-Local در Windows چه مفهومی دارد؟

Scope یا Interface ID محلی سیستم است تا Link خروجی مشخص شود و بخشی از ۱۲۸ بیت آدرس نیست.

چرا هنگام استفاده از Link-Local به‌عنوان Next Hop ممکن است Exit Interface لازم باشد؟

چون همان Link-Local می‌تواند روی Linkهای دیگر نیز وجود داشته باشد و Router باید Link درست را تشخیص دهد.

منابع رسمی

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

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

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

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

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