مقدمه
IPv6 جدیدترین نسخه پروتکل IP است که کل اینترنت برای اتصال به سایر مکان ها به آن متکی است (پروتکل IP کمی ترکیب زائدی است زیرا IP مخفف پروتکل اینترنت است ، اما ما از آن استفاده میکنیم چون راحت است). در حالی که IPv4 در بسیاری از مناطق جهان هنوز در حال استفاده است ، فضای آدرس IPv4 با سرعت زیادی مصرف می شود و به اندازه کافی بزرگ نیست که بتواند استقرار سریع دستگاه های آماده اینترنت را حفظ کند.
IPv6 به دنبال حل این مشکلات است. در کنار پیشرفت های کلی در پروتکل ، بدیهی ترین مزیت استفاده از آدرس های IPv6 این است که فضای آدرس بسیار بیشتری دارد. در حالی که IPv4 مجاز به 2 ^ 32 آدرس است (و برخی از آن ها برای اهداف خاص ارائه میشوند) ، فضای آدرس IPv6 امکان دسترسی به آدرسهای 2 ^ 128 را فراهم می کند ، که این یک افزایش باورنکردنی است.
اگرچه IPv6 فرصتهای زیادی را فراهم میکند و بسیاری از مسائل طولانی مدت را حل می کند ، در صورتی که به استفاده از IPv4 منحصر به فرد عادت دارید ، نیاز به کمی تنظیمات در برخی از پیکربندی های شبکه روتین خود دارید. در این راهنما ، ما در مورد برخی از رقبای IPv6 و برخی از ابزارها و امکانات محبوب IPv4 صحبت خواهیم کرد و در مورد نحوه پیکربندی برخی از سرویس های محبوب برای استفاده از IPv6 صحبت خواهیم کرد.
تشخیص شبکه های فرعی با IPv6
برخی از ساده ترین ابزارهای مورد استفاده برای تشخیص مشکلات شبکه با توجه به IPv4 ایجاد شدند. برای پرداختن به این موضوع ، می توانیم از مشابه های IPv6 هنگام کار با ترافیک IPv6 استفاده کنیم.
اول از همه ، برای دیدن آدرس های IPv6 تنظیم شده فعلی برای سرور مجازی خود ، می توانید از ابزار iproute2 برای نشان دادن آدرس های پیکربندی شده فعلی استفاده کنید:
ip -6 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2400:6180:0:d0::41f/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::601:15ff:fe43:b201/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::601:15ff:fe43:b202/64 scope link
valid_lft forever preferred_lft forever

برای چاپ جدول مسیریابی IPv6، می توانید با وارد کردن چیزی شبیه به این ، از netstat استفاده کنید:

netstat -A inet6 -rn
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
2400:6180:0:d0::/64 :: U 256 0 1 eth0
fe80::/64 :: U 256 0 0 eth1
fe80::/64 :: U 256 0 0 eth0
::/0 2400:6180:0:d0::1 UG 1024 0 0 eth0
::/0 :: !n -1 1 90 lo
::1/128 :: Un 0 1 20 lo
2400:6180:0:d0::41f/128 :: Un 0 1 86 lo
fe80::601:15ff:fe43:b201/128 :: Un 0 1 75 lo
fe80::601:15ff:fe43:b202/128 :: Un 0 1 0 lo
ff00::/8 :: U 256 0 0 eth1
ff00::/8 :: U 256 0 0 eth0
::/0 :: !n -1 1 90 lo

اگر ابزار iproute2 را ترجیح می دهید ، می توانید با تایپ کردن دستور زیر اطلاعات مشابه را بدست آورید:
ip -6 route show
2400:6180:0:d0::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth1 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
default via 2400:6180:0:d0::1 dev eth0 metric 1024

اکنون که می دانید چگونه برخی از اطلاعات IPv6 خود را بدست آورید ، بگذارید کمی در مورد نحوه استفاده از برخی از ابزارهایی که با IPv6 کار می کنند ، بیاموزیم.
دستور ping فراگیر در واقع مخصوص IPv4 است. نسخه IPv6 از این دستور ، که دقیقاً یکسان است اما برای آدرس های IPv6 کار می کند ، به طرز شگفت آور ping6 نامگذاری شده است.
ping6 -c 3 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.022 ms

