بلاگ/IPv6 روی سرور مجازی: راه‌اندازی و تست
به‌روز شده

IPv6 روی سرور مجازی: راه‌اندازی و تست

1405/08/060 بازدید
IPv6 روی سرور مجازی: راه‌اندازی و تست

IPv6 روی سرور مجازی: راه‌اندازی و تست

آدرس‌های IPv4 رو به اتمام هستند و بیشتر سرویس‌دهنده‌های ابری الان به‌صورت پیش‌فرض یک آی‌پی IPv6 هم کنار IPv4 به سرور مجازی می‌دهند. این مقاله نشان می‌دهد چطور آی‌پی IPv6 تخصیص‌یافته به سرور مجازی را پیدا کنید، آن را در Netplan تنظیم کنید، با ping6 تست کنید و در فایروال بازش کنید.

چرا IPv6 روی سرور مجازی مهم است

خیلی از شبکه‌ها و سرویس‌دهنده‌ها (از جمله بعضی موبایل‌نت‌ها و شبکه‌های سازمانی) دیگر فقط IPv6 پشتیبانی می‌کنند یا اولویت را به آن می‌دهند. اگر سروری که روی آن یک API یا سایت اجرا می‌کنید فقط IPv4 داشته باشد، کلاینت‌های IPv6-only باید از NAT64 عبور کنند که هم تاخیر اضافه می‌کند و هم همیشه قابل‌اعتماد نیست. داشتن یک آی‌پی IPv6 مستقیم این مسیر میانی را حذف می‌کند.

یک فایده عملی دیگر: فضای آدرس IPv6 خیلی بزرگ‌تر است، پس وقتی چند سرویس یا کانتینر روی یک سرور دارید، می‌توانید بدون نگرانی از کمبود آی‌پی آن‌ها را جدا آدرس‌دهی کنید.

IPv6 در سرور مجازی OVH آلمان آریانت

سرورهای مجازی آریانت روی زیرساخت OVH در فرانکفورت، آلمان، همراه با یک آی‌پی IPv4 عمومی و یک آی‌پی IPv6 عمومی تحویل داده می‌شوند. این تخصیص از همان لحظه ساخت سرور انجام می‌شود، بدون این‌که نیاز به تماس با پشتیبانی یا فعال‌سازی جدا باشد. هر دو آی‌پی را می‌توانید از همان پنل مدیریت سرور ببینید.

مدیریت فایروال، کلیدهای SSH، شبکه خصوصی، ریورس DNS و حتی مود نجات با کنسول VNC هم از همین پنل در دسترس است — یعنی تنظیم IPv6 کنار همین امکانات دیگر سرور قرار می‌گیرد، نه یک فرآیند جدا.

بررسی آی‌پی IPv6 تخصیص‌یافته

قبل از هر تنظیمی ببینید سرور اصلا چه آدرس IPv6 گرفته. روی اوبونتو یا دبیان این دستور کافی است:

ip -6 addr show

خروجی باید چیزی شبیه این را نشان دهد (آدرس‌ها نمونه هستند):

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    inet6 2001:41d0:xxxx:xxxx::1/128 scope global
    inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link

خط اول با scope global همان آی‌پی IPv6 عمومی سرور است. خط دوم (scope link) یک آدرس لوکال است که هر اینترفیس به‌صورت خودکار دارد و ربطی به دسترسی از بیرون ندارد — اگر این دو را با هم اشتباه بگیرید، فکر می‌کنید IPv6 درست کار نمی‌کند در حالی که فقط آدرس اشتباه را تست کرده‌اید.

راه‌اندازی IPv6 با Netplan

نمودار تنظیم dual-stack IPv4 و IPv6 با Netplan روی سرور مجازی

روی اوبونتو ۲۴.۰۴ تنظیمات شبکه با Netplan مدیریت می‌شود و فایل‌های پیکربندی معمولا در مسیر /etc/netplan/ هستند (نام رایج 50-cloud-init.yaml). ساده‌ترین حالت این است که هم DHCP نسخه ۴ و هم نسخه ۶ را روی اینترفیس فعال کنید:

network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: true
      dhcp6: true
      accept-ra: true

در بیشتر موارد همین کافی است و سرور هم IPv4 و هم IPv6 را از شبکه OVH می‌گیرد. اگر آی‌پی IPv6 ثابت است و باید دستی تنظیم شود (مثلا بعد از تغییر دستی روی سرور)، آدرس و مسیر پیش‌فرض را این‌طور می‌نویسید:

network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: true
      addresses:
        - 2001:41d0:xxxx:xxxx::1/128
      routes:
        - to: ::/0
          via: fe80::1
          on-link: true

نکته‌ای که اکثرا باعث گیج شدن می‌شود: گیت‌وی IPv6 در شبکه‌های ابری معمولا یک آدرس link-local است (با fe80:: شروع می‌شود)، به همین دلیل باید on-link: true را بگذارید؛ وگرنه Netplan مسیر را رد می‌کند چون گیت‌وی در همان ساب‌نت آدرس شما نیست.

بعد از ذخیره فایل، تغییرات را اعمال کنید:

sudo netplan apply

اگر چیزی اشتباه باشد، sudo netplan try قبل از اعمال نهایی ۱۲۰ ثانیه زمان می‌دهد که اگر اتصال قطع شد، خودش به حالت قبل برگردد — برای تست روی سروری که فقط از راه دور بهش دسترسی دارید همین دستور را استفاده کنید، نه apply مستقیم.

تست اتصال با ping6

بعد از اعمال تنظیمات، تست واقعی این است که سرور بتواند روی IPv6 ترافیک رد و بدل کند:

ping6 -c 4 ipv6.google.com

یا معادل آن با پرچم -6:

