IPv6 Neighbor Discovery

چکیده

استانداردها: RFC 2462, RFC 2461, RFC 4861

RouterOS دارای IPv6 Neighbor Discovery و پشتیبانی از پیکربندی خودکار آدرس بدون حالت با استفاده از Router Advertisement Daemon (RADVD) است.

توضیحات نود

Node دستگاهی است که IPv6 را پیاده سازی می کند. در شبکه های IPv6 نودها به دو نوع تقسیم می شوند:

  • روترها  – نودی که بسته های IPv6 را که به طور صریح به خودش اختصاص داده نشده است، ارسال می کند.
  • هاست  – هر نودی که روتر نیست.

روترها و هاست ها کاملاً از هم جدا هستند، به این معنی که روترها نمی توانند میزبان باشند و هاست ها نمی توانند همزمان روتر باشند.

پیکربندی خودکار آدرس بدون حالت(Stateless address autoconfiguration)

چندین نوع پیکربندی خودکار وجود دارد:

  • stateless  – پیکربندی آدرس با دریافت پیام های تبلیغاتی روتر انجام می شود. این پیام ها شامل پیشوندهای آدرس بدون حالت هستند و مستلزم آن است که میزبان از پروتکل پیکربندی آدرس stateful استفاده نکند.
  • stateful  – پیکربندی آدرس با استفاده از پروتکل پیکربندی آدرس stateful (DHCPv6) انجام می شود. پروتکل stateful در صورتی استفاده می شود که پیام های RA شامل پیشوند آدرس نباشد.
  • both   – پیام‌های RA شامل پیشوندهای آدرس بدون حالت هستند و نیاز دارند که میزبان‌ها از یک پروتکل پیکربندی آدرس وضعیتی استفاده کنند.

یکی از ویژگی‌های بسیار مفید IPv6 توانایی پیکربندی خودکار خود بدون استفاده از پروتکل پیکربندی حالتی مانند DHCP است

توجه:  پیکربندی خودکار آدرس را فقط می‌توان در اینترفیس های دارای قابلیت multicast-capable انجام داد.

به این دلیل به آن پیکربندی خودکار آدرس بدون حالت می گویند زیرا نیازی به مدیریت وضعیت در سمت روتر نیست. این یک مکانیسم پیکربندی خودکار بسیار ساده، قوی و موثر است.

RouterOS از RADVD برای تبلیغ دوره ای اطلاعات مربوط به لینک به تمام نودهای موجود در آن لینک استفاده می کند. اطلاعات توسط بسته “تبلیغات مسیریاب” ICMPv6 حمل می شود و شامل فیلدهای زیر است:

  • IPv6 subnet prefix یا پیشوند زیر شبکه IPv6
  • link-local آدرس پیش فرض
  • پارامترهای دیگری که ممکن است اختیاری باشند: MTU، default hop limit و طول عمر روتر.

سپس هاست آگهی را می گیرد و آدرس IPv6 جهانی و روتر پیش فرض را پیکربندی می کند. آدرس IPv6 جهانی از پیشوند زیر شبکه تبلیغ شده و شناسه رابط EUI-64 ایجاد می شود .   

در صورت تمایل، میزبان می‌تواند با ارسال “router solicitation” یک بسته ICMPv6 ،  از روتر درخواست تبلیغ کند. در لینوکس ابزار rtsol بسته درخواست روتر را ارسال می کند. اگر از یک نود موبایل استفاده می کنید، ممکن است بخواهید درخواست های روتر را به صورت دوره ای ارسال کنید.  

آدرس ایالت ها

هنگامی که یک آدرس پیکربندی خودکار اختصاص داده می شود، می تواند در یکی از حالت های زیر باشد:

  • tentative – در این حالت میزبان تأیید می کند که آدرس یکتا است. تأیید از طریق تشخیص آدرس تکراری انجام می شود.
  • preferred – در این حالت آدرس منحصر به فرد تأیید می شود و نود می تواند ترافیک unicast را به و از یک آدرس ترجیحی ارسال و دریافت کند. دوره زمانی حالت ترجیحی در پیام RA گنجانده شده است.
  • deprecated – آدرس هنوز معتبر است، اما برای اتصالات جدید استفاده نمی شود.
  • invalid – نود دیگر نمی تواند ترافیک unicast را ارسال یا دریافت کند. یک آدرس پس از انقضای طول عمر معتبر وارد حالت نامعتبر می شود.

