pf 防火墙阻止 raspbian apt-get 更新

pf 防火墙阻止 raspbian apt-get 更新

我正在使用 Internet Share 功能将我的 raspberry pi 3(raspbian stretch)连接到我的 Macpro(10.13.2;High Sierra)的 802.3 以太网端口,该端口是桥接适配器的一部分(bridge100)。Mac 上的 Internet 接口是en2(无线)。

尽管我可以 pinggoogle.commirrordirector.raspbian.org,但是当我尝试更新软件包时,apt-get 会永远挂起:

# apt-get update
0% [Connecting to mirrordirector.raspbian.org (93.93.128.193)] [Connecting to archive.raspberrypi.org (93.93.130.104)]

当我在 Mac 上禁用 pf 防火墙时,它开始工作。我的 pf 规则如下:

LAN="bridge100"
WLAN="en2"

dns="53"
ntp="123"

set fingerprints "/etc/pf.os"
set skip on lo
set block-policy drop

set ruleset-optimization basic
set optimization normal
set timeout { tcp.established 600, tcp.closing 60 }
scrub in all no-df fragment reassemble
antispoof log quick for { lo $LAN $WLAN }


block all
block in log quick from no-route to any

pass in quick on { $LAN $WLAN } proto { udp tcp } from any to any port $dns keep state
pass in quick proto udp from any port 67 to any port 68
pass in proto udp from any to port $ntp

pass in inet proto icmp from 10.8.0.0/24
pass in inet proto icmp from 192.168.1.0/24
pass in inet proto icmp from 192.168.2.0/24
pass in inet proto icmp from 172.16.42.0/24

pass out all

我应该使用什么规则来允许apt-get update。我想pass out all这样做,但似乎我不完全了解防火墙。请帮忙。

答案1

好吧,我终于搞明白了。这个问题很复杂。

1 – 我有以下我不知道的重定向规则:

rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass inet proto tcp from any to any port 443 -> 127.0.0.1 port 8443

所以我评论了它们,因为 apt-get 使用端口 80(也可能是 443)

2 - 重点。当滴答网络共享复选框优先,MacOS 动态添加以下 pf 锚点:

nat-anchor "com.apple.internet-sharing" all
rdr-anchor "com.apple.internet-sharing" all

scrub-anchor "com.apple.internet-sharing" all fragment reassemble
anchor "com.apple.internet-sharing" all

运行sudo pfctl -sa以确保这些锚点已包含在内。如果没有,则只需取消勾选然后再次勾选网络共享MacOS 系统中的复选框优先

相关内容