در برخی سرورها ممکن است IPv6 باعث ایجاد مشکل در اتصال، DNS، نصب پکیجها یا برخی سرویسهای شبکه شود. اگر به IPv6 نیاز ندارید، میتوانید آن را بهصورت کامل در لینوکس غیرفعال کنید.
در این آموزش روش غیرفعال کردن IPv6 در Ubuntu، Debian، CentOS، AlmaLinux و Rocky Linux را بررسی میکنیم.
بررسی فعال بودن IPv6
ابتدا با دستور زیر وضعیت IPv6 را بررسی کنید:
ip a
اگر در خروجی آدرسهایی با عبارت inet6 مشاهده کردید، IPv6 روی سرور فعال است.
همچنین میتوانید از دستور زیر استفاده کنید:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
اگر خروجی:
0
باشد، IPv6 فعال است.
اگر خروجی:
1
باشد، IPv6 غیرفعال است.
روش اول: غیرفعال کردن IPv6 با sysctl
یکی از سادهترین و مطمئنترین روشها برای غیرفعال کردن IPv6 استفاده از تنظیمات sysctl است.
فایل تنظیمات را باز کنید:
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
فایل را ذخیره کنید و سپس تنظیمات را اعمال کنید:
sysctl -p
برای بررسی نتیجه دستور زیر را اجرا کنید:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
اگر مقدار 1 نمایش داده شد، IPv6 غیرفعال شده است.
روش دوم: ساخت فایل جداگانه برای تنظیمات IPv6
در بسیاری از سرورها بهتر است بهجای ویرایش مستقیم فایل sysctl.conf یک فایل تنظیمات جداگانه ایجاد کنید.
دستور زیر را اجرا کنید:
nano /etc/sysctl.d/99-disable-ipv6.conf
سپس موارد زیر را داخل آن قرار دهید:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
حالا تنظیمات را اعمال کنید:
sysctl --system
سپس وضعیت IPv6 را بررسی کنید:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
غیرفعال کردن IPv6 با GRUB
اگر میخواهید IPv6 از سطح کرنل لینوکس غیرفعال شود، میتوانید از تنظیمات GRUB استفاده کنید.
ابتدا فایل GRUB را باز کنید:
nano /etc/default/grub
خط زیر را پیدا کنید:
GRUB_CMDLINE_LINUX_DEFAULT=""
و آن را به شکل زیر تغییر دهید:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
در برخی سیستمها ممکن است لازم باشد مقدار را در این بخش قرار دهید:
GRUB_CMDLINE_LINUX="ipv6.disable=1"
سپس تنظیمات GRUB را بهروزرسانی کنید.
در Ubuntu و Debian:
update-grub
در CentOS، AlmaLinux یا Rocky Linux ممکن است از دستور زیر استفاده شود:
grub2-mkconfig -o /boot/grub2/grub.cfg
پس از آن سرور را ریبوت کنید:
reboot
بعد از بالا آمدن سرور میتوانید با دستور زیر وضعیت IPv6 را بررسی کنید:
ip a
غیرفعال کردن IPv6 فقط روی یک Interface
اگر نمیخواهید IPv6 بهصورت کامل غیرفعال شود و فقط قصد دارید آن را روی یک کارت شبکه خاص غیرفعال کنید، ابتدا نام Interface را پیدا کنید:
ip link
برای مثال اگر نام کارت شبکه eth0 باشد:
sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
برای دائمی کردن این تنظیم، خط زیر را به تنظیمات sysctl اضافه کنید:
net.ipv6.conf.eth0.disable_ipv6 = 1
فعال کردن مجدد IPv6
برای فعال کردن IPv6 کافی است مقادیر قبلی را از 1 به 0 تغییر دهید:
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
سپس تنظیمات را مجدداً اعمال کنید:
sysctl --system
اگر IPv6 را از طریق GRUB غیرفعال کردهاید، مقدار زیر را نیز حذف کنید:
ipv6.disable=1
سپس GRUB را بهروزرسانی و سرور را ریبوت کنید.
آیا غیرفعال کردن IPv6 پیشنهاد میشود؟
اگر سرور و سرویسهای شما بهدرستی از IPv6 پشتیبانی میکنند، معمولاً نیازی به غیرفعال کردن آن نیست.
با این حال، در شرایط زیر غیرفعال کردن IPv6 میتواند مفید باشد:
- سرور شما IPv6 معتبر یا Route صحیح ندارد.
- برخی درخواستها از طریق IPv6 Timeout میشوند.
- هنگام اجرای
apt updateیا نصب پکیجها با مشکل اتصال مواجه میشوید. - DNS ابتدا آدرس IPv6 را برمیگرداند اما شبکه سرور دسترسی IPv6 ندارد.
- نرمافزار یا سرویس موردنظر شما فقط با IPv4 کار میکند.
جمعبندی
برای اکثر سرورهای لینوکسی، سادهترین روش غیرفعال کردن IPv6 ایجاد فایل زیر است:
/etc/sysctl.d/99-disable-ipv6.conf
و قرار دادن تنظیمات زیر داخل آن:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
سپس کافی است دستور زیر اجرا شود:
sysctl --system
با این روش IPv6 بدون نیاز به تغییرات پیچیده در تنظیمات شبکه غیرفعال خواهد شد.
