456 字
2 分钟
Linux禁用IPV6

使用 sysctl 禁用 IPv6#

这是最常用、最安全且易于恢复的方法。它在系统运行时通过内核参数来禁用 IPv6,而不需要修改引导加载程序。

步骤 1: 修改 sysctl 配置文件#

Centos 打开或创建一个新的 sysctl 配置文件来添加禁用 IPv6 的参数。

Terminal window
sudo vi /etc/sysctl.conf

Debain,Ubuntu

sudo vi /etc/sysctl.d/99-sysctl.conf

在文件中添加以下内容:

Terminal window
# 禁用所有网络接口的IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用默认网络接口的IPv6
net.ipv6.conf.default.disable_ipv6 = 1
# 对于一些特殊接口(如 loopback),如果也想禁用,可以加上这行,但通常前两行就够了
# net.ipv6.conf.lo.disable_ipv6 = 1
  • net.ipv6.conf.all.disable_ipv6 = 1:为所有当前和未来的网络接口禁用 IPv6。
  • net.ipv6.conf.default.disable_ipv6 = 1:为默认设置禁用 IPv6,确保新创建的接口也遵循此规则。

保存并关闭文件 (在 vi 中按 ESC,然后输入 :wq 回车)。

步骤 2: 应用 sysctl 设置#

为了让刚刚的修改立即生效,而无需重启系统,请运行以下命令:

Terminal window
sudo sysctl -p /etc/sysctl.conf

或者,如果你想加载所有 sysctl 配置文件,可以运行:

Terminal window
sudo sysctl -p

步骤 3: 验证是否禁用成功#

你可以通过多种方式来验证。

  1. 检查网络接口信息:

    Terminal window
    ip addr show
    # 或者简写为 ip a

    在输出中,你应该看不到任何包含 inet6 的地址行了。如果之前有,现在它们应该消失了。

  2. 检查内核参数值:

    Terminal window
    cat /proc/sys/net/ipv6/conf/all/disable_ipv6

    如果输出为 1,则表示已成功禁用。


重启网络服务(推荐,比重启服务器快):

对于 CentOS 7:

Terminal window
sudo systemctl restart network

对于 CentOS 8 / Stream (以及多数现代发行版):

Terminal window
sudo systemctl restart NetworkManager

对于 Debain,Ubuntu

sudo systemctl restart networking

重启服务后,再次运行 ip a,这次您应该就看不到任何 inet6 地址了。

Linux禁用IPV6
https://blog.wlens.top/posts/liunx禁用ipv6/
作者
Lao Wang
发布于
2025-01-18
许可协议
CC BY-NC-SA 4.0