— ::1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.021/0.023/0.028/0.006 ms

همانطور که مشاهده می کنید ، این دقیقاً مطابق آنچه انتظار می رود عمل می کند ، تنها تفاوت آن در نسخه پروتکل برای آدرس دهی است.
ابزاری دیگر که میتوان به آن اعتماد کنید ، traceroute است. یک معادل IPv6 نیز موجود است:
traceroute6 google.com
traceroute to google.com (2404:6800:4003:803::1006) from 2400:6180:0:d0::41f, 30 hops max, 24 byte packets
1 2400:6180:0:d0:ffff:ffff:ffff:fff1 (2400:6180:0:d0:ffff:ffff:ffff:fff1) 0.993 ms 1.034 ms 0.791 ms
2 2400:6180::501 (2400:6180::501) 0.613 ms 0.636 ms 0.557 ms
3 2400:6180::302 (2400:6180::302) 0.604 ms 0.506 ms 0.561 ms
4 10gigabitethernet1-1.core1.sin1.he.net (2001:de8:4::6939:1) 6.21 ms 10.869 ms 1.249 ms
5 15169.sgw.equinix.com (2001:de8:4::1:5169:1) 1.522 ms 1.205 ms 1.165 ms
6 2001:4860::1:0:337f (2001:4860::1:0:337f) 2.131 ms 2.164 ms 2.109 ms
7 2001:4860:0:1::523 (2001:4860:0:1::523) 2.266 ms 2.18 ms 2.02 ms
8 2404:6800:8000:1c::8 (2404:6800:8000:1c::8) 1.741 ms 1.846 ms 1.895 ms

احتمالا با دستور tracepath آشنایی دارید. این دستور مثالی از دستورهای دیگر برای نسخه IPv6 را دنبال میکند.
tracepath6 ::1
1?: [LOCALHOST] 0.045ms pmtu 65536
1: ip6-localhost 0.189ms reached
1: ip6-localhost 0.110ms reached
Resume: pmtu 65536 hops 1 back 64

اگر نیاز به نظارت بر ترافیک از زمان ورود آن به دستگاه خود دارید ، برنامه tcpdump اغلب استفاده می شود. ما می توانیم از این ابزار استفاده کنیم تا فقط ترافیک IPv6 را با فیلتر کردن آن با عبارت ip6 یا proto ipv6 پس از گزینه های خود ، نشان دهیم.
به عنوان مثال ، می توانیم ترافیک در حال جریان IPv6 را به سرعت با فراخوانی ابزاری برای گرفتن اطلاعاتی که علاقه مند به آن هستیم ، اندازه گیری کنیم. ما می توانیم از این دستور که از این لینک گرفته شده است ، استفاده کنیم تا فقط خلاصه ای از اطلاعات را جمع آوری کنیم تا از تأخیر در خروجی جلوگیری کنیم:
tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6

بررسی اطلاعات DNS IPv6
با استفاده از ابزارهای معمول می توانید به راحتی اطلاعات DNS را برای دامنه های خود بررسی کنید. تفاوت اصلی این است که شما احتمالاً از سوابق AAAA درخواست خواهید کرد ، که برای آدرس های IPv6 به جای سوابق A استفاده می شوند ، که فقط برای نقشه برداری IPv4 استفاده می شوند.
برای بازیابی سوابق آدرس IPv6 برای یک دامنه ، می توانید سوابق AAAA را به سادگی درخواست کنید. با دستور host ، می توانید چنین کاری را انجام دهید:
host -t AAAA google.com
google.com has IPv6 address 2404:6800:4003:803::1004

اگر ترجیح می دهید از Dig استفاده کنید ، می توانید با استفاده از این دستور نتایج مشابهی کسب کنید:
dig google.com AAAA
; <<>> DiG 9.8.1-P1 <<>> google.com AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14826
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN AAAA