تصویر زیر رابطه بین حالت ها و طول عمر را نشان می دهد. 

کشف همسایه Neighbor discovery

منوی فرعی: /ipv6 nd

در این زیر منو، پروتکل IPv6 Neighbor Discovery (ND) پیکربندی شده است.

Neighbor Discovery (ND) مجموعه ای از پیام ها و فرآیندهایی است که روابط بین گره های همسایه را تعیین می کند. ND در مقایسه با IPv4 جایگزین پروتکل Address Resolution Protocol (ARP)، کشف مسیریاب پروتکل کنترل پیام اینترنت (ICMP) و ICMP Redirect می شود و عملکردهای بیشتری را ارائه می دهد.

ND توسط میزبان ها برای موارد زیر استفاده می شود:

  • روترهای همسایه را پیدا می کند.
  • آدرس ها، پیشوندهای آدرس و سایر پارامترهای پیکربندی را پیدا می کند.

ND توسط روترها برای موارد زیر استفاده می شود:

  • حضور آنها، پارامترهای پیکربندی میزبان و پیشوندهای روی link را تبلیغ می کند.
  • میزبان ها را از آدرس بعدی بهتری برای ارسال بسته ها به یک مقصد خاص مطلع می کند.

ND توسط گره ها برای موارد زیر استفاده می شود:

  • هر دو آدرس link-layer یک نود همسایه را که بسته IPv6 به آن ارسال می شود، پیدا می کنند و تعیین می کنند که آدرس link-layer یک نودهمسایه چه زمانی تغییر کرده است.
  • تعیین می کند که آیا بسته های IPv6 می توانند به یک همسایه ارسال و دریافت شوند یا خیر.

خواص

ویژگیشرح
advertise-dns (yes | no; Default: no)گزینه ای برای توزیع مجدد اطلاعات سرور DNS با استفاده از RADVD. برای استفاده از اطلاعات DNS تبلیغ شده ، به یک نرم افزار در حال اجرا سمت سرویس گیرنده با پشتیبانی از Router Advertisement DNS نیاز دارید . 
advertise-mac-address (yes | no; Default: yes)وقتی تنظیم شود، آدرس  link-layer رابط خروجی در RA گنجانده می شود.
comment (string; Default: )نوشته توصیفی
dns-servers (unspecified | ipv6 addresses; Default: unspecified)یک آدرس IPv6 یا فهرستی از آدرس‌ها را مشخص می کند که برای پیکربندی سرور DNS به میزبان‌ها ارائه می‌شود.
disabled (yes | no; Default: no)اینکه آیا یک مورد غیرفعال است یا خیر. به طور پیش فرض، ورودی فعال است.
hop-limit (unspecified | integer[0..255]; Default: unspecified)مقدار پیش فرضی که باید در قسمت Hop Count هدر IP برای بسته های IP خروجی (unicast) قرار گیرد.
interface (all | string; Default: )

اینترفیسی که بر روی آن پیدا کردن همسایه اجرا می شود.

  • all  – ND را روی تمام اینترفیسهای در حال اجرا، اجرا می کند.
managed-address-configuration (yes | no; Default: no)پرچم نشان می دهد که آیا میزبان ها باید از پیکربندی خودکار حالت (DHCPv6) برای به دست آوردن آدرس ها استفاده کنند یا خیر.
mtu (unspecified | integer[0..4294967295]; Default: unspecified)

گزینه MTU در پیام‌های شناسایی روتر استفاده می‌شود تا اطمینان حاصل شود که تمام نودهای یک لینک از مقدار MTU یکسانی در مواردی که لینک MTU به خوبی شناخته نشده است، استفاده می‌کنند.

  • unspecified  – گزینه MTU را ارسال نمی کند.
