IPv6 جدیدترین نسخه پروتکل IP است که کل اینترنت برای اتصال به مکانهای مختلف به آن متکی هستند. IP مخفف پروتکل اینترنت است که چند دهه بهعنوان یک استاندارد در نظر گرفته میشود. اگرچه IPv4 هنوز در بسیاری از مناطق جهان مورد استفاده قرار میگیرد، فضای آدرس IPv4 بهسرعت در حال اتمام است و ظرفیت آن برای استقرار انبوهی از دستگاههای متصل به اینترنت در چند سال آینده جوابگو نخواهد بود. IPv6 دقیقا برای حل این مشکل به میدان آمده است. علاوهبر بهبودهای کلی در پروتکل، بارزترین مزیت استفاده از آدرسهای IPv6 این است که فضای آدرس بسیار بزرگتری را ارائه میدهد. درحالیکه در IPv4 امکان ایجاد 2 به توان 32 آدرس مختلف امکانپذیر است (که برخی از آنها نیز برای اهدافی خاص رزرو شدهاند)، فضای ساخت آدرس در IPv6 عدد به مراتب بزرگتر 2 به توان 128 آدرس است که بهطور چشمگیری بیشتر است.
IPv6 فرصتهای زیادی را فراهم و بسیاری از مشکلات قدیمی را حل میکند، اما اگر هنوز از IPv4 استفاده میکنید برای مهاجرت به استاندارد جدیدتر باید برخی از تنظیمات شبکه فعلی خود را تغییر بدهید. در این مقاله قصد داریم نحوه کانفیگ کردن IPv6 بر روی خرید vps یا VPS را آموزش بدهیم.
کانفیگ کردن IPv6 بر روی سرور مجازی لینوکس
برای پیکربندی IPv6 بر روی سرور مجازی لینوکس چندین روش وجود دارد:
ifup / ifdown : روشی جدید برای کانفیگ کردن اینترفیسها بر روی سرورهای مبتنیبر توزیع Debian
iproute : استفاده از دستور ip
ifconfig / route : ابزارهای اصلی کانفیگ شبکه
پیشنهاد میکنیم که از روش ifup / ifdown استفاده کنید.
نحوه فعالسازی و غیرفعالسازی IPv6
برای فعالسازی IPv6 مراحل زیر را دنبال کنید:
- با دسترسی روت لاگین کنید.
- سه خط زیر را به فایل «/etc/sysctl.conf» اضافه کنید:
net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.all.disable_ipv6 = 0
- فایل را ذخیره و کامپیوتر را با استفاده از دستور زیر ریاستارت کنید:
$ sudo reboot
برای غیرفعالسازی IPv6 مراحل زیر را دنبال کنید:
- با دسترسی روت لاگین کنید.
- سه خط زیر را به فایل «/etc/sysctl.conf» اضافه کنید:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
- فایل را ذخیره و کامپیوتر را با استفاده از دستور زیر ریستارت کنید:
$ sudo reboot
توزیعهای مبتنیبر Red Hat
اگر از یک سیستم مبتیبر Red Hat استفاده میکنید، میتوانید با دنبال کردن گامهای زیر، IPv6 را غیرفعال کنید:
- پنجره ترمینال را باز کنید.
- بهعنوان کاربر روت وارد شوید.
- دستورات زیر را تایپ کنید:
sysctl -w net.ipv6.conf.all.disable_ipv6=1 sysctl -w net.ipv6.conf.default.disable_ipv6=1 sysctl -w net.ipv6.conf.tun0.disable_ipv6=1
- برای فعالسازی مجدد IPv6 میتوانید از دستورات زیر استفاده کنید:
sysctl -w net.ipv6.conf.all.disable_ipv6=0 sysctl -w net.ipv6.conf.default.disable_ipv6=0 sysctl -w net.ipv6.conf.tun0.disable_ipv6=0 sysctl -p
توزیعهای مبتنیبر Debian
اگر از یک سرور مانند سرور مجازی ایران با توزیع دبیان استفاده میکنید، برای غیرفعالسازی IPv6 مراحل زیر را دنبال کنید:
- پنجره ترمینال را باز کنید.
- این دستور را تایپ کنید:
sudo nano /etc/sysctl.conf
- دستورات زیر را به انتهای فایل اضافه کنید:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.tun0.disable_ipv6 = 1
- فایل را ذخیره کنید و ببندید.
- دستگاه را ریبوت کنید.
- برای فعالسازی مجدد IPv6 کافیست دستوراتی که در مرحله قبلی به فایل sysctl.conf اضافه کردید را حذف و دستگاه را ریبوت کنید.
کانفیگ کردن IPv6 بر روی سرور مجازی ویندوز
اگر یک سرور مجازی امارات یا سایر لوکیشنها را خریداری کردهاید و قصد دارید از آدرسهای IPv6 استفاده کنید، در این بخش میتوانید با پیکربندی IPv6 برای سیستم عامل ویندوز آشنا شوید.
فعالسازی و غیرفعالسازی IPv6
برای فعالسازی و غیرفعالسازی IPv6 در ویندوز مراحل زیر را دنبال کنید:
- به بخش Settings ویندوز بروید.
- بخش Network & Internet را انتخاب کنید.
- در این پنجره از بخش Advanced network settings بر روی Change adapter options کلیک کنید.
- در این پنجره، بر روی اتصال شبکهای که قصد دارید IPv6 را برای آن فعال کنید دو بار کلیک کنید.
- در پنجرهای که باز میشود، بر روی دکمه Properties کلیک کنید.
- در نهایت، در پنجره Properties میتوانید گزینه Internet Protocol version 6 را فعال یا غیرفعال کنید.
- بر روی دکمه Ok کلیک کنید تا پنجره Properties بسته شود.
کانفیگ کردن اینترفیس
- به بخش Settings ویندوز بروید.
- بخش Network & Internet را انتخاب کنید.
- در این پنجره از بخش Advanced network settings بر روی Change adapter options کلیک کنید.
- در این پنجره، بر روی اتصال شبکهای که قصد داریم IPv6 را برای آن فعال کنیم دو بار کلیک میکنیم.
- در پنجرهای که باز میشود، بر روی دکمه Properties کلیک میکنیم.
- با کلیک بر روی گزینه Internet Protocol version 6 دکمه Properties در قسمت پایینی فعال میشود.
- بر روی دکمه Properties کلیک کنید تا به پنجره پیکربندی باز شود. در این پنجره باید گزینه «Use the following IPv6 address» را فعال کنید و سپس برای سه کادر زیر مقادیر مناسب را وارد کنید:
IPv6 address Subnet prefix length Default gateway
چطور از ابزارهای رایج برای آدرسهای 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
همانطور که میبینید، این دستور دقیقا طبق انتظار کار میکند و تنها تفاوت آن در نسخه پروتکلی است که برای آدرسدهی استفاده میشود.
ابزار دیگری که ممکن است زیاد از آن استفاده کنید tracerroute است که معادل آن برای 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» آشنایی داشته باشید. در زیر میتوانید نحوه استفاده از آن را ببینید:
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 یا proto ipv6 فیلتر کنیم تا فقط ترافیک IPv6 را نمایش دهد.
بهعنوان مثال، ما میتوانیم ترافیک IPv6 با جریان سریع را بهراحتی اندازهگیری کنیم و به ابزار بگوییم که فقط اطلاعاتی را که ما به آن علاقهمندیم ثبت کند.
tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6
بررسی اطلاعات IPv6 DNS
با استفاده از ابزارهای معمولی میتوانید بهراحتی اطلاعات 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
همانطور که میبینید هنگام استفاده از آدرسهای IPv6، بررسی اینکه DNS بهخوبی برای دامنه شما ثبت شده به همان سادگی استاندارد IPv4 است.
سرویسهای شبکه با IPv6
اکثر خدمات شبکه رایج شما باید توانایی مدیریت ترافیک IPv6 را داشته باشند. گاهی اوقات، آنها به فلگها یا سینتکس خاصی نیاز دارند و گاهی اوقات، آنها یک شیوه جایگزین و مختص IPv6 را برای پیادهسازی ارائه میدهند.
پیکربندی SSH
برای SSH، ابزار daemon را میتوان برای کار کردن با یک آدرس IPv6 پیکربندی کرد. بهاینمنظور باید فایل پیکربندی (Configuration) را با دستوری زیر باز کنید:
sudo nano /etc/ssh/sshd_config
دستور «ListenAddress» مشخص میکند که کدام آدرس قرار است به SSH daemon پیوند بخورد. برای آدرسهای IPv4، این دستور به شکل زیر نوشته میشود:
ListenAddress 111.111.111.111:22
در این دستور، SSH daemon به آدرس «111.111.111.111» روی پورت 22 مرتبط میشود. برای یک آدرس IPv6، شما میتوانید همین کار را انجام دهید با این تفاوت که آدرس را باید در بین علامت «] [» قرار دهید:
ListenAddress [1341:8954:a389:33:ba33::1]:22
این دستور به SSH daemon میگوید به آدرس 1341:8954:a389:33:ba33::1 بر روی پورت 22 توجه کند. شما میتوانید با دستور زیر از SSH daemon بخواهید به تمام آدرسهای IPv6 موجود توجه کند:
ListenAddress ::
بهخاطر داشته باشید که با استفاده از دستور زیر هربار که تغییراتی را ایجاد کردید، daemon را ریستارت کنید:
sudo service ssh restart
در سمت کلاینت، اگر daemon ای که قرار است به آن متصل شوید طوری پیکربندی شده است که به آدرسهای IPv4 و IPv6 توجه کند، میتوانید با استفاده از فلگ «-6» کلاینت را مجبور کنید که فقط از آدرسهای IPv6 استفاده کند. به دستور زیر توجه کنید:
ssh -6 [email protected]
پیکربندی وب سرور
مشابه 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 وجود دارد:
<VirtualHost 111.111.111.111:80, [1341:8954:a389:33:ba33::1]:80> . . . </VirtualHost>
بهخاطر داشته باشید که برای اعمال تغییرات، سرویس را ریاستارت کنید:
sudo service apache2 restart
اگر ترجیح میدهید از وب سرور Nginx بهعنوان وب سرور استفاده کنید، میتوانید پیکربندی مشابهی را انجام دهید. برای اینکه مشخص کنید Nginx فقط به یک آدرس IPv6 توجه کند، میتوانید از دستور زیر استفاده کنید:
listen [1341:8954:a389:33:ba33::1]:80;
در لینوکس، این دستور درواقع ترافیک IPv4 بر روی پورت 80 را فعال میکند، چون درخواستهای ارائهشده برای آدرس IPv4 بهطور خودکار به آدرس IPv6 تبدیل میشود. بهاینترتیب، نیازی نیست بهطور مجزا و مانند زیر به یک آدرس IPv6 و IPv4 اشاره کنید:
listen [1341:8954:a389:33:ba33::1]:80; listen 111.111.111.111:80;
با اجرای این دستور با خطایی مواجه میشوید که میگوید پورت 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
پیکربندی فایروال
اگر برای پیکربندی قوانین فایروال از فرانتاندهای پیکربندی Netfilter مانند «iptables» استفاده میکردید، خوب است بدانید که برای آدرسهای IPv6 نیز یک ابزار معادل تحت عنوان «ip6tables» در نظر گرفته شده است.
برای استفاده از این دستور کافیست بهجای iptables از 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
جمعبندی
در این مطلب تقریبا هر آنچه که برای کانفیگ کردن IPv6 بر روی یک سرور مجازی نیاز دارید را ارائه کردیم. امیدواریم که متوجه شده باشید انتقال به پروتکل IPv6 فرایند نسبتا سادهای است که درعینحال مزایایی را در دسترس شما قرار میدهد.
شما باید بهطور خاص هر سرویس شبکهای را که استفاده میکنید بررسی کنید تا متوجه شوید آیا تغییرات پیکربندی اضافی برای استفاده صحیح از منابع IPv6 شما لازم است یا خیر. بههرحال، اگر مواردی که در این مقاله آموزشی ارائه شد دنبال کنید، اکنون باید قادر باشید از IPv6 در ابتداییترین ابزارها و سرویسهای خود استفاده کنید.