一键禁用 IPv6 脚本,适用于使用 sysctl 的 Linux 发行版

Author Avatar
青枫 昨天 15:51
  • 在其它设备中阅读本文章

方法一:将脚本保存为文件后执行 (推荐)

  1. 在您的 VPS 上,创建一个脚本文件
    nano disable_ipv6.sh
  2. 将下面的完整脚本代码粘贴进去

    #!/bin/bash
    
    # =================================================================
    #         一键禁用IPv6脚本 (基于sysctl安全方法)
    #  适用于 Debian, Ubuntu 及其他使用 sysctl 的 Linux 发行版
    # =================================================================
    
    # 检查是否以root用户运行
    if [ "$(id -u)" -ne 0 ]; then
       echo "错误:此脚本必须以root用户权限运行。" >&2
       echo "请尝试使用 'sudo -i' 或 'sudo bash' 切换到root用户后执行。" >&2
       exit 1
    fi
    
    # 定义配置文件路径
    CONFIG_FILE="/etc/sysctl.d/99-disable-ipv6.conf"
    
    echo "🚀 开始执行IPv6禁用程序..."
    echo "--------------------------------------------------"
    
    # 使用cat和HERE Document创建并写入配置文件
    # 这种方法会直接覆盖同名旧文件,确保配置是全新的
    echo "1. 正在创建并写入sysctl配置文件: $CONFIG_FILE"
    cat > "$CONFIG_FILE" << EOF
    # 由一键脚本自动生成,用于禁用IPv6
    # 禁用所有网络接口的IPv6
    net.ipv6.conf.all.disable_ipv6 = 1
    # 禁用新接口(如热插拔的USB网卡)的默认IPv6设置
    net.ipv6.conf.default.disable_ipv6 = 1
    # 禁用回环接口(lo)的IPv6
    net.ipv6.conf.lo.disable_ipv6 = 1
    EOF
    
    # 检查文件是否创建成功
    if [ -f "$CONFIG_FILE" ]; then
        echo "   ✅ 配置文件创建成功。"
    else
        echo "   ❌ 错误:配置文件创建失败!脚本终止。" >&2
        exit 1
    fi
    
    echo ""
    echo "2. 正在应用内核参数使其立即生效..."
    
    # 应用 sysctl 配置,并将输出重定向到/dev/null以保持界面整洁
    sysctl -p "$CONFIG_FILE" > /dev/null 2>&1
    
    # 检查IPv6是否真的被禁用了
    # 读取 all.disable_ipv6 的当前值,看是否为1
    ipv6_status=$(cat /proc/sys/net/ipv6/conf/all/disable_ipv6)
    
    if [ "$ipv6_status" -eq 1 ]; then
        echo "   ✅ 内核参数已应用,IPv6当前状态为【已禁用】。"
        echo "--------------------------------------------------"
        echo "🎉 恭喜!IPv6已成功禁用。"
        echo "此配置是永久性的,重启服务器后依然生效。"
        echo "为了确保所有正在运行的服务都切换到无IPv6模式,强烈建议您现在重启服务器: sudo reboot"
    else
        echo "   ❌ 错误:应用内核参数后,状态检查失败!" >&2
        echo "   请手动检查 $CONFIG_FILE 文件和 'sysctl -p' 命令的输出。" >&2
        exit 1
    fi
    
    exit 0
  3. 保存并退出 ( 在 nano 中是 Ctrl+X,然后按 Y,再按 Enter)。
  4. 给脚本添加执行权限
    chmod +x disable_ipv6.sh
  5. 运行脚本
    ./disable_ipv6.sh

方法二:终极懒人一键命令 (适合批量操作)

对于大量的 VPS,您可以直接复制下面这一整行命令,在 SSH 终端里粘贴并回车即可。它会自动下载并执行上述脚本,无需手动创建文件。

bash -c "$(curl -fsSL https://cdn.vdj.me/shell_scripts/disable_ipv6.sh)"

这个命令做了什么?
它使用 curl 从一个安全的链接(Gist 是 GitHub 的服务)下载脚本内容,然后通过管道 | 直接交给 bash 来解释执行。整个过程全自动,非常高效。

两种方法效果完全相同,可以根据自己的喜好和安全习惯来选择。