IPv6-only环境下Ubuntu的snap refresh超时问题:snap服务器是否仅支持IPv4?
首先得给你吃个定心丸:官方的Snapcraft仓库是支持IPv6的,2023年确实很少有主流公共服务还只依赖IPv4,但你的问题大概率是特定场景下的访问故障,而非仓库完全不支持IPv6。
我来帮你拆解可能的原因和排查步骤:
先验证DNS解析是否正常
打开终端执行dig AAAA api.snapcraft.io或者nslookup api.snapcraft.io -type=AAAA,看看有没有返回IPv6地址。如果没有结果,那可能是你的本地DNS服务器无法解析Snap仓库的IPv6记录——这种情况可以试试切换到支持IPv6的公共DNS,比如Quad9的2620:fe::fe或者Cloudflare的2606:4700:4700::1111。测试IPv6连通性
如果解析到了IPv6地址,接着用curl -6 https://api.snapcraft.io测试直接访问。如果这个命令也超时,那问题可能出在你的IPv6网络路由上:要么是本地防火墙拦截了IPv6的443端口流量,要么是你所在区域的Snap CDN节点没有IPv6覆盖(这种情况确实存在,虽然不多见)。检查Snap代理配置
有时候如果之前配置过IPv4的代理,切换到IPv6-only环境后会残留问题。可以执行snap get system proxy.http和snap get system proxy.https看看有没有设置代理,如果有的话用snap unset system proxy.http和snap unset system proxy.https清空,再重试snap refresh。极端情况的临时 workaround
如果你确认是CDN节点的IPv6问题,暂时没有更好的办法,可以尝试修改/etc/hosts文件,添加解析到其他地区的Snap仓库IPv6地址(不过这个需要你从其他能正常访问的IPv6机器上获取可用的IPv6解析结果)。
总结一下:Snap官方是支持IPv6的,但你的超时问题更可能是DNS解析、网络路由或CDN节点覆盖的问题,而非仓库本身仅支持IPv4。如果排查后还是解决不了,可以去Snapcraft的官方渠道提交反馈,附上你的网络环境信息,他们应该能帮你定位具体节点的问题。
备注:内容来源于stack exchange,提问作者baltazar

