天天看点

如何在RHEL或者CentOS等Linux操作系统中禁用或启用IPv6协议

作者:实战侠

现在新版本的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           
如何在RHEL或者CentOS等Linux操作系统中禁用或启用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 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           

继续阅读