方法1:使用 GRUB2 禁用ipv6

1.禁用ipv6内置内核模块。
编辑 /etc/default/grub 并将 ipv6.disable=1 添加到 GRUB_CMDLINE_LINUX ,如下所示:

GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root ipv6.disable=1"
  1. 运行grub2-mkconfig命令重新生成grub.cfg文件:
# grub2-mkconfig -o /boot/grub2/grub.cfg

或者,在 UEFI 系统上,运行以下命令:

# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
  1. 重新启动系统以禁用 IPv6 支持。
# systemctl reboot

对于使用 NetworkManager 的系统

对于运行 NetworkManager 的所有系统,必须在每个接口上禁用 IPv6,并将选项 ipv6.method 设置为 disabled 。
除了使用下一节中显示的方法禁用 IPv6 之外,还必须完成此步骤。

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

确认

  1. ipv6 模块禁用选项的当前状态可以通过 sysfs 看到:
# cat /sys/module/ipv6/parameters/disable
1
  1. sysctl disable_ipv6 的当前状态可以通过 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
  1. 列出分配给系统的任何 IPv6 地址:
# ip -6 addr
  1. 要列出任何 IPv6 TCP 或者 UDP 套接字,可以使用如下所示的内容:
# ss -6 -pan
欢迎来到之路教程(on itroad-com)

方法2:使用sysctl禁用ipv6

或者,这也可以通过 sysctl 设置来完成。
请注意,除非 sshd_config 包含 AddressFamily inet,否则这会破坏 SSH Xforwarding。

  1. 创建一个名为 /etc/sysctl.d/ipv6.conf 的新文件并添加以下选项:
# 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
  1. 然后需要重新加载新设置:
# sysctl -p /etc/sysctl.d/ipv6.conf
  1. 在对其进行任何更改之前创建 initramfs 的备份:
# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
  1. 然后使用以下命令重建初始 内存 磁盘镜像:
# dracut -f -v
  1. 验证文件包含:
# lsinitrd /boot/initramfs-[version].img  | grep 'etc/sysctl.d/ipv6.conf'
  1. 注释掉在 /etc/hosts 中找到的所有 IPv6 地址,包括 ::1 localhost 地址。
    在进行任何更改之前备份文件:
# cp -p /etc/hosts /etc/hosts.disableipv6
# sed -i 's/^[[:space:]]*::/#::/' /etc/hosts
如何在 CentOS/RHEL 8 中禁用 IPv6

默认情况下,在 CentOS/RHEL 8 系统上启用 IPv6.
但是,在某些情况下,某些用户可能会发现禁用 IPv6 支持是可取的。
这篇文章概述了在 CentOS/RHEL 8 系统上禁用 ipv6 的步骤。

日期:2020-09-17 00:13:31 来源:oir作者:oir