「Linux」- 禁用 IPv6 协议栈

  CREATED BY JENKINSBOT

问题描述

为什么禁用 IPv6 协议栈?因为很多配套的基础设置还未到位,因此使用 IPv6 会遇到很多问题,比如 a 5-second delay 问题。

该笔记将记录:在 Linux 中,如何禁用 IPv6 协议栈,以及相关问题处理。

解决方案

RHEL/CentOS

# sysctl -w net.ipv6.conf.all.disable_ipv6=1
# sysctl -w net.ipv6.conf.default.disable_ipv6=1

cat > /etc/sysctl.d/99-disable-ipv6.conf <<EOF
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
EOF

sysctl --load /etc/sysctl.d/99-disable-ipv6.conf

Ubuntu 18.04

在 Ubuntu 18.04 中,修改 sysctl 是无效的,因为 Netplan 会为其分配 Link-local 地址。解决方法:

方法一、彻底禁止 IPv6 协议栈

# vim /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
...

# update-grub

方法二、通过 Netplan 禁止

network:
  version: 2
  ethernets:
    enp0s2:      
      ...
      link-local: []
      ...

我们不得不说,“回”字又多了一种写法 :-)

参考文献

Disabling IPv6 in Ubuntu Server 18.04 – Ask Ubuntu
Disabling IPv6 on Ubuntu 18.04: The Netplan Version | P. S. Clarke
How to disable IPv6 address on Ubuntu 18.04 Bionic Beaver Linux – LinuxConfig.org
How to disable IPv6 on Linux
How to Disable IPv6 on Ubuntu Linux
IPv6 – ArchWiki
Link-local address – Wikipedia