Tutorial for testing the Great Firewall

本文中的 dig 命令为 nali-dig 的 alias,nali-cli 是一个在标准输出显示IP归属地的程序,你应该先去 https://nali.skk.moe 下载它。

DNS 污染

1
dig dw.com @8.8.8.8

回复应该类似

1
2
3
dw.com.                 210     IN      A       108.160.163.102 [美国 加利福尼亚州旧金山市 Dropbox 公司]

dw.com. 155 IN A 162.125.6.1 [美国 弗吉尼亚州阿什本 Dropbox 数据中心]

则说明该域名受DNS污染影响。

Host 检查

1
curl -v http://sm-miracle.com --connect-to ::1.0.0.1

出现

* Recv failure: Connection reset by peer

则表明存在审查。

SNI 检查

1
curl -v https://rentry.co --connect-to ::1.0.0.1

回复应当包括

1
2
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: Connection reset by peer in connection to rentry.co:443

则说明GFW会检查包含该域名的SNI。

得到正确的IP

非标准端口

1
dig @208.67.222.222 -p 5353 dw.com

回复是

1
2
dw.com.                 300     IN      A       194.55.30.46 [德国 德国国际广播电台 Deutsche Welle]
dw.com. 300 IN A 194.55.26.46 [德国 德国国际广播电台 Deutsche Welle]

是正确的IP。

其他可用的非标准端口DNS服务器还有

1
2
3
4
101.6.6.6:5353
9.9.9.11:9953
208.67.220.220:443
208.67.222.222:443

DNS over HTTPS

1
curl -v 'https://101.6.6.6:8443/dns-query?name=dw.com' | jq

回复包含

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"Answer": [
{
"name": "dw.com.",
"type": 1,
"TTL": 300,
"Expires": "Fri, 04 Feb 2022 10:36:24 UTC",
"data": "194.55.26.46"
},
{
"name": "dw.com.",
"type": 1,
"TTL": 300,
"Expires": "Fri, 04 Feb 2022 10:36:24 UTC",
"data": "194.55.30.46"
}
]
}

其中 data 包含正确 IP。