;; ANSWER SECTION:
google.com. 299 IN AAAA 2404:6800:4003:803::1006

;; Query time: 5 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Tue Apr 1 13:59:23 2014
;; MSG SIZE rcvd: 56

همانطور که مشاهده می کنید ، بررسی اینکه DNS شما به درستی برای دامنه های تان کار میکند ، به راحتی کار با آدرس های IPv6 است.
خدمات شبکه با IPv6
بسیاری از خدمات معمول شبکه شما باید توانایی اداره ترافیک IPv6 را داشته باشند. بعضی اوقات ، آنها به فلگ ها یا ترکیبات خاص نیاز دارند، و در موارد دیگر ، عملکرد جایگزینی را به طور خاص برای IPv6 ارائه می دهند.
پیکربندی SSH
برای SSH ، می توان پس زمینه را برای ردیابی آدرس IPv6 پیکربندی کرد. و در فایل پیکربندی که می توانید با آن باز کنید کنترل می شود:
sudo nano /etc/ssh/sshd_config

ListenAddress مشخص می کند که کدام آدرس SSH به آن متصل خواهد شد. برای آدرس های IPv4 ، اینگونه به نظر می رسد:
ListenAddress 111.111.111.111:22

این دستور به دنبال آدرس IPv4 یعنی 111.111.111.111 در درگاه 22 میباشد. برای یک آدرس IPv6 ، می توانید با قرار دادن آدرس در براکت های مربع ، همین کار را انجام دهید:
ListenAddress [1341:8954:a389:33:ba33::1]:22

این کار به SSH daemon می گوید که به آدرس 1341:8954:a389:33:ba33::1 در پورت 22 توجه کند. می توانید با تایپ کردن دستور زیر به آن بگویید که تمام آدرسهای IPv6 موجود را بررسی کند:
ListenAddress ::

به یاد داشته باشید که Daemon را بعد از ایجاد تغییرات مجدد بارگذاری کنید:
sudo service ssh restart

از طرف مشتری ، اگر Daemon که به آن وصل می شوید به گونه ای پیکربندی شده است تا با استفاده از IPv4 و IPv6 کار کند ، می توانید مشتری را وادار کنید که تنها با استفاده از فلگ -6 از IPv6 استفاده کند ، مانند این:
ssh -6 username@host.com

پیکربندی سرور وب
شبیه به SSH daemon، سرورهای وب نیز باید برای نظارت بر آدرس های IPv6 تنظیم شوند.
در Apache می توانید سرور مجازی را تنظیم کنید تا با استفاده از این دستور زیر به درخواست های آدرس خاص IPv6 پاسخ دهد:
Listen [1341:8954:a389:33:ba33::1]:80

این دستور به سرور مجازی می گوید که به این آدرس خاص در پورت 80 گوش کند. ما می توانیم این را با یک آدرس IPv4 ترکیب کنیم تا انعطاف پذیری بیشتری ایجاد کنیم، مانند دستور زیر:
Listen 111.111.111.111:80
Listen [1341:8954:a389:33:ba33::1]:80

در عمل ، اگر می خواهید به کلیه پروتکل های موجود در درگاه 80 در همه رابط ها گوش دهید ، می توانید از این دستور استفاده کنید:
Listen 80

در سطح virtualhost ، می توانید آدرس IPv6 را نیز متمایز کنید. در اینجا ، می بینید که میتوان virtualhost را به گونه ای پیکربندی کرد که با آدرس IPv4 و یک آدرس IPv6 مطابقت داشته باشد:

. . .

به یاد داشته باشید که برای ایجاد تغییرات سرویس را مجدداً راه اندازی کنید:
sudo service apache2 restart

اگر ترجیح می دهید از Nginx به عنوان سرور وب خود استفاده کنید ، می توانیم تنظیمات مشابهی را پیاده سازی کنیم. برای قسمت گوش دادن ، می توانیم از این دستور برای ترافیک IPv6 استفاده کنیم:
sudo service apache2 restart

