IP、路由与 IPv6

Mac 上的 IPv6 问题

大多数网络会同时为 Mac 分配 IPv4 和 IPv6 地址。如果 IPv6 路径不通,有些连接会等待或失败。

适用于:“系统设置”步骤适用于 macOS 13 Ventura 及更高版本。“终端”命令适用于所有当前 macOS 版本。核查日期:2026年10月29日

症状

  • 有些网站或 API 卡住,其他的却立即载入。
  • 某个工具要延迟一会儿或重试几次后才能连上。
  • 在一个网络上连接正常,换到另一个网络就不行。

可能的原因

  • 路由器通告了 IPv6,但不路由 IPv6。Mac 获得了 IPv6 地址,但经由 IPv6 的流量到达不了互联网。
  • 运营商或 VPN 不完全支持 IPv6。有些 VPN 只承载 IPv4,IPv6 流量就会绕过隧道或失败。
  • 防火墙阻止 IPv6。路由器或公司防火墙可能阻止 IPv6 流量,而放行 IPv4。

如何检查

  1. 找到每个网络端口的设备名称,例如 Wi-Fi 是 en0。

    networksetup -listallhardwareports
  2. 显示 Wi-Fi 接口的 IPv6 地址。以 fe80 开头的地址仅为链路本地地址。

    ifconfig en0 inet6
  3. 显示 Mac 接受的路由器通告。如果出错,说明没有 IPv6 路由器应答。

    ipconfig getra en0
  4. 通过 IPv6 ping 一个公共地址。

    ping6 -c 3 2606:4700:4700::1111
  5. 先仅用 IPv4 请求一个网站,再仅用 IPv6 请求,比较结果。

    curl -4 -I https://www.apple.com
  6. 如果 IPv4 请求成功而 IPv6 请求失败,说明 IPv6 路径不通。

    curl -6 -I https://www.apple.com

如何修复

  1. 重启路由器,然后再测试。

  2. 更新路由器固件,或向运营商咨询你线路上的 IPv6 情况。

  3. 测试时,在该服务上关闭 IPv6。

    networksetup -setv6off Wi-Fi

    需要管理员密码。

  4. 测试后重新打开 IPv6,使用自动设置。

    networksetup -setv6automatic Wi-Fi

    需要管理员密码。

  5. 也可以使用“系统设置”>“网络”> 相应服务 >“详细信息”>“TCP/IP”中的“配置 IPv6”菜单。

  6. 如果只有关闭 IPv6 后问题才消失,向网络所有者或运营商报告。

使用 Kilobat

  1. why 会分别尝试 IPv4 和 IPv6,并指出哪一个失败。

    kilobat why api.example.com
  2. MCP 工具 diagnose_connection 会为智能体返回同样的步骤。参阅“找出某个网站或 API 无法连接的原因”。

常见问题

应该一直关闭 IPv6 吗?

不应该。只在测试时关闭。请网络所有者修复 IPv6,然后再重新打开。

什么是链路本地地址?

以 fe80 开头的地址只在本地链路上有效,无法访问互联网。

参考资料

  • networksetup(8),macOS 27.2 自带的 man 手册页
  • ipconfig(8),macOS 27.2 自带的 man 手册页
  • ping6(8),macOS 27.2 自带的 man 手册页
  • curl(1),macOS 27.2 自带的 man 手册页
  • Apple 支持:在 Mac 上更改 TCP/IP 设置

参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。