ping -6 -c 4 ipv6.google.com

اگر چند پاسخ با bytes from و زمان رفت‌وبرگشت (RTT) ببینید، مسیر IPv6 سرور تا بیرون باز است. اگر Network is unreachable یا 100% packet loss بگیرید، یا مسیر در Netplan درست تنظیم نشده یا فایروال بسته‌های ICMPv6 را رد می‌کند — بخش بعد همین مورد دوم را حل می‌کند.

برای تست از سمت کلاینت (یعنی آیا سایت شما از بیرون روی IPv6 جواب می‌دهد)، از یک سایت تست آنلاین IPv6 یا همین دستور از یک ماشین دیگر که IPv6 دارد استفاده کنید.

فعال کردن IPv6 در فایروال

داشتن آدرس IPv6 به‌تنهایی کافی نیست؛ اگر فایروال فقط قوانین IPv4 دارد، ترافیک IPv6 رد می‌شود. اگر از ufw استفاده می‌کنید، اول مطمئن شوید پشتیبانی IPv6 روشن است:

sudo nano /etc/default/ufw
# IPV6=yes

بعد از این تغییر، هر قانونی که با ufw allow اضافه می‌کنید خودش روی IPv4 و IPv6 هر دو اعمال می‌شود؛ نیازی به نوشتن قانون جدا برای IPv6 نیست:

sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw reload

اگر از iptables خام استفاده می‌کنید، باید معادل IPv6 یعنی ip6tables را هم جدا تنظیم کنید — این دو جدول کاملا مستقل هستند و یک قانون در iptables روی ترافیک IPv6 اثری ندارد:

sudo ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo ip6tables -A INPUT -p icmpv6 -j ACCEPT

خط آخر مهم است: اگر ICMPv6 را کامل مسدود کنید، هم ping6 جواب نمی‌دهد و هم بعضی مکانیزم‌های خود پروتکل IPv6 (مثل کشف همسایه) که به ICMPv6 وابسته‌اند دچار مشکل می‌شوند — این یکی از جاهایی است که IPv6 با IPv4 فرق دارد و نباید رفتار یکسان با آن داشت.

مقایسه تنظیمات IPv4 و IPv6

موردIPv4IPv6
تعداد آی‌پی روی هر سرور آریانتیک آی‌پی عمومییک آی‌پی عمومی
فعال‌سازی در Netplandhcp4: truedhcp6: true + accept-ra: true
دستور تست اتصالping -4ping6 یا ping -6
وابستگی فایروال به ICMPباز بودن ICMP اختیاری‌تر استبستن کامل ICMPv6 باعث مشکل در خود پروتکل می‌شود
قانون جدا در ip6tablesلازم نیست (جدول دیگری است)باید جدا از iptables نوشته شود

چند اشکال رایج

اگر بعد از تنظیم، IPv6 هنوز کار نمی‌کند، این موارد را به ترتیب چک کنید:

  • خروجی ip -6 addr show را دوباره نگاه کنید — آیا آدرس scope global گرفته شده یا فقط scope link دارید؟
  • در فایل Netplan، on-link: true را روی مسیر گیت‌وی گذاشته‌اید؟
  • فایروال (هم ufw/ip6tables روی خود سرور و هم فایروال پنل) ترافیک IPv6 را رد نمی‌کند؟
  • رکورد AAAA دامنه (معادل IPv6 رکورد A) را در DNS ثبت کرده‌اید؟ بدون AAAA، مرورگر اصلا تلاش نمی‌کند از IPv6 استفاده کند، حتی اگر سرور آن را داشته باشد.

جمع‌بندی

راه‌اندازی IPv6 روی سرور مجازی چند قدم ساده است: دیدن آی‌پی تخصیص‌یافته، فعال کردن آن در Netplan با توجه به مسیر گیت‌وی، تست با ping6، و باز کردن فایروال برای هر دو پروتکل. سرورهای مجازی OVH آلمان آریانت این آی‌پی IPv6 را از ابتدا همراه IPv4 می‌دهند، پس همین امروز می‌توانید این تنظیمات را روی سرور خودتان امتحان کنید.

برای دیدن پلن‌ها و قیمت سرور مجازی OVH آلمان آریانت:

مشاهده سرور مجازی OVH آلمان آریانت

برای مقایسه کلی سرور مجازی و سرور ابری و دیدن قیمت هر لوکیشن هم می‌توانید به صفحه‌های سرور مجازی و قیمت‌ها آریانت نگاه کنید.

سؤالات متداول

آیا همه سرورهای مجازی آریانت IPv6 دارند؟ سرورهای مجازی روی زیرساخت OVH آلمان آریانت همراه با یک آی‌پی IPv4 و یک آی‌پی IPv6 عمومی تحویل داده می‌شوند، از همان لحظه ساخت سرور.

چرا ping6 هیچ جوابی نمی‌دهد؟ معمولا یا مسیر پیش‌فرض در Netplan درست تنظیم نشده (آدرس گیت‌وی باید on-link باشد) یا فایروال بسته‌های ICMPv6 را رد می‌کند.

آیا فعال کردن IPv6 هزینه اضافه دارد؟ نه، چون آی‌پی IPv6 بخشی از تخصیص پیش‌فرض هر سرور مجازی OVH آلمان آریانت است، نه یک سرویس جدا.

آیا لازم است IPv4 را خاموش کنم اگر IPv6 را فعال کرده‌ام؟ نه. اکثر سایت‌ها و سرویس‌ها به حالت dual-stack کار می‌کنند یعنی هر دو پروتکل همزمان فعال‌اند؛ خاموش کردن IPv4 معمولا دسترسی خیلی از کلاینت‌های قدیمی‌تر را قطع می‌کند.