如何在 macOS Mojave 规则上设置 PF 并限制 ip 访问

How set PF on macOS Mojave rules and restrict ip access

信息

Docker 对于 Mac:版本:2.0.0.3 (31259)

macOS:版本 10.14.4 Mojave

PF规则

参考linkhttps://blog.neilsabol.site/post/quickly-easily-adding-pf-packet-filter-firewall-rules-macos-osx/

麻烦

我的烦恼是:

/etc/pf.conf中添加规则:

block return in proto tcp from any to any port 443
pass in inet proto tcp from 10.2.0.0/24 to any port 443 no state

然后运行命令sudo pfctl -evf /etc/pf.conf

然后在浏览器中(Chrome/Safari)无法访问该ip地址。 pf 不能在 mojave 中工作吗?

感谢您阅读我的博客,抱歉耽误了时间。

我使用与您的设置类似的设置进行了一些测试,pf 似乎在 Mojave (10.14.x) 和 Catalina (10.15.x - beta) 中以相同的方式工作在 High Sierra (10.13.x).

您是否试图从 Mac 运行 Docker 通过 https://localhost or https://127.0.0.1 访问站点?如果是,您可能需要添加第二条规则(下面的最后一行):

block return in proto tcp from any to any port 443
pass in inet proto tcp from 10.2.0.0/24 to any port 443 no state
pass in inet proto tcp from 127.0.0.1 to any port 443 no state

为了在 Mojave 和 Catalina 上进行测试,我执行了以下操作。

  1. 启动 Apache 测试容器
docker run -dit --name apache24-test -p 80:80 httpd:2.4
  1. 通过http://localhost and http://ipaddress

  2. 确认访问
  3. 将这些规则添加到 /etc/pf.conf

block return in proto tcp from any to any port 443
pass in inet proto tcp from 10.2.0.0/24 to any port 443 no state
pass in inet proto tcp from 127.0.0.1 to any port 443 no state
  1. 加载规则并启用 pf
sudo pfctl -f /etc/pf.conf
sudo pfctl -E

完成后,可以从 Mac 运行 Docker 和 10.2.0.0/24 子网中的其他 PC 的端口 80 访问 Apache 测试站点 "It Works" .无法从其他网络访问它。

让我知道这是否有帮助或有任何不同。如果没有,可能需要 Docker 级别的网络配置来解决。

谢谢, -尼尔