另外一个有趣的思路,测试 IP 特定端口是否被屏蔽的方法

2022-06-09 01:28:19 +08:00
 AlphaTauriHonda
之前发的文章并不能测试单个端口是否被屏蔽。因为 DNS 污染通常不会在非 53 端口上触发,https://www.v2ex.com/t/857393 这篇的 Supplement 1 是有误的。能在非 53 端口或者 53 端口 TCP 模式下触发污染的域名有限,而且不是很多。

对于测试单个端口,这个构造 DNS 请求的方法不太好用。https://ping.sx/dig 这个工具对于非 53 端口的 DNS 支持有些问题,在其他端口没有开启 DNS 服务的情况下依然给出了结果。应该还是请求的 53 端口,那个自定义端口的设置没什么用。

同样,用这个方法甚至不需要拥有 IP 或者在上面开任何服务。

对于单个端口的测试,我们可以通过构造一个包含被审查的 S N I 的 HTTPS 请求来触发 RESET ,同时检测有没有收到伪造的 RESET 来判断端口是否被墙。这个 RESET 在访问 1-65535 端口都会被触发。当然这只是目前的状况,情况有一定可能会变化。

随便找一个很短,被屏蔽的域名。www.bbc.com

找一个被墙端口的 IP ,对照两个没有被墙端口的 IP 。
就以 8.8.8.8 为例。8.8.8.8 的 443 端口被墙了,但是用来对照的 9.9.9.9 ,204.79.197.200 没有被墙 443 端口。


9.9.9.9 ,204.79.197.200 的 443 端口都没有一片红。


8.8.8.8 被墙了 443 端口。

用 cURL 来构造触发 RESET 的请求。
curl --resolve 'www.bbc.com:443:9.9.9.9' https://www.bbc.com
OpenSSL SSL_connect: Connection reset by peer in connection to www.bbc.com:443

curl --resolve 'www.bbc.com:443:204.79.197.200' https://www.bbc.com
OpenSSL SSL_connect: Connection reset by peer in connection to www.bbc.com:443
测试没有被墙相应端口的 IP ,可以正常收到伪造的 RESET 。

curl --resolve 'www.bbc.com:443:8.8.8.8' https://www.bbc.com
Failed to connect to www.bbc.com port 443: Connection timed out
用被墙了相应端口的 IP ,会出现 time out 错误,不能收到伪造的 RESET 。

如果要检测其他端口把这段命令里的 443 换掉就好了。
curl --resolve 'www.bbc.com:想检查的端口:被测 IP' https://www.bbc.com

测试 IP 的特定端口是否被屏蔽,目前只能在墙内使用 cURL 构造请求,应该没有什么方便的线上工具可以用。
4265 次点击
所在节点    宽带症候群
21 条回复
AlphaTauriHonda
2022-06-11 16:58:20 +08:00
@h4wklee Sergio Pérez 刚续签。我觉得难了。
开车不行,还是上网有意思。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/858294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX