我正在使用 Internet Share 功能将我的 raspberry pi 3(raspbian stretch)连接到我的 Macpro(10.13.2;High Sierra)的 802.3 以太网端口,该端口是桥接适配器的一部分(bridge100
)。Mac 上的 Internet 接口是en2
(无线)。
尽管我可以 pinggoogle.com
或mirrordirector.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 系统中的复选框优先。