OpenBSD pf“match in all scrub (no-df)”导致 HTTPS 在移动网络上无法访问

OpenBSD pf“match in all scrub (no-df)”导致 HTTPS 在移动网络上无法访问

首先:请原谅我的英语使用不佳。

几年来,我一直遇到 pf 中的“匹配所有 Scrub(无 DF)”规则问题。我不知道这里发生了什么。

我会尽量说得清楚和简单。pf.conf 已极度缩短,以适合本论坛帖子。

这是我的 pf.conf:

set skip on lo0
match in all scrub (no-df)
block all
block in quick from urpf-failed
pass in on em0 proto tcp from any to 213.125.xxx.xxx port 80 synproxy state
pass in on em0 proto tcp from any to 213.125.xxx.xxx port 443 synproxy state
pass out on em0 from 213.125.xxx.xxx to any modulate state

HTTP 和 HTTPS 运行良好。直到法国的一位客户(Wanadoo DSL)无法查看 HTTPS 页面!我责怪他的提供商,并没有对这个问题进行调查。

但后来……我买了一台 Android 三星 Galaxy SII(沃达丰)来监控我的服务器。几个小时后,我走出电话店:我的服务器上没有 HTTPS 连接!我以为我的服务器坏了,很快就开车回到办公室。但它们已经恢复了。

我发现禁用规则

match in all scrub (no-df)

解决了问题。Android 手机(Vodafone NL)和 Wanadoo DSL FR 现在可以使用 HTTPS。

但现在我不再需要擦洗了。这不是我想要的。

这里有谁知道发生了什么吗?我不知道。启用清理会导致某些 ISP 无法加载 HTTPS 网页,但并非所有 ISP 都无法加载。

在 systat 中,我奇怪地确实看到了状态创建和从那些 ISP 接收到的数据包......

仍然很困惑。我使用的是 OpenBSD 5.1/amd64 和 OpenBSD 5.0/i386。我的办公室有两个 ISP(一个 DSL 和一条电缆)。两者都有影响。

这很容易重现。我希望有人有遇到过这个问题的经验。

问候,

坦率

答案1

据我在pf.conf 手册页您可能需要将规则更改为:

match in all scrub (no-df random-id)    

答案2

在我看来,你似乎在阻止 ICMP 方面遇到了问题,而 ICMP 实际上是 TCP/IP 不可或缺的一部分。ICMP 至少用于路径 MTU 发现摘自 FreeBSD 手册,PF 部分

ICMP 协议在主机和网关之间发送和接收控制消息,主要是为了向发送者反馈前往目标主机途中遇到的任何异常或困难情况。路由器使用 ICMP 协商数据包大小和其他传输参数,这个过程通常称为路径 MTU 发现。

scrubPMTU 的工作原理正是使用 DF,除非删除规则,否则您会将其清除。

相关内容