你是否在Linux服务器上启用了IPv6,它会导致一些与IPv6无法正常工作的应用程序出现问题?所以本文介绍在Linux操作系统上禁用IPv6的方法,该方法经过RedHat、CentOS、Debian/Ubuntu、Arch Linux操作系统的测试,可以让你禁用IPv6并坚持使用IPv4。
启用IPv6的参考文章 为VMware NAT模式启用ipv6,使虚拟机里的Linux系统能用IPv6的方法
通过使用sysctl修改内核参数来禁用IPv6 值得注意的是,几乎所有Linux发行版都默认启用Internet协议版本6(IPv6),一种禁用它的方法是使用sysctl,你需要知道这可能会破坏SSH Xforwarding,除非sshd_config包含AddressFamily inet。 这个方法适用于大多数发行版,我在Ubuntu(参考:Ubuntu中限定apt-get走IPv4或IPv6协议)、Debian、Arch Linux、CentOS(6/7)上进行了测试。 将这些行添加到/etc/sysctl.d/ipv6.conf以在Linux上禁用IPv6: cat <<EOT > /etc/sysctl.d/ipv6.conf net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 EOT 应用时,它会将文件/proc/sys/net/ipv6/conf/all/disable_ipv6的状态从0更改为1,在使用cat命令应用规则之前检查: # cat /proc/sys/net/ipv6/conf/all/disable_ipv6 0 然后使用以下命令保存文件并应用规则: # sysctl -p /etc/sysctl.d/ipv6.conf net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 再次检查/proc/sys/net/ipv6/conf/all/disable_ipv6: # cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1 这些行可以添加到/etc/sysctl.conf文件中,请注意/etc/sysctl.d/上的文件会覆盖/etc/sysctl.conf上的设置。 请注意,明确定义列出所有目标接口,因为禁用all.disable_ipv6不适用于应用sysctl设置时已“up”的接口,你应该注释掉/etc/hosts中的IPv6主机: # sed -i 's/^[[:space:]]*::/#::/' /etc/hosts # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 对于CentOS 7或RedHat系统,你可以使用以下方法重建初始RAM磁盘映像: # dracut -f
通过修改/etc/default/grub(基于RedHat的发行版)禁用IPv6 你还可以通过编辑grub配置来禁用IPv6,我在CentOS 7和RHEL 7上进行了测试,建议在操作前进行相关文件的备份,以便在重新启用IPv6时恢复。 你需要将条目ipv6.disable=1添加到GRUB_CMDLINE_LINUX,然后生成新的grub文件以进行引导并重新启动服务器: # cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto ipv6.disable=1 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true" 注意条目ipv6.disable=1,运行grub2-mkconfig命令重新生成grub.cfg文件: # grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-6cf33e6e3d114c2d84099f344a386f6a Found initrd image: /boot/initramfs-0-rescue-6cf33e6e3d114c2d84099f344a386f6a.img done 或者,在UEFI系统上,运行以下命令: # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg 如下图所示:
使用此方法,你需要重新启动服务器才能应用更改,请运行reboot命令。
相关主题 |