我在运行Server 3.0.2的OSX 10.9系统上使用IceFloor设置了pf。 似乎一切都好,除了我不能使用本地主机的DNS名称或公共IP连接到系统。 例如,我可以从互联网连接到http /端口80,但不能使用公共IP从机器本身连接。 从机器到localhost / 127.0.0.1的连接起作用。 这是我得到的日志(xxxx是主机的公共IP):
rule 7/0(match): block in on en0: xxxx80 > xxxx64460: 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_rules?
提前致谢,
保罗
我也正面临这个问题,并花了一些testing和tcpdump安静一下tcpdump一下。
为了回答您的第一个问题, rule 7/0(match)哪一个是:IceFloor自动添加的“Generic_blocks_(IPv4)”规则,用于阻止和logging所有非明确授权的stream量。 您可以通过以root身份运行pfctl -gsr来确认该规则的编号。
关于它被阻塞的原因。 入站连接是被阻塞的。 它与无路由或可见规则集中的任何内容无关。 它与您的DNS名称在本地如何处理有关。 您的计算机的路由表( netstat -r )有一个指向lo0接口上localhost DNS名称的条目。
日志条目包含一些令人困惑的信息,特别是block in on en0的block in on en0 ,这导致您相信接口en0上发生了一些事情。 但是,执行tcpdump -nvvvi en0 tcp and port 80表明实际上没有数据包在en0上en0 。 但是,发现的数据包是tcpdump -nvvvi lo0 tcp and port 80 ,从而确认tcpdump -nvvvi lo0 tcp and port 80上的数据stream量(如预期的那样)。
默认的IceFloorconfiguration( /Library/IceFloor/icefloor.conf )是通过set skip on lo0上set skip on lo0的行来生成的。 起初,这似乎是一个非常标准的欢迎线(见http://www.openbsd.org/faq/pf/options.html )。 其他每一个lo0受到pf规则的阻碍。 在预感,我决定注释掉这条线,并添加一个新的规则(就在表包括之后): pass quick on lo0 。 重新加载这个修改的configuration后,我成功地通过我的DNS名称(问题已解决)访问我的Web服务器。 所以看起来像set skip on lo0线上的set skip on lo0有一些问题。
手动修改icefloor.conf文件的挫折是,它会阻止您使用IceFloor界面中的防火墙选项卡。 由于保存新configuration将会覆盖所有手动编辑。