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

Ubuntu 17+系统apt、ping突然用IPv6致连接失败求助

问题分析与修复方案

我来帮你分析这个IPv6优先的问题,并给出不用禁用IPv6的修复方案——毕竟直接关掉IPv6确实不是最优选择,尤其现在很多服务都在逐步支持IPv6。

首先,先梳理下你遇到的核心现象:在MATE 17.10、Xubuntu 17.10及18.04中,apt、ping这类工具突然开始优先使用IPv6,且仅部分主机名受影响,更换公共DNS(9.9.9.9、8.8.8.8等)或ISP提供的DNS都无法解决,同时你无法进行系统版本更新。

可能的触发原因

  • 系统地址选择策略变动:Linux系统通过gai.conf配置IPv4/IPv6的连接优先级,可能是某次配置文件误改、或者某个依赖包的微小更新导致IPv6的优先级被调高,刚好部分域名的IPv6解析存在连通性问题,就触发了异常。
  • DNS返回的IPv6记录异常:部分域名的DNS服务器返回了可解析但实际无法连通的IPv6地址,而系统默认会优先尝试IPv6连接,就出现了ping这类工具卡住或超时的情况。
  • NSS配置顺序变化:/etc/nsswitch.conf里的hosts配置项如果把IPv6相关的解析源放在了前面,也会导致系统优先尝试IPv6。

具体修复方案

1. 全局调整IPv4/IPv6优先级(推荐)

这是最彻底的方案,不用禁用IPv6,只是让系统优先选择IPv4连接:

  1. 打开gai.conf配置文件:
    sudo nano /etc/gai.conf
    
  2. 找到被注释的这一行:
    # precedence ::ffff:0:0/96  100
    
  3. 去掉前面的#注释,保存并退出编辑器。
    这行配置的作用是让IPv4(通过IPv4映射的IPv6地址段)的优先级高于原生IPv6,系统会优先尝试IPv4连接,同时保留IPv6的功能。

2. 针对特定工具强制使用IPv4

如果只想解决ping或apt的问题,不想全局调整,可以单独配置:

  • ping工具:
    每次使用时加-4参数即可强制用IPv4,比如ping -4 ubuntu.com;如果嫌麻烦,可以给ping加个别名,编辑~/.bashrc(或~/.zshrc,取决于你用的shell):
    nano ~/.bashrc
    
    添加一行:
    alias ping='ping -4'
    
    保存后执行source ~/.bashrc让配置生效。
  • apt包管理器:
    创建一个专门的配置文件强制apt用IPv4:
    sudo nano /etc/apt/apt.conf.d/99force-ipv4
    
    添加内容:
    Acquire::ForceIPv4 "true";
    
    保存后,apt后续的下载操作就会强制使用IPv4。

3. 检查并调整NSS配置

确认系统的域名解析顺序是否正常:

  1. 打开nsswitch.conf:
    sudo nano /etc/nsswitch.conf
    
  2. 找到hosts这一行,确保配置是:
    hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4
    
    如果里面有inet6或mdns6排在前面,调整成上述顺序,这样系统会优先通过DNS解析IPv4地址。

4. 手动指定特定域名的IPv4地址

如果只有个别域名出现问题,可以直接在/etc/hosts里手动绑定该域名的IPv4地址:

  1. 先用dig查看该域名的IPv4记录:
    dig ubuntu.com A
    
  2. 打开hosts文件:
    sudo nano /etc/hosts
    
  3. 添加一行,比如:
    91.189.91.38 ubuntu.com
    
    这样系统访问该域名时会直接使用你指定的IPv4地址。

内容的提问来源于stack exchange,提问作者Stephen Boston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:06:41