我已经在运行 Server 3.0.2 的 OSX 10.9 系统上使用 IceFloor 设置了 pf。一切似乎都很好,只是我无法使用 DNS 名称或来自 localhost 的公共 IP 连接到系统。例如,我可以从互联网连接到 http/端口 80,但不能使用公共 IP 从机器本身连接到。从机器到 localhost/127.0.0.1 的连接正常。这是我收到的日志(xxxx 是主机的公共 IP):
rule 7/0(match): block in on en0: x.x.x.x.80 > x.x.x.x.64460: Flags [R.], seq 1, ack 1, win 65535, length 0
以下是规则列表
$ sudo pfctl -s rules
[sudo] password for paul:
No ALTQ support in kernel
ALTQ related functions disabled
scrub-anchor "icefloor.nat" all fragment reassemble
anchor "icefloor.nat" all
block drop in quick from <emergingthreats> to any
block drop out quick from any to <emergingthreats>
block drop in log quick from <_blacklist> to any
block drop out log quick from any to <_blacklist>
block drop in quick from no-route to any
block drop in quick from urpf-failed to any label "uRPF"
block drop log inet all label "Generic_blocks_(IPv4)"
block drop log inet6 all label "Generic_blocks_(IPv6)"
anchor "icefloor.groupblocks" all label "Blocks"
anchor "inspector.blocks" all label "Temp_blocks"
anchor "icefloor.exceptions" all label "Logs_exceptions"
anchor "icefloor.portknocking" all label "Hidden_services"
anchor "icefloor.genericipv6" all
anchor "icefloor.inbound" all label "Local_services"
anchor "icefloor.outbound" all label "All_traffic"
anchor "icefloor.outbound_nat" all label "NAT_clients_traffic"
anchor "icefloor.custom_rules" all
你能告诉我rule 7/0(match)
是哪一个吗?为什么不允许从本地主机连接到公钥(在任何开放端口上)?这与no-route
f 规则有关吗?还是两个Generic_blocks_
-规则?
提前致谢,
保罗
答案1
我也遇到了这个问题,经过一番测试才弄清楚tcpdump
。
回答你的第一个问题,哪一个是rule 7/0(match)
:它是 IceFloor 自动添加的“Generic_blocks_(IPv4)”规则,用于阻止和记录所有未明确授权的流量。你可以pfctl -gsr
以 root 身份运行来确认该规则的编号。
继续说为什么会被阻止。入站连接被阻止了。这与 no-route 或任何其他内容无关可见的规则集。它与本地处理 DNS 名称的方式有关。您的机器的路由表 ( ) 中有一个指向接口netstat -r
的 DNS 名称条目。localhost
lo0
日志条目包含一些令人费解的信息,特别是block in on en0
,这让您相信接口 上发生了一些事情en0
。但是,执行tcpdump -nvvvi en0 tcp and port 80
表明实际上没有数据包在 上传输en0
。但是,发现了 的数据包tcpdump -nvvvi lo0 tcp and port 80
,从而证实流量(如预期)发生在 上lo0
。
默认的 IceFloor 配置 ( /Library/IceFloor/icefloor.conf
) 是用包含 的一行生成的set skip on lo0
。乍一看,这似乎是一行非常标准、受欢迎的行(参见http://www.openbsd.org/faq/pf/options.html)。 的其他部分lo0
似乎不受 pf 规则的阻碍。凭直觉,我决定注释掉该行并添加一条新规则(就在表包含之后):pass quick on lo0
。使用此修改后的配置重新加载后,我成功地通过我的 DNS 名称访问了我的 Web 服务器(问题解决了)。所以看起来该set skip on lo0
行有一些问题。
手动修改文件的缺点icefloor.conf
是,它会阻止您使用 IceFloor 界面中的“防火墙”选项卡。因为保存新配置将覆盖任何手动编辑。