You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04服务器禁用IPv6后网络崩溃的诊断与彻底禁用方案求助

Ubuntu 20.04服务器禁用IPv6后网络崩溃的诊断与彻底禁用方案求助

兄弟,我看了你遇到的问题——为了搞定FTP的IPv6连接无法自动 fallback 到IPv4的问题,你用sysctl禁用了IPv6,结果FTP正常了,但服务器每隔40小时左右就网络崩溃,只能重启,而且主机那边还不给排查,确实头疼。先帮你梳理下问题根源,再给你一套彻底解决的方案。

首先明确你的环境:

  • 系统:Ubuntu 20.04
  • 服务栈:cPanel 106.0.13、PHP 8.1、MySQL 8、LiteSpeed Web Server、Elasticsearch 7.17、Redis 7
  • 业务:Magento 2.4.5商店每日通过远程FTP更新商品/库存/价格,IPv6连接不稳定且无法自动切换到IPv4

问题根源分析

从你给出的syslog报错(systemd-networkd-wait-online和nm-online超时)以及未修改的netplan配置来看,核心问题是你用sysctl强制禁用了IPv6,但netplan里还保留着完整的IPv6地址、网关和路由配置。系统的网络服务(比如systemd-networkd)还在持续尝试处理IPv6的网络配置,长时间的配置冲突导致服务资源耗尽,最终引发网络崩溃。

第一步:先做诊断确认

在服务器正常运行时,先执行这些命令确认当前状态,方便定位问题:

  1. 检查sysctl的IPv6禁用是否生效:

    sysctl net.ipv6.conf.all.disable_ipv6
    sysctl net.ipv6.conf.default.disable_ipv6
    

    正常应该输出1,如果不是,执行sudo sysctl -p重新加载配置。

  2. 查看网卡的IPv6状态:

    ip -6 addr show enp3s0f0
    

    如果还能看到IPv6地址,说明sysctl的禁用没完全覆盖,或者netplan还在推送IPv6配置。

  3. 查看网络服务的状态:

    sudo systemctl status systemd-networkd
    sudo systemctl status NetworkManager
    

    看是否有持续的IPv6相关报错(比如路由配置失败、地址获取超时等)。

第二步:彻底禁用IPv6的正确方案

因为Ubuntu 20.04用netplan管理网络,不能只靠sysctl禁用,必须同步修改netplan配置,彻底移除所有IPv6相关设置,否则系统服务会一直和禁用规则冲突。

1. 修改netplan配置文件

你的netplan配置文件在/etc/netplan/目录下(通常文件名类似00-installer-config.yaml),用编辑器打开:

sudo nano /etc/netplan/00-installer-config.yaml

把enp3s0f0的配置修改成完全移除IPv6相关项的版本,注意yaml的缩进必须用2个空格,不能用制表符:

network:
  version: 2
  ethernets:
    enp3s0f0:
      accept-ra: false
      dhcp4: true
      match:
        macaddress: fc:34:97:b0:54:57
      nameservers:
        addresses:
          # 换成IPv4 DNS,避免IPv6 DNS解析问题
          - 8.8.8.8
          - 8.8.4.4
      routes:
        # 只保留原来的IPv4路由,删掉所有IPv6路由
      set-name: enp3s0f0

2. 应用并测试netplan配置

为了避免修改后断网,先执行测试命令:

sudo netplan try

这个命令会应用配置并等待120秒,如果网络出现问题会自动回滚,确认没问题后按回车永久生效。如果测试没问题,再执行:

sudo netplan apply

3. 完善sysctl的禁用规则

除了你原来的两行,再加几个参数确保所有接口都彻底禁用IPv6:

echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.enp3s0f0.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.all.autoconf = 0" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.autoconf = 0" | sudo tee -a /etc/sysctl.conf

然后重新加载sysctl配置:

sudo sysctl -p

4. 调整网络服务的等待规则

因为systemd-networkd-wait-online服务默认会等待IPv6网络就绪,现在禁用了IPv6,需要修改服务参数让它忽略IPv6:

sudo systemctl edit systemd-networkd-wait-online

在打开的编辑器中添加以下内容:

[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=ipv6

保存退出后,重新加载服务配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart systemd-networkd-wait-online

第三步:后续观察与排查

做完以上配置后,观察服务器运行情况,如果还是出现网络崩溃:

  • 查看/var/log/syslog和/var/log/daemon.log,找网络相关的报错(比如路由表异常、网卡驱动问题等)
  • 检查cPanel的网络设置,因为cPanel可能会自动修改网络配置,确保它没有重新启用IPv6

备注:内容来源于stack exchange,提问作者Alex Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:17:54