other-configuration (yes | no; Default: no)پرچم نشان می‌دهد که آیا میزبان‌ها باید از پیکربندی خودکار stateful برای به دست آوردن اطلاعات اضافی (به استثنای آدرس‌ها) استفاده کنند.
pref64-prefixes (unspecified | ipv6 prefixes; Default: unspecified)پیشوند IPv6 یا فهرستی از پیشوندها را در 32/40/32 مشخص می کند. ساب نت 48/, 56/, 64/ یا 96/ به عنوان پیشوند NAT64 در اختیار میزبان ها قرار می گیرد.
ra-delay (time; Default: 3s)حداقل زمان مجاز ارسال پکت های شناسایی روتر multicast از اینترفیس
ra-interval (time[3s..20m50s]-time[4s..30m]; Default: 3m20s-10m)فاصله حداقل یا حداکثر مجاز بین ارسال پکت های شناسایی روتر unsolicited multicast از اینترفیس
ra-preference (low | medium | high; Default: medium)اولویت روتر را که از طریق پکت های شناسایی روتر به میزبان های IPv6 منتقل می شود، مشخص می کند. مقدار preferenceموجود در پکت های شناسایی روتر، میزبان های IPv6 را قادر می سازد تا یک روتر پیش فرض را برای رسیدن به یک مقصد راه دور انتخاب کنند.
ra-lifetime (none | time; Default: 30m) 
reachable-time (unspecified | time[0..1h]; Default: unspecified)زمانی که یک نود پس از دریافت تایید دسترسی، همسایه را در دسترس قرار می دهد. استفاده شده توسط الگوریتم تشخیص عدم دسترسی همسایه
retransmit-interval (unspecified | time; Default: unspecified)زمان بین ارسال مجدد پیام های درخواست همسایه. استفاده شده توسط وضوح آدرس و الگوریتم تشخیص عدم دسترسی همسایه

اگر ND به طور خودکار توسط پیکربندی LTE تولید شود، حداکثر طول عمر برای RA به 1 ساعت محدود می شود.

پیشوند(Prefix)

منوی فرعی: ipv6 nd prefix/

اطلاعات پیشوند ارسال شده در پیام های RA که توسط پیکربندی خودکار آدرس بدون حالت استفاده می شود.

توجه:  فرآیند پیکربندی خودکار فقط برای هاست ها و نه روترها اعمال می شود.

خواص

ویژگیشرح
6to4-interface (none | string; Default: )اگر این گزینه مشخص شده باشد، این پیشوند با آدرس IPv4 نام اینترفیس ترکیب می شود تا یک پیشوند معتبر 6to4 تولید کند. 16 بیت اول این پیشوند در سال 2002 جایگزین شد و 32 بیت بعدی این پیشوند با آدرس IPv4 اختصاص داده شده به نام اینترفیس در زمان پیکربندی جایگزین خواهد شد. 80 بیت باقی مانده از پیشوند (شامل شناسه SLA) همانطور که در فایل پیکربندی مشخص شده است شناسایی می شود.
autonomous (yes | no; Default: yes)هنگامی که تنظیم می شود، نشان می دهد که این پیشوند می تواند برای پیکربندی آدرس مستقل استفاده شود. در غیر این صورت، اطلاعات پیشوند بی سر و صدا نادیده گرفته می شود.
comment (string; Default: )توضیحات توصیفی
disabled (yes | no; Default: no)اینکه آیا یک مورد غیرفعال است یا خیر. به طور پیش فرض، ورودی فعال است.
on-link (yes | no; Default: yes)هنگامی که تنظیم می شود، نشان می دهد که این پیشوند می تواند برای تعیین روی لینک استفاده شود. هنگامی که تنظیم نشده باشد، پکت شناسایی هیچ اظهارنظری در مورد ویژگی های روی لینک یا خارج از لینک پیشوند نمی کند. به عنوان مثال، پیشوند ممکن است برای پیکربندی آدرس استفاده شود که برخی از آدرس‌های متعلق به پیشوند روی لینک و برخی دیگر خارج از لینک هستند.
preferred-lifetime (infinity | time; Default: 1w)بازه زمانی (نسبت به زمان ارسال بسته) که پس از آن آدرس تولید شده “منسوخ” می شود. منسوخ شده فقط برای اتصالات موجود استفاده می شود و تا پایان  عمر معتبر  قابل استفاده است . 
prefix (ipv6 prefix; Default: ::/64)پیشوندی که از آن پیکربندی خودکار آدرس بدون حالت، آدرس معتبر را تولید می کند.
valid-lifetime (infinity | time; Default: 4w2d)مدت زمانی (نسبت به زمانی که بسته ارسال می شود) که یک آدرس در حالت معتبر باقی می ماند. طول  عمر معتبر  باید بیشتر یا مساوی با  طول عمر ترجیحی باشد . 
interface (string; Default: )نام اینترفیسی که پیکربندی خودکار بدون حالت روی آن اجرا خواهد شد.

لیست همسایه ها

منوی فرعی: ipv6 neighbor/

لیست تمام نودهای پیداشده توسط پروتکل کشف همسایه IPv6 (کش همسایه).

ویژگی های فقط خواندنی

