macOS 下一键验证网站是否支持 IPv4 / IPv6 双栈

排查 IPv6 网络时,很多人都会直接执行:

1
ping domain.com

但仅凭这一条命令,并不能完整验证网站是否真正支持双栈。

下面介绍一种适用于 macOS 的简单方法。

macOS 使用两套 Ping 工具

macOS 采用 BSD 工具链,分别提供:

命令作用
pingIPv4
ping6IPv6

与 Linux 不同,macOS 没有 ping -4ping -6ping4 等命令。

第一步:检查 DNS

先确认网站是否同时提供 A 和 AAAA 记录:

1
2
dig +short A bing.com
dig +short AAAA bing.com

如果两条命令都返回 IP 地址,则说明该网站具备双栈 DNS 解析能力。

第二步:验证连通性

分别测试 IPv4 和 IPv6:

1
2
ping bing.com
ping6 bing.com

如果两者都能够收到回复,则说明:

  • 网站同时支持 IPv4 和 IPv6;
  • 当前网络同时具备 IPv4、IPv6 连通性。

推荐测试目标

下面几个网站都适合作为双栈测试目标:

网站推荐域名
Microsoft Bingbing.com
淘宝taobao.com
QQwww.qq.com

注意: qq.com 根域名目前主要提供 IPv4,建议使用 www.qq.com 进行双栈测试。

一键检测脚本

下面这个脚本会自动检测:

  • A(IPv4)记录
  • AAAA(IPv6)记录
  • IPv4 连通性(ping
  • IPv6 连通性(ping6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env bash

set -euo pipefail

DOMAINS=(
"bing.com"
"taobao.com"
"www.qq.com"
)

resolve_ipv4() {
dig +short A "$1" |
awk '/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/ { print; exit }'
}

resolve_ipv6() {
dig +short AAAA "$1" |
awk '/:/ { print; exit }'
}

printf '| Domain | IPv4 (A) | IPv6 (AAAA) | ping | ping6 |\n'
printf '|---|---|---|:---:|:---:|\n'

for domain in "${DOMAINS[@]}"; do
ipv4="$(resolve_ipv4 "$domain")"
ipv6="$(resolve_ipv6 "$domain")"

if [[ -n "$ipv4" ]]; then
ping -c 1 "$ipv4" >/dev/null 2>&1 && p4="✅" || p4="❌"
else
ipv4="—"
p4="—"
fi

if [[ -n "$ipv6" ]]; then
ping6 -c 1 "$ipv6" >/dev/null 2>&1 && p6="✅" || p6="❌"
else
ipv6="—"
p6="—"
fi

printf '| `%s` | `%s` | `%s` | %s | %s |\n' \
"$domain" "$ipv4" "$ipv6" "$p4" "$p6"
done

实测结果

当前网络环境下,脚本输出如下:

DomainIPv4 (A)IPv6 (AAAA)pingping6
bing.com150.171.28.102620:1ec:33:1::10
taobao.com59.82.43.2382408:4001:f10::5e
www.qq.com111.30.185.1952409:8702:4860:1002::33

由于 DNS 会受到地区、运营商和 CDN 调度影响,不同网络环境解析到的 IP 地址可能不同。但只要同时存在 A、AAAA 记录,并且 pingping6 都能够正常连通,就说明当前环境下双栈工作正常。

总结

验证网站是否真正支持 IPv4 / IPv6 双栈,只需要四步:

1
2
3
4
5
dig +short A domain
dig +short AAAA domain

ping domain
ping6 domain

相比只执行一条 ping 命令,这种方式能够同时验证 DNS 解析和 IPv4、IPv6 的实际连通性,更适合作为日常网络排查和双栈测试的方法。

网络是否支持双栈,不是看一条 ping 命令,而是同时验证 DNS、IPv4 和 IPv6 连通性。这样得到的结论才更准确,也更有参考价值。

这篇文章是通过 ChatGPT 协助生成的。