云网牛站
所在位置:首页 > Linux云服务器 > 在Linux服务器上禁用IPv6的方法

在Linux服务器上禁用IPv6的方法

2019-02-26 10:27:15作者:戴进稿源:云网牛站

你是否在Linux服务器上启用了IPv6,它会导致一些与IPv6无法正常工作的应用程序出现问题?所以本文介绍在Linux操作系统上禁用IPv6的方法,该方法经过RedHat、CentOS、Debian/Ubuntu、Arch Linux操作系统的测试,可以让你禁用IPv6并坚持使用IPv4。

 

启用IPv6的参考文章

让阿里云ECS服务器centos 7系统支持IPv6的方法

在centos操作系统云主机上开启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

如下图所示:

在Linux服务器上禁用IPv6的方法

使用此方法,你需要重新启动服务器才能应用更改,请运行reboot命令。

 

相关主题

禁用IPv6,解决Debian8系统无线网络掉线问题

精选文章
热门文章