- مقصد Local و Remote را بر اساس Prefix و Route Host تشخیص بدهی
- مسیر لایه ۲ Packet به Neighbor Local را توضیح بدهی
- نقش Default Router Link-Local را برای مقصد Remote بفهمی
- تفاوت Destination IPv6 با Destination MAC در هر Hop را توضیح بدهی
- اثر Prefix یا Gateway اشتباه را از روی Neighbor Discovery تشخیص بدهی
- Route Table Client را در Windows یا Linux برای IPv6 بررسی کنی
تصمیم Local یا Remote روی Host
Host آدرس مقصد را با Prefix خودش مقایسه میکند. اگر بخش Prefix یکسان باشد، مقصد داخل همان Subnet است. Host برای ارسال مستقیم باید اطلاعات Link-Layer مقصد را با Neighbor Discovery پیدا کند.
نمونهHost A: 2001:DB8:1:10::20/64
Host B: 2001:DB8:1:10::90/64
هر دو Prefix برابر 2001:DB8:1:10::/64 دارند.در این حالت Router برای جابهجایی Packet بین این دو Host لازم نیست، حتی اگر Default Router روی شبکه وجود داشته باشد. در سادهترین حالت یک Host با Prefix /64، Prefix مقصد را با Prefix خودش و Route Table مقایسه میکند. اگر مقصد On-Link باشد، Router در مسیر اولین Frame قرار نمیگیرد. اگر مقصد Remote باشد، Host Route مناسب یا Default Route را انتخاب میکند. در شبکههایی که RA استفاده میشود، On-Link Prefix و Default Router از اطلاعات Router Advertisement هم تأثیر میگیرند؛ بنابراین تصمیم واقعی فقط یک مقایسه ظاهری String نیست، بلکه بر اطلاعات Routing و Prefix نصبشده روی Host تکیه دارد.
مثالHost: 2001:db8:10:10::25/64
Local: 2001:db8:10:10::90
Remote: 2001:db8:10:20::90ارسال Packet به مقصد Local
برای مقصد Local، Host ابتدا بررسی میکند Neighbor در Cache وجود دارد یا نه. اگر نباشد، NS میفرستد و NA دریافت میکند. بعد Frame محلی را به Link-Layer Address همان Host مقصد میفرستد.
مسیر سادهHost A → Neighbor Discovery → Host B
Host A → Frame مستقیم → Host BRouter در این مسیر Data Plane دخالت نمیکند چون هر دو Host در یک Prefix هستند. برای مقصد Local، Host باید آدرس لایه ۲ همان مقصد را پیدا کند. Neighbor Solicitation به Solicited-Node Multicast مقصد فرستاده میشود، Neighbor Advertisement پاسخ میدهد و Entry در Neighbor Cache ساخته میشود. Frame Ethernet به MAC مقصد نهایی روی همان LAN ارسال میشود و IPv6 Destination نیز همان IPv6 مقصد است. اگر Neighbor Cache روی INCOMPLETE بماند، مشکل معمولاً در همان Link، VLAN، مقصد یا ND است و هنوز دلیلی برای متهم کردن Routeهای Remote نداریم. این نقطه تفاوت مهمی با ذهنیت «همه Packetها اول به Gateway میروند» دارد. Gateway فقط برای مقصدهایی استفاده میشود که Host آنها را On-Link نمیداند یا Route خاصی به Next Hop دارد. پس مشاهده اینکه Client برای یک Server Neighbor Solicitation مستقیم میفرستد، به ما میگوید Client آن Server را Local تشخیص داده است.
ارسال Packet به مقصد Remote و Default Router
اگر Prefix مقصد با Prefix محلی فرق داشته باشد، Host مقصد را Remote در نظر میگیرد و Packet را به Default Router تحویل میدهد. Host لازم نیست MAC یا Link-Layer Address مقصد نهایی Remote را بداند؛ فقط Neighbor مربوط به Router محلی را پیدا میکند.
نمونهHost A: 2001:DB8:1:10::20/64
Server: 2001:DB8:1:20::50/64
Prefixها متفاوت هستند؛ Packet باید به Router برسد.Router بعد از دریافت Packet از Routing Table خودش برای انتخاب مسیر بعدی استفاده میکند. جزئیات Routing را در مرحله مخصوص Routing بررسی میکنیم. در IPv6 Default Router معمولاً از Router Advertisement شناخته میشود و میتواند با Link-Local Address خودش مشخص شود. بنابراین دیدن FE80::1 بهعنوان Gateway طبیعی است. Link-Local از همان Link خارج نمیشود، اما برای تحویل Packet به Router بعدی روی Link کافی است. این نکته در ابتدا عجیب به نظر میرسد: چطور یک Gateway غیرقابل Route میتواند مسیر اینترنت باشد؟ پاسخ این است که Gateway فقط Neighbor محلی است. خود Router بعد از دریافت Packet آن را با Routeهای خودش Forward میکند. برای مقصد Remote، Host بهجای Neighbor مقصد نهایی، Neighbor مربوط به Default Router را پیدا میکند. Packet IPv6 مقصدش همان Server Remote باقی میماند، اما Frame محلی به Router تحویل داده میشود.
مسیر سادهHost A → Default Router → شبکه بعدی → Serverاین تفاوت بین Destination IP و مقصد Link-Layer مهم است. IP مقصد نهایی Server است، ولی روی اولین Link، Frame به Router میرسد. برای مقصد Remote، Host MAC خود Router را Resolve میکند. Default Router در IPv6 معمولاً با Link-Local مثل FE80::1 در Route Table ثبت شده است. Frame لایه ۲ از Host به MAC Router میرود، اما Destination IPv6 داخل Packet همچنان آدرس Host Remote باقی میماند. Router Header لایه ۲ را برای Hop بعدی عوض میکند، Hop Limit را کاهش میدهد و بر اساس Routing Table Forward میکند. در مسیر معمول Routed، Source و Destination IPv6 به دلیل عبور از Router عوض نمیشوند.
دو مقصد متفاوتRemote IPv6 destination: 2001:db8:20:20::50
First-hop IPv6 next-hop: FE80::1
Ethernet destination on first link: MAC Routerاثر Prefix و Gateway اشتباه
اگر Prefix Client اشتباه باشد، تصمیم Local یا Remote هم اشتباه میشود. ممکن است Client یک مقصد Remote را Local فرض کند و بیدلیل Neighbor Solicitation برای آن بفرستد، یا یک مقصد Local را Remote بداند و Packet را به Router بدهد. به همین دلیل Prefix Length را فقط یک عدد تزئینی کنار Address نبین. این مقدار مستقیماً روی تصمیم ارسال Host اثر دارد. اگر Client برای مقصدهای Local ارتباط دارد ولی هیچ مقصد Remote را نمیبیند، Default Router یکی از چیزهایی است که باید بررسی شود. در IPv6 فقط دنبال یک GUA بهعنوان Gateway نگرد؛ RA و Link-Local Router را هم بررسی کن. اگر Router Advertisement به Client نرسد، ممکن است Client GUA دستی داشته باشد ولی Default Router را نشناسد. نتیجه این است که Local کار میکند و Remote نه.
Prefix اشتباه میتواند رفتار را کاملاً منحرف کند. اگر Host بهاشتباه /48 داشته باشد در حالی که LAN باید /64 باشد، ممکن است مقصدی در Subnet دیگر را On-Link تصور کند و برای خود مقصد NS بفرستد؛ چون آن مقصد واقعاً پشت Router است، NA دریافت نمیشود و Neighbor Entry ممکن است INCOMPLETE بماند. از طرف دیگر اگر Prefix بیش از حد محدود باشد، Host مقصد Local را Remote میبیند و بیدلیل ترافیک را به Router میفرستد. نبود یا اشتباه بودن Default Route حالت دیگری است: Local Communication ممکن است کاملاً سالم باشد، Link-Local Router هم قابل Ping باشد، اما مقصدهای Remote شکست بخورند. این ترکیب نتایج بهخوبی مسیر عیبیابی را محدود میکند. بهجای تغییر تصادفی DNS، ابتدا Route Table و اطلاعات RA را بررسی کن.
Route Table Client و روش عیبیابی مسیر
Host برای مقصدهایی که Route مشخصتری ندارند از Default Route استفاده میکند. در IPv6 این Route معمولاً به Router روی Link اشاره میکند. روی Linux ممکن است خطی شبیه default via fe80::1 dev eth0 ببینی. FE80::1 همان Router محلی است و dev eth0 مشخص میکند این Link-Local روی کدام Interface معتبر است.
نمونه مفهومیdefault via fe80::1 dev eth0این خروجی دوباره نشان میدهد Link-Local بودن Gateway مشکلی ایجاد نمیکند؛ سیستم فقط باید بداند آن Router روی کدام Link قرار دارد. وقتی Host Packet را به Default Router میدهد، Destination IPv6 داخل Packet همان آدرس مقصد نهایی باقی میماند. چیزی که روی هر Link تغییر میکند اطلاعات Frame محلی است. Router Packet را دریافت میکند، Route را انتخاب میکند و برای Link بعدی Frame جدیدی میسازد. این تفاوت کمک میکند بین Routing و Neighbor Discovery مرز روشنی داشته باشی. Neighbor Discovery برای تحویل روی Link فعلی است؛ Routing برای انتخاب مسیر بین Prefixهاست. سیستمعاملها Route Table محلی دارند. روی Windows میتوان route print و روی Linux ip -6 route را دید. Route Table نشان میدهد Prefixهای Local و Default Route چگونه ثبت شدهاند.
Linux نمونهip -6 routeدر عیبیابی حرفهای حدس نزن سیستم Packet را کجا میفرستد؛ Route Table را ببین و تصمیم واقعی سیستم را بررسی کن. روی Windows دستور route print -۶ و روی Linux دستور ip -6 route نشان میدهد Host چه Prefixهایی را On-Link میداند و Default Route به چه Next Hopی میرود. این خروجی باید کنار ipconfig /all یا ip -6 addr خوانده شود. سپس Neighbor Cache را هم بررسی کن تا ببینی Host برای Destination Local یا Router چه Resolutionی انجام داده است. کنار هم گذاشتن Address، Route و Neighbor سه زاویه متفاوت از یک تصمیم Forwarding را میدهد.
Client OSWindows:
ipconfig /all
route print -6
ping -6 <address>
tracert -6 <address>
Linux:
ip -6 addr
ip -6 route
ip -6 neighClient آدرس 2001:db8:10:10::25/48 دارد، در حالی که VLAN واقعی /64 است. Server مقصد 2001:db8:10:20::50 در VLAN دیگری پشت Router قرار دارد. به دلیل /48 اشتباه، Client مقصد را On-Link تصور میکند و بهجای استفاده از Default Router برای خود Server NS میفرستد. Neighbor Entry به INCOMPLETE میرسد. Router Configuration ممکن است کاملاً درست باشد؛ مشکل از تصمیم Local/Remote روی Client شروع شده است.
اشتباههای رایج در مسیر Local و Remote
- فرض نکن همه Packetها ابتدا به Default Gateway میروند
- برای مقصد Remote، Destination MAC و Destination IPv6 را یکی ندان
- Default Router Link-Local را غیرعادی یا اشتباه فرض نکن
- Prefix اشتباه Client را صرفاً مشکل Addressing ظاهری ندان؛ رفتار Forwarding را عوض میکند
- قبل از Route Table سراغ DNS نرو وقتی ارتباط با IP هم شکست میخورد
تمرین تصمیم Forwarding روی Host
- برای یک Host /64 سه مقصد Local و سه مقصد Remote طراحی و دلیل هرکدام را بنویس
- مسیر Frame و Packet را برای مقصد Local تا سطح MAC و IPv6 توضیح بده
- همان مسیر را برای مقصد Remote و Default Router Link-Local توضیح بده
- عمداً Prefix Client را اشتباه کن و در Packet Capture ببین NS برای چه آدرسی ارسال میشود
- Route Table IPv6 سیستم خودت را باز کن و Default Route و On-Link Prefixها را پیدا کن
نکتههایی که باید با خودت ببری
- Host قبل از ارسال تصمیم Local یا Remote میگیرد
- مقصد Local مستقیماً با ND Resolve میشود
- برای مقصد Remote، MAC Router اولین Hop لازم است
- Default Router در IPv6 معمولاً Link-Local است
- Destination IPv6 در Routing عادی ثابت میماند ولی Header لایه ۲ در هر Hop عوض میشود
- Prefix اشتباه میتواند Host را وادار کند Destination را در Scope نادرست Resolve کند
مسیر Packet را قبل از Router تحلیل کن
Host برای مقصد Local MAC چه دستگاهی را Resolve میکند؟
MAC خود مقصد Local را با Neighbor Discovery.
برای مقصد Remote، Destination IPv6 در Frame اول چیست؟
همان IPv6 مقصد نهایی Remote؛ فقط Destination MAC مربوط به Router اولین Hop است.
چرا /48 اشتباه بهجای /64 میتواند Neighbor Entry را INCOMPLETE کند؟
Host ممکن است مقصد Remote را On-Link فرض و برای خود آن NS ارسال کند، در حالی که مقصد روی آن Link حضور ندارد.
Default Route IPv6 Client را با چه دستورهایی میتوان دید؟
در Windows با route print -۶ و در Linux با ip -6 route.
منابع مرجع این درس
برای ذخیره پیشرفت وارد حساب شو
حساب کاربری برای آزمون و ثبت مرحلهها استفاده میشود