#服务器端和本地端都运行,丢弃RST包
iptables -I INPUT -p tcp --tcp-flags RST RST -j DROP
#网关用这个可以丢弃转发的数据包中的RST包,使得网关下的设备都能恢复访问
iptables -I FORWARD -p tcp -i pppoe-wan --tcp-flags RST RST -j DROP
#pppoe-wan换成你的出口接口
101
admin13579 2023-09-04 15:47:57 +08:00 via Android
@lanwairen123 如果是路由黑洞这种墙,或者用丢包的方式来进行阻断,那肯定就没用了
但之前河南阻断大量网站时,是有省内设备只往客户端发送单向 rst 包来阻断连接,这时在客户端上丢弃入站的 rst 包,确实是可以无视阻断继续连接的。 这个方法对墙无效的原因是,一般被 GFW 墙的 vps 之类的都是直接封 IP ,丢包式阻断,所以忽视 rst 包也没用。而被墙的网站虽然都是只墙域名,但发送 RST 包是双向的,你的客户端忽略了,对方网站服务器也不会为了配合你而忽略 RST ,所以还是会被阻断。 不过这种特殊情况下,http 服务就你自己一个人用,客户端和服务端控制权都在你手里,而且只是阻断域名,阻断方式仅为 rst 的话,我觉得这种两边都忽略 RST 包的方法或许还可以一试 |
102
windrun 2023-09-04 18:02:38 +08:00
|
103
lanwairen123 OP @admin13579 您说的很有道理,我查阅了相关资料,丢掉 rst 包这种做法在刚开始有 reset 墙的时候就有人做过研究,我刚才也试了,确实是可以的,在服务器和本地分别执行 iptables -I INPUT -p tcp --tcp-flags RST RST -j DROP 丢掉 rst 包后就能正常访问了,确实是一个思路,但是这种直接丢弃所有 rst 包的行为会不会导致其他问题,正常的 rst 包也被丢弃了
|
104
lanwairen123 OP @windrun 这篇文章或类似的说法我也查到过,但是在我这边无效了,可能是墙升级了
|
105
lanwairen123 OP @admin13579 问了 claude.ai ,它这样说的:
如果完全丢弃所有 RST 包,可能会带来以下一些不良后果: 正常连接被终止时无法释放资源,从而造成资源泄漏。TCP 连接的正常终止依赖 RST 报文释放连接。 无法快速中止无效连接,资源被无效连接占用。对无效的连接请求,服务器会发送 RST 报文快速拒绝连接。 连接重置功能被破坏。RST 使得 TCP 连接立即重置,丢弃 RST 会导致错误连接状态持续存在。 防火墙和入侵检测系统功能被影响。许多防火墙和 IDS 依赖 RST 报文判断连接状态。 网络堵塞加剧。丢弃 RST 使得断开的连接持续占用网络资源,加重网络拥塞。 某些应用连接功能失效。像 FTP 被动连接需要 RST 报文正确关闭旧连接。 引发更多安全问题。攻击者可以利用丢弃 RST 来实现一些攻击行为。 所以,完全丢弃所有 RST 包会对网络功能和安全造成影响。应该根据实际需要,有针对性地处理 RST 包,不能简单地全面丢弃。同时,关键服务也需要有应对措施,避免依赖 RST 的功能被破坏。 |
106
admin13579 2023-09-05 00:33:00 +08:00 via Android
@lanwairen123 抱歉,这个我还不是很清楚。但在我一点模糊的印象中,正常场合下 RST 是用来直接关闭异常高频的 tcp 连接的,结合你问到的答案,大概就是一刀切丢掉所有 RST 包可能会使 tcp 连接不能被迅速关闭导致拥塞,同时使你无力阻止一些潜在的网络攻击。
如果不放心的话,可以暂时不采用这种比较激进的措施,改用客户端服务端都开启 tcp timestamp 验证的方法,可以精准针对丢弃运营商省内设备发的 RST 包,而不丢弃正常的。 |
107
lanwairen123 OP @admin13579 #102 提到的文章说的就是 timestamp ,但在我这并不行,可能已经升级了
|
108
YGBlvcAK 2023-09-05 07:49:28 +08:00 via Android
强制启用 sni 加密,防止域名泄露,这样呢?
|
109
lanwairen123 OP @YGBlvcAK 刚刚测试了,强制 tls 1.3 还是会阻断,我没找到 nginx 配置 esni 的方法,不过有说加密 sni 的直接一刀切,全部阻断,想想也是,墙不知道你干啥,直接阻断了事
|
111
vvzzxx 2023-09-05 10:50:35 +08:00
我也遇到了差不多的问题,黑群晖在老家,人在郑州,阿里云 ipv6 域名解析。这几天突然就不能域名访问了,联通电信流量都不能访问,连了一下又 ipv6 的联通 WiFi 正常,家里朋友访问就是正常。看了一下楼里 rst 的解决方法,不了解这方面,只感觉学习成本起飞。
|
112
yinmin 2023-09-05 12:26:50 +08:00
@B1acKy1in #110 不止是 3 天,是一直存在。如果不存在了,过不了几周,云服务商就会打电话给你,然后会取消备案接入。如果你的备案只有 1 个接入,接入取消后备案也被取消了。
|
113
yinmin 2023-09-05 13:00:55 +08:00
@lanwairen123 如果你采用丢弃 RST 包的方式,建议仅丢弃 443 端口的 RST 包来提升稳定性,如果能配置其它端口(例如:4443 端口),把 https 服务改成 4443 端口,然后仅丢弃 4443 端口更好,毕竟这个端口只有你 1 个人在用,仅丢弃这一个端口的 RST 包不会对服务器产生过多的压力。
iptables -I INPUT -p tcp --dport 4443 --tcp-flags RST RST -j DROP 另外,加密 SNI 的方法是不可行的。 |
114
lanwairen123 OP @yinmin 谢谢,准备试几天看看会有什么影响
|
115
cunganbu 2023-09-06 23:20:44 +08:00
我河南电信,突然发现自己境外的网站打不开了,以为是域名被墙,买了新域名 24 小时被墙,我以为是我用免费证书的问题,又买了新域名换了一家 ssl 证书 24 小时不到又被墙,我以为我服务器被盯上了,又换了服务器+新域名 24 小时不到又被墙...我才发现了问题的严重性,抓包看了一下就是楼主的情况,只要是 http/https 流量域名不是备案的+服务器不在国内,基本 24 小时内给你阻断,换了联通的网可以间歇性打开....日子越来越好了
|
116
FishHawk 2023-09-13 13:12:06 +08:00 1
@admin13579 说一个思路,墙的 RST 包只要你自己发它就不会发。所以可以每个 TCP 连接发一个特定 TLL 的 RST 包,刚好到墙又到不了服务器,就能破。
|
117
cyaki 230 天前
@lanwairen123 请教下, 有后续解决方案没哇 ?
|
118
lanwairen123 OP @cyaki 现在没那么严重了,如果你还存在这个问题,建议参考楼上的讨论丢弃 RST 包试试。
|
119
frankilla 217 天前
没看懂,但是焦作联通,我在家里自建的服务,通过域名能访问。
|
121
ccrichard 85 天前
同遇到了,目前有好办法访问它吗 移动端怎么办呢
@lanwairen123 |