IPFW 拒绝 SSL 连接

IPFW 拒绝 SSL 连接

fsockopen我在使用诸如、等函数通过 PHP 脚本加载 https 网站(谷歌、脸书、亚马逊)时遇到问题file_get_contents。操作超时。因此,我开始查看我的系统设置,并注意到当 ipfw 服务停止时,它可以正常工作。

所以这个问题肯定与我的 IPFW 配置有关。我已启用日志记录,在尝试执行 PHP 脚本时,日志文件中弹出以下内容:

ipfw: 1000 Deny ICMPv6:1.3 [2001:...:...:...::] [2001:...:2:...::] in via em0
ipfw: 1000 Deny ICMPv6:131.0 [...::...:...:...:...] [...::1:...:0] in via em0
ipfw: 1000 Deny ICMPv6:136.0 [2001:...:...:...:ff:ff:ff:ff] [...:...:2:...::] in via em0

虽然这看起来像是 IPv6 的问题,但是我确实allow all在我的 ipfw 文件中保留了状态类型的连接。

这是我当前正在使用的配置:

#!/usr/local/bin/bash

IPF="/sbin/ipfw -q add"

/sbin/ipfw -q -f flush

$IPF 10 allow all from any to any via lo0
$IPF 11 deny all from any to 127.0.0.0/8
$IPF 12 deny all from 127.0.0.0/8 to any
$IPF 13 deny tcp from any to any frag

$IPF 250 check-state
$IPF 260 allow tcp from any to any established
$IPF 270 allow all from any to any out keep-state
$IPF 280 allow icmp from any to any

$IPF 290 allow log tcp from 127.0.0.1/32 to 127.0.0.1/32 3306 in

$IPF 350 allow udp from any to any 53 in
$IPF 351 allow tcp from any to any 53 out
$IPF 352 allow tcp from any to any 80 in
$IPF 353 allow tcp from any to any 80 out
$IPF 361 allow tcp from any to any 443 in
$IPF 362 allow tcp from any to any 443 out
$IPF 363 allow tcp from any to any 22 in
$IPF 364 allow tcp from any to any 22 out

$IPF 1000 deny log all from any to any

另外:升级到 FreeBSD 10.3(之前是 9.2)后我开始遇到这个问题。

问题是什么?

答案1

我不使用 IPv6,但我注意到/etc/rc.firewall/etc/protocolsICMP 对于 IPv6 有不同的符号名称,即ipv6-icmp。如果您需要传递 IPv6 ICMP 数据包,您可能需要添加一条新规则:

allow ipv6-icmp ...

我不了解您现有的规则,并且您可能已经分离了诊断目的的in规则out,但是:

allow tcp from any to any xxx in
allow tcp from any to any xxx out

类似于(如果不等同于)以下内容:

allow tcp from any to any xxx

此外,无论如何,您的所有out规则都会被规则 270 所取代。

如果您的服务器需要使用名称服务,则您缺少一条允许通过 UDP 从远程 DNS 服务器发出响应的规则:

allow udp from any 53 to any

相关内容