در لینوکس ، این امر در واقع ترافیک IPv4 را در پورت 80 نیز امکان پذیر می کند زیرا به طور خودکار درخواست های IPv4 را به آدرس IPv6 نگاشت می کند. در واقع شما را از متمایز کردن آدرس IPv6 و آدرس IPv4 به صورت جداگانه بازمیدارد:
listen [1341:8954:a389:33:ba33::1]:80;
listen 111.111.111.111:80;

این دستور منجر به خطایی با این مضمون میشود که پورت در حال حاضر به سرویس دیگری متصل است. اگر می خواهید از دستورالعمل های جداگانه ای مانند این استفاده کنید ، باید این عملکرد را با استفاده از sysctl غیر فعال کنید:
sysctl -w net.ipv6.bindv6only=1

با افزودن آن به /etc/sysctl.conf می توانید مطمئن شوید که بطور خودکار در بوت اجرا می شود:
sudo nano /etc/sysctl.conf
. . .
net.ipv6.bindv6only=1

پس از آن ، می توانید با اضافه کردن فلگ ipv6only=on به دستور گوش دادن IPv6 ، از پیکربندی مشابه که قبلا ناموفق بود استفاده کنید:
listen [1341:8954:a389:33:ba33::1]:80 ipv6only=on;
listen 111.111.111.111:80;

مجدداً Nginx را ریستارت کنید تا تغییرات ایجاد شود:
sudo service nginx restart

پیکربندی فایروال
اگر عادت دارید که قوانین فایروال خود را با استفاده از فیلتر شبکه مانند iptables پیکربندی کنید، خبر خوش برای شما این که یک ابزار معادل با نام ip6tables وجود دارد.
در اینجا راهنمایی داریم که نشان میدهد چگونه می توان iptables را برای اوبونتو پیکربندی کرد.
برای متغیر IPv6 ، می توانید جهت مدیریت قوانین فیلتر بسته IPv6 فرمان را با ip6tables جایگزین کنید. به عنوان مثال ، برای لیست کردن قوانین IPv6 ، می توانید تایپ کنید:
sudo ip6tables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

اگر از ابزار ufw استفاده می کنید، جای تبریک دارد ، قبلاً این کار را انجام داده اید! ابزار ufw هر دو بخش را به طور هم زمان پیکربندی می کند مگر اینکه خلاف آن تعیین شده باشد. شاید لازم باشد برای آدرسهای خاص IPv6 خود قوانینی اضافه کنید ، اما نیازی به استفاده از ابزار دیگری نخواهید داشت.
در اینجا می توانید درباره نحوه استفاده از ufw اطلاعات بیشتری کسب کنید
پیکربندی رپر TCP
اگر از رپر (فیلتر) های TCP برای کنترل دسترسی به سرور مجازی خود از طریق فایل های /etc/hosts.allow و /etc/hosts.deny استفاده می کنید ، می توانید به راحتی از syntax IPv6 برای مطابقت با قوانین منبع خاص استفاده کنید.
به عنوان مثال ، می توانید با وارد کردن ویرایش فایل /etc/hosts.allow و افزودن دستور زیر فقط به آدرس IPv4 و آدرس IPv6 امکان اتصال از طریق SSH را بدهید.
sudo nano /etc/hosts.allow
. . .
sshd: 111.111.0.0/255.255.254.0, [1341:8954:a389:33::]/64

همانطور که مشاهده می کنید ، تنظیم قوانین کنونی رپر TCP برای اعمال در آدرس های IPv6 بسیار آسان است. می توانید در اینجا درباره نحوه قالب بندی آدرس های IP و زیر شبکه ها اطلاعات بیشتری کسب کنید.
نتیجه
خوشبختانه اکنون میدانید که استفاده از IPv6 یا بهره مندی از IPv6 علاوه بر IPv4 روشی نسبتا سرراست است.
شما باید بطور مشخص هر سرویس شبکه ای را که برای تحقیق درمورد تغییرات اضافی لازم برای استفاده صحیح از منابع IPv6 استفاده می کنید را بررسی نمایید. با این حال ، اکنون شما باید با اساسی ترین امکانات و خدمات خود راحت تر با IPv6 کار کنید.

برچسب‌ها:, , , ,