logo NodeSeekbeta

腾讯云轻量reinstall后如何恢复网络

腾讯云轻量应用服务器重装后网络断连(SSH 无法登录)修复教程

故障现象

在对腾讯云轻量应用服务器进行重装系统、重启或实例迁移后,服务器突然失去网络连接,无法通过 SSH 登录。通过云控制台 VNC 登录后,执行 ip a 发现主网卡(如 ens5)处于 DOWN 状态,且未获取到任何 IPv4 或 IPv6 地址。

故障原因

此问题通常由腾讯云底层的 cloud-init 组件下发了 存在 Bug 的网络配置文件 导致:

  1. 非法的 IPv6 子网掩码:云端自动生成的配置文件(/etc/netplan/50-cloud-init.yaml)中,给静态 IPv6 地址错误地分配了 /0 的子网掩码(正确应为 /128)。
  2. YAML 语法解析错误:直接写入的 IPv6 地址(带有多个连续冒号 ::)未加双引号,导致 Netplan 的 YAML 解析器报错。
    以上错误会导致系统的网络管理服务在开机时解析配置失败,从而彻底放弃拉起网卡。

修复步骤

请登录腾讯云控制台,通过 VNC 进入服务器终端,并依次执行以下操作:

第一步:禁用 cloud-init 的自动网络配置

为了防止系统重启后,cloud-init 再次将带有 Bug 的错误配置文件刷回来,我们需要先禁用它的网络接管功能:

echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

第二步:提取正确的网络参数并备份旧配置

查看旧配置文件,记下你的静态 IPv6 地址和网关,然后将其重命名使其失效,避免干扰后续配置:

# 查看并记录 addresses (如 2402:...) 和 gateway/via (如 fe80::...)
cat /etc/netplan/50-cloud-init.yaml

# 备份并使旧配置失效
mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak

第三步:写入干净的 Netplan 配置

创建一个全新的配置文件。注意:

  • <你的网卡名> 替换为实际网卡名(如 ens5eth0)。
  • 将 IPv6 地址和网关替换为你刚才记录的地址。
  • 关键细节:IPv6 地址和网关必须加上双引号,并且掩码必须写为 /128
cat <<EOF> /etc/netplan/99-custom-ens5.yaml
network:
  version: 2
  ethernets:
    ens5:
      dhcp4: true
      accept-ra: false
      addresses:
        - "你的公网IPv6地址/128"
      nameservers:
        addresses:
          - "2400:3200::1"
          - "2402:4e00::"
      routes:
        - to: default
          via: "fe80::feee:ffff:feff:ffff"
EOF

(注:腾讯云默认的 IPv6 网关通常为 fe80::feee:ffff:feff:ffff)

第四步:修复文件权限

Netplan 出于安全要求,配置文件必须仅 root 用户可读写,否则会抛出 Permissions are too open 警告:

chmod 600 /etc/netplan/99-custom-ens5.yaml

第五步:应用配置并验证

重新加载网络配置:

netplan apply

如果没有报错直接返回提示符,说明配置已成功生效。

验证网卡状态和网络连通性:

# 检查是否获取到了 IP
ip a

# 测试 IPv4 连通性
ping -c 4 223.5.5.5

# 测试 IPv6 连通性 (Ping Cloudflare 的公共 DNS)
ping -c 4 2606:4700:4700::1111

确认一切通畅后,您即可关闭 VNC,重新使用本地终端通过 SSH 连接服务器。

  • Ubuntu 26.04下的默认文件

    sudo cat /etc/netplan/50-cloud-init.yaml
    # This file is generated from information provided by the datasource.  Changes
    # to it will not persist across an instance reboot.  To disable cloud-init's
    # network configuration capabilities, write a file
    # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
    # network: {config: disabled}
    network:
        version: 2
        ethernets:
            eth0:
                dhcp4: true
                match:
                    macaddress: xx:xx:xx:xx:xx:xx
                set-name: eth0
    

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有71711位seeker

🎉欢迎新用户🎉