آموزش 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 نکنید.