最近需要在Mac上禁止几个IP的通过,在网上搜到大部分都是通过编辑hosts文件禁用域名的访问。
经过一发查找后发现可以通过Mac上的pf服务达到禁用的目的。
具体pf的命令通过手册查看:
1
|
man pfctl
|
首先用root 权限修改 /etc/sysctl.conf
文件:
1
|
sudo vim /etc/pf.conf
|
不用看里面的内容,在最下面添加以下文本,记得替换成你想屏蔽的ip:
1 2 3 |
# 屏蔽ip block drop from any to 17.253.114.253 block drop from any to 131.6.76.53 |
使用-f命令为pf服务启动指定的conf文件
1 2 |
sudo pfctl -f file #Load the rules contained in file. This file may contain macros, tables, options, and normalization, queueing, translation, and filtering rules. |
使用 -e
命令启用 pf 服务。使用 -E
命令强制重启 pf 服务,使用 -d
命令关闭 pf。
现在我们启动pf服务
1
|
sudo pfctl -ef /etc/pf.conf
|
此时发现再去ping这几个ip已经ping不通了
从 Mavericks 起 pf 服务不再默认开机自启。
如果我们想实现开机自动启动该服务,首先需要关闭系统的SIP,网上有很多方法,这里不再赘述。
然后修改 /System/Library/LaunchDaemons/com.apple.pfctl.plist
当尝试编辑该文件时发现系统是不可读状态,原因是从macOS 10.15开始系统将默认被挂载为只读。
文件详细里面多了一条restricted,被限制写的操作。
还好还有另外的方法,以读写模式重新挂载系统即可。
1 2 |
sudo mount -uw / killall Finder |
随后重新打开向 plist 文件中添加 -e
行,如下所示:
1 2 3 4 |
pfctl -e -f pf.conf |
下次系统启动时可以自动启动pf服务。
还是非常实用的 MJJ必学
?
非常实用
实用,感谢分享
实用,感谢分享
666
good
谢谢分享
谢谢分享
非常感谢楼主的分享!支持…