ویژگیشرح
address (ipv6 address)لینک – آدرس محلی نود.
comment (string) 
interface (string)رابطی که نود روی آن شناسایی شد.
mac-address (string)آدرس مک نود کشف شده.
router (yes | no)آیا نود کشف شده یک روتر است
status (noarp | incomplete | stale | reachable | delay | probe)

وضعیت ورودی ذخیره شده:

  • noarp  – ورودی همسایه معتبر است. هیچ تلاشی برای تأیید اعتبار این ورودی انجام نخواهد شد، اما پس از پایان عمر آن می توان آن را حذف کرد
  • incomplete – پیدا کردن آدرس در حال انجام است و آدرس لینک لایر همسایه هنوز مشخص نشده است.
  • reachable   – شناخته شده است که همسایه اخیراً در دسترس بوده است (در ده ها ثانیه پیش).
  • stale – همسایه دیگر قابل دسترس نیست، اما تا زمانی که ترافیک به همسایه ارسال نشود، نباید تلاشی برای تأیید دسترسی آن انجام شود.
  • delay – همسایه دیگر قابل دسترسی نیست و اخیراً ترافیک به همسایه ارسال شده است، کاوشگرها برای مدت کوتاهی به تأخیر می افتند تا به پروتکل لایه بالایی فرصتی برای تأیید دسترس پذیری داده شود.
  • probe – همسایه دیگر قابل دسترسی نیست و کاوشگرهای درخواست همسایه، unicast برای تأیید قابلیت دسترسی ارسال می کنند.

مثال ها

نمونه پیکربندی خودکار بدون حالت

				
					[admin@MikroTik] > ipv6 address print
Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
# ADDRESS INTERFACE ADVERTISE
0 G 2001:db8::1/64 ether1 yes
				
			

به عنوان مثال،  پرچم تبلیغ  فعال است که نشان می دهد ipv6 nd prefix/ ورودی پویا اضافه شده است.

				
					[admin@MikroTik] > ipv6 nd prefix print
Flags: X - disabled, I - invalid, D - dynamic
0 D prefix=2001:db8::/64 interface=ether1 on-link=yes autonomous=yes
 valid-lifetime=4w2d preferred-lifetime=1w
				
			

در میزبانی که مستقیماً به روتر متصل است، می بینیم که یک آدرس اضافه شده است. آدرس شامل قسمت پیشوند (64 بیت اول) است که پیشوند پکت شناسایی پیشوند را می گیرد و قسمت میزبان (64 بیت آخر) که به طور خودکار از آدرس  local MAC تولید می شود:

				
					atis@atis-desktop:~$ ip -6 addr
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:db8::21a:4dff:fe56:1f4d/64 scope global dynamic
 valid_lft 2588363sec preferred_lft 601163sec
inet6 fe80::21a:4dff:fe56:1f4d/64 scope link
valid_lft forever preferred_lft forever
				
			

میزبان پیشوند 2001:db8::/64 را از روتر دریافت کرده و آدرسی را با آن پیکربندی کرده است.  

همچنین گزینه ای برای توزیع مجدد اطلاعات سرور DNS با استفاده از RADVD وجود دارد :  

				
					[admin@MikroTik] > ip dns set server=2001:db8::2
[admin@MikroTik] > ip dns print servers: 2001:db8::2
 ...
[admin@MikroTik] > ipv6 nd set [f] advertise-dns=yes
				
			

برای استفاده از اطلاعات DNS تبلیغ شده، به یک نرم افزار در حال اجرا سمت سرویس گیرنده با پشتیبانی از Router Advertisement DNS نیاز دارید.

در توزیع‌های لینوکس اوبونتو/دبیان می‌توانید بسته rdnssd را نصب کنید که قادر به دریافت آدرس‌های DNS تبلیغ‌شده است.  

				
					mrz@bumba:/$ sudo apt-get install rdnssd
				
			
				
					mrz@bumba:/$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
 # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 nameserver 2001:db8::2
 
mrz@bumba:/$ ping6 www.mikrotik.com
PING www.mikrotik.com(2a02:610:7501:1000::2) 56 data bytes
 64 bytes from 2a02:610:7501:1000::2: icmp_seq=1 ttl=61 time=2.11 ms
 64 bytes from 2a02:610:7501:1000::2: icmp_seq=2 ttl=61 time=1.33 ms
^C
 --- www.mikrotik.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.334/1.725/2.117/0.393 ms
mrz@bumba:/$