Tắt IPv6 CentOS/RHEL 8 - Disable IPv6 CentOS/RHEL 8

Theo mặc định, IPv6 CentOS/RHEL 8 đã được kích hoạt trên các hệ thống. Tuy nhiên, trong vài tình huống, một số người dùng có thể muốn tắt hỗ trợ IPv6. Dưới đây là các bước để vô hiệu hóa IPv6 trên hệ thống CentOS/RHEL 8.

Đối với các hệ thống sử dụng NetworkManager

Đối với tất cả các hệ thống chạy NetworkManager, IPv6 CentOS/RHEL 8 phải được vô hiệu hóa trên mỗi giao diện bằng cách đặt tùy chọn ipv6.method thành "disabled". Bước này là bước bổ sung để tắt IPv6 khi sử dụng 2 phương pháp như GRUB2 và sysctl trong phần tiếp theo của bài viết.

# nmcli connection modify [Connection Name] ipv6.method "disabled"

Phương pháp 1: Dùng GRUB2 để tắt IPv6 CentOS/RHEL 8

Bước 1: Vô hiệu hóa kernel module IPv6 tích hợp. Chỉnh sửa /etc/default/grub và thêm ipv6.disable=1 vào GRUB_CMDLINE_LINUX như được hiển thị dưới đây:

GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root ipv6.disable=1"

Bước 2: Chạy lệnh grub2-mkconfig để tạo lại tệp grub.cfg:

# grub2-mkconfig -o /boot/grub2/grub.cfg

Hoặc, trên các hệ thống UEFI, thực hiện như sau:

# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Bước 3: Khởi động lại hệ thống để tắt IPv6.

# systemctl reboot

Phương pháp 2: Dùng sysctl để tắt IPv6 CentOS/RHEL 8

Theo một cách khác, việc tắt IPv6 cũng có thể được thực hiện thông qua cài đặt sysctl. Tuy nhiên, hãy lưu ý rằng điều này có thể làm hỏng SSH Xforwarding trừ khi tệp cấu hình sshd_config chứa dòng AddressFamily inet.

Bước 1: Tạo một tệp mới có tên /etc/sysctl.d/ipv6.conf và thêm các tùy chọn sau:

# vi /etc/sysctl.d/ipv6.conf
# First, disable for all interfaces
net.ipv6.conf.all.disable_ipv6 = 1
# If using the sysctl method, the protocol must be disabled all specific interfaces as well. 
net.ipv6.conf..disable_ipv6 = 1

Bước 2: Sau khi đã thêm cấu hình mới, bạn cần tải lại các thiết lập với lệnh:

# sysctl -p /etc/sysctl.d/ipv6.conf

Bước 3: Trước khi thực hiện bất kỳ thay đổi nào vào initramfs, hãy tạo sao lưu của nó:

# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img

Bước 4: Sau đó, bạn có thể xây dựng lại RAM Disk Image ban đầu bằng lệnh:

# dracut -f -v

Bước 5: Xác minh tập tin bao gồm:

# lsinitrd /boot/initramfs-[version].img | grep 'etc/sysctl.d/ipv6.conf'

Bước 6: Ghi chú (comment out) bất kỳ địa chỉ IPv6 nào được tìm thấy trong /etc/hosts, bao gồm cả địa chỉ ::1 localhost. Sao lưu tệp trước khi thực hiện bất kỳ thay đổi nào:

# cp -p /etc/hosts /etc/hosts.disableipv6
# sed -i 's/^[[:space:]]*::/#::/' /etc/hosts

Xác minh lại

Bước 1: Trạng thái hiện tại của tùy chọn vô hiệu hóa module ipv6 có thể được xem thông qua sysfs:

# cat /sys/module/ipv6/parameters/disable
1

Bước 2: Trạng thái hiện tại của tùy chọn sysctl disable_ipv6 có thể được xem thông qua lệnh sysctl:

# sysctl -a 2>/dev/null | grep disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.eth0.disable_ipv6 = 0

Bước 3: Liệt kê các địa chỉ IPv6 được gán cho hệ thống:

# ip -6 addr

Bước 4: Để liệt kê các ổ cắm IPv6 TCP hoặc UDP bạn có thể sử dụng một lệnh tương tự như sau:

# ss -6 -pan

Trong trường hợp bạn thấy bất kỳ thông báo Selinux denied (avc: denied { module_request }) nào trong tệp audit.log khi sử dụng phương pháp 1 (GRUB2), hãy tắt ipv6 từ tệp /etc/sysctl.d/ipv6.conf như được hiển thị trong phương pháp 2 (sysctl). Để ngăn không cho xuất hiện thông báo rpc* sau khi tắt ipv6 bạn có thể chỉnh sửa tệp /etc/netconfig cho các dòng bắt đầu với udp6 và tcp6; thay đổi "v" trong cột thứ ba thành "-" (dấu gạch ngang).