
我已經在執行 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: 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)
是哪一個嗎?為什麼不允許從本地主機連接到公鑰(在任何開放連接埠上)?跟f規則有關係嗎no-route
?還是兩條Generic_blocks_
規則?
先謝,
保羅
答案1
我也面臨這個問題,需要進行一些安靜的測試才能tcpdump
解決所有問題。
回答你的第一個問題,哪一個是rule 7/0(match)
:它是 IceFloor 自動新增的「Generic_blocks_(IPv4)」規則,用來阻止和記錄所有非明確授權的流量。您可以透過pfctl -gsr
以 root 身分執行來確認該規則的編號。
說說被封的原因。入站連線被阻止。它與無路線或任何內容無關可見的規則集。這與本地處理 DNS 名稱的方式有關。您電腦的路由表 ( netstat -r
) 有一個指向介面localhost
上的DNS 名稱的項目lo0
。
日誌條目包含一些令人費解的信息,特別是block in on en0
,它會讓您相信介面上正在發生某些事情en0
。然而,執行 a 後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 介面中的「防火牆」標籤。因為儲存新配置將覆蓋任何手動編輯。