30 lines
1.2 KiB
Markdown
30 lines
1.2 KiB
Markdown
---
|
||
title: "TCP RST 攻击"
|
||
type: concept
|
||
tags: [network, firewall, gfw, tcp]
|
||
---
|
||
|
||
## Definition
|
||
TCP RST(Reset)攻击是 GFW(中国国家防火墙)使用的一种连接阻断技术。当 DPI(深度包检测)识别到目标域名或流量特征后,GFW 向通信双方发送伪造的 TCP RST 包,强制关闭连接。
|
||
|
||
## Mechanism
|
||
1. 客户端向 GitHub 发起 HTTPS 连接(目标 443 端口)
|
||
2. GFW 的 DPI 模块检测到 SNI/域名包含 github.com
|
||
3. GFW 向客户端和服务器双方发送伪造的 TCP RST 包
|
||
4. TCP 栈收到 RST 后强制关闭连接,报 `Connection reset by peer`
|
||
|
||
## Why "Connection was reset" vs "Timeout"
|
||
- `Connection reset`:GFW 主动发送 RST 包,连接被强制中断
|
||
- `Timeout`:GFW 直接丢弃包,不返回任何响应(更隐蔽)
|
||
|
||
## Relationship to Git Operations
|
||
Git Push 时的 `Recv failure: Connection was reset` 错误本质是 GFW 的 TCP RST 攻击,而非 GitHub 服务器或权限问题。
|
||
|
||
## Solutions
|
||
- 让 Git 流量走本地代理(GFW 只检测到代理服务器 IP,无法识别目标域名)
|
||
- 切换到 SSH 协议(22 端口干扰相对较少)
|
||
- 使用 Gitee/镜像等国内代码托管平台
|
||
|
||
## Source
|
||
- [[Git Push 连接重置问题修复]]
|