侧边栏壁纸
  • 累计撰写 55 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

禁用服务器IPV6方法

米粒儿
2025-02-04 / 0 评论 / 0 点赞 / 46 阅读 / 0 字
温馨提示:
本文最后更新于2025-02-13,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

要禁用服务器的IPv6,可以通过修改网络配置文件或使用命令来实现,具体方法根据你的操作系统不同有所区别。以下是一些常见操作系统的禁用IPv6的步骤:

1. 在Linux服务器上禁用IPv6

方法一:通过sysctl禁用IPv6

  1. 打开/etc/sysctl.conf文件:

    sudo nano /etc/sysctl.conf
    
  2. 在文件末尾添加以下内容:

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    
  3. 保存并关闭文件后,应用更改:

    sudo sysctl -p
    

方法二:通过GRUB禁用IPv6

  1. 编辑GRUB配置文件:

    sudo nano /etc/default/grub
    
  2. 找到 GRUB_CMDLINE_LINUX 并添加 ipv6.disable=1,例如:

    GRUB_CMDLINE_LINUX="ipv6.disable=1"
    
  3. 更新GRUB配置:

    sudo update-grub
    
  4. 重启服务器:

    sudo reboot
    

一键脚本

#!/bin/bash
# 一键禁用IPv6脚本
# 请以root或使用sudo运行该脚本

# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请以root用户或使用sudo运行该脚本。"
    exit 1
fi

echo "正在禁用IPv6,请稍候..."

# 临时禁用IPv6(当前会话生效)
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
sysctl -w net.ipv6.conf.lo.disable_ipv6=1

echo "临时禁用IPv6已生效。"

# 定义sysctl配置文件路径
SYSCTL_CONF="/etc/sysctl.conf"
SYSCTL_DIR="/etc/sysctl.d"
SYSCTL_FILE="$SYSCTL_DIR/99-disable-ipv6.conf"

# 备份原配置文件
BACKUP_FILE="${SYSCTL_CONF}.$(date +%Y%m%d%H%M%S).bak"
cp $SYSCTL_CONF $BACKUP_FILE && echo "已备份 $SYSCTL_CONF 为 $BACKUP_FILE"

# 将禁用IPv6的配置写入 sysctl.d 目录
if [ ! -f "$SYSCTL_FILE" ]; then
    echo "创建 $SYSCTL_FILE 配置文件以永久禁用IPv6"
    echo "net.ipv6.conf.all.disable_ipv6 = 1" > "$SYSCTL_FILE"
    echo "net.ipv6.conf.default.disable_ipv6 = 1" >> "$SYSCTL_FILE"
    echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> "$SYSCTL_FILE"
else
    echo "$SYSCTL_FILE 文件已存在,跳过创建"
fi

echo "已修改 $SYSCTL_FILE 配置文件。IPv6将永久被禁用(需要重启系统或执行 sysctl -p 使修改生效)。"

# 禁用 NetworkManager 管理的IPv6(如果有)
echo "禁用 NetworkManager 对 IPv6 的管理..."
cat > /etc/NetworkManager/conf.d/99-disable-ipv6.conf <<EOF
[ipv6]
method=ignore
EOF
systemctl restart NetworkManager

# 检查并禁用 /etc/rc.local 中的 IPv6 相关内容
if [ -f /etc/rc.local ]; then
    if ! grep -q "sysctl -w net.ipv6.conf.all.disable_ipv6=1" /etc/rc.local; then
        echo "sysctl -w net.ipv6.conf.all.disable_ipv6=1" >> /etc/rc.local
        echo "sysctl -w net.ipv6.conf.default.disable_ipv6=1" >> /etc/rc.local
        echo "sysctl -w net.ipv6.conf.lo.disable_ipv6=1" >> /etc/rc.local
        chmod +x /etc/rc.local
        echo "已修改 /etc/rc.local 文件以确保启动时禁用IPv6。"
    fi
else
    echo "警告:/etc/rc.local 文件不存在,系统可能不支持该文件。"
fi

# 修改GRUB配置,禁用IPv6
echo "修改GRUB配置以禁用IPv6..."
GRUB_CONF="/etc/default/grub"
GRUB_CMDLINE="ipv6.disable=1"

if grep -q "GRUB_CMDLINE_LINUX" "$GRUB_CONF"; then
    # 如果已存在GRUB_CMDLINE_LINUX配置,则修改
    sed -i "s/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE /" "$GRUB_CONF"
else
    # 如果不存在,则添加
    echo "GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE\"" >> "$GRUB_CONF"
fi

# 更新GRUB并重启系统
echo "更新GRUB配置..."
if command -v grub2-mkconfig &> /dev/null; then
    grub2-mkconfig -o /boot/grub2/grub.cfg
elif command -v update-grub &> /dev/null; then
    update-grub
else
    echo "无法找到更新GRUB的命令,请手动更新GRUB配置。"
fi

# 禁用所有现存的IPv6路由条目
echo "删除现有IPv6路由条目..."
ip -6 route flush dev eth0

# 重启系统生效
echo "IPv6 已成功禁用。请重启系统以使配置生效。"

0

评论区