现在新版本的Linux操作系统默认启用Internet协议版本6(IPv6)。但是,在某些情况下,某些用户可能会发现需要禁用IPv6支持或在禁用后重新启用它。本文将详细介绍如何禁用或启用IPV6服务。
一、禁用IPv6
禁用IPv6有如下3中方法。
(一)在NetworkManager中禁用IPv6.
1.对于 RHEL7 和 RHEL 8.0:
[[email protected] ~]# nmcli connection modify ipv6.method "ignore"
2.对于RHEL8.1及更高版本和9:
[[email protected] ~]# nmcli connection modify ipv6.method "disabled"
(二)通过 sysctl 设置禁用 IPv6
1.创建一个名为的新文件/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 on all specific interfaces, as well.
net.ipv6.conf..disable_ipv6 = 1
# By default, we do not disable IPv6 on localhost, as it's important for multiple
# components. If you want to disable it anyway, change the following
# value to 1.
net.ipv6.conf.lo.disable_ipv6 = 0
2.然后需要重新加载新设置:
[[email protected] ~]# sysctl -p /etc/sysctl.d/ipv6.conf
3.创建初始 RAM 磁盘映像的备份:
[[email protected] ~]# cp -p /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)_$(date +%Y-%m-%d_%H%M%S).img
4.然后使用以下命令重建 initramfs:
[[email protected] ~]# dracut -f -v
验证
[[email protected] ~]# lsinitrd /boot/initramfs-$(uname -r).img | grep 'etc/sysctl.d/ipv6.conf'
5.注释掉在 /etc/hosts中找到的任何IPv6 地址,包括 ::1 本地主机地址(如果您在步骤 #1 中也在本地主机上禁用了 IPv6)。
[[email protected] ~]# cp -p /etc/hosts /etc/hosts.disableipv6
[[email protected] ~]# sed -i 's/^[[:space:]]*::/#::/' /etc/hosts
(三)禁用 IPv6 内置内核模块
1.编辑/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"
2.通过grub2-mkconfig命令重新生成grub.cfg文件:
[[email protected] ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
或者,在 UEFI 系统上,运行以下命令:
[[email protected] ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
3.重新启动系统以禁用 IPv6 支持。
二、启用IPv6
启用IPv6有如下3中方法。
(一)在NetworkManager中启用IPv6.
要使用 NetworkManager 重新启用 IPv6,请修改连接的ipv6.method从disabled根据连接的寻址类型设置为适当的值。选择的命令如下所示:
[[email protected] ~]# nmcli connection modify ipv6.method "auto"
[[email protected] ~]# nmcli connection modify ipv6.method "dhcp"
[[email protected] ~]# nmcli connection modify ipv6.method "link-local"
[[email protected] ~]# nmcli connection modify ipv6.method "manual"
(二)通过sysctl设置启用IPv6
1.删除/etc/sysctl.d/ipv6.conf文件。
2.从创建的备份恢复原始初始 RAM 磁盘映像。例子:
[[email protected] ~]# mv /boot/initramfs-4.18.0-240.el8.x86_64_2022-12-16_230548.img /boot/initramfs-4.18.0-240.el8.x86_64.img
3.如果AddressFamily inet被添加到/etc/ssh/sshd_config文件以保留 SSH X11Forwarding,然后删除它并重新启动 SSH 服务。
4.恢复旧的/etc/hosts文件。
[[email protected] ~]# mv /etc/hosts.disableipv6 /etc/hosts
5.重新启动系统以启用IPv6支持。
(三)启用IPv6内置内核模块
1.编辑/etc/default/grub并删除条目ipv6.disable=1来自GRUB_CMDLINE_LINUX,如以下示例:
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root"
2.跑过grub2-mkconfig命令重新生成grub.cfg文件:
[[email protected] ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
或者,在 UEFI 系统上,运行以下命令:
[[email protected] ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg