Mac系统设置只允许特定IP访问
Mac用户有时会遇到这样的需求:只想让某个固定IP的设备连上本机的远程桌面、Web服务器或SSH服务,其他设备一律拒之门外。系统自带的防火墙虽然能用,但默认只做应用层限制,真要按IP精确放行,还得靠底层方案。下面直接给出两种最实用的方法——一种硬核但彻底,一种简单但适用范围有限,可以按场景取舍。 用
Mac用户有时会遇到这样的需求:只想让某个固定IP的设备连上本机的远程桌面、Web服务器或SSH服务,其他设备一律拒之门外。系统自带的防火墙虽然能用,但默认只做应用层限制,真要按IP精确放行,还得靠底层方案。下面直接给出两种最实用的方法——一种硬核但彻底,一种简单但适用范围有限,可以按场景取舍。

用pfctl配置防火墙规则
这是macOS原生支持、最底层也最可靠的方案,直接操作Packet Filter内核模块,规则生效后立即拦截非授权流量。一旦配好,连图形界面都不用碰,重启也依然保留。
第一步:用管理员权限打开pf配置文件
sudo nano /etc/pf.conf
第二步:在文件末尾添加两条规则(注意替换实际值):
# 允许特定IP访问本机8080端口
pass in on en0 proto tcp from 192.168.1.100 to any port 8080
# 拒绝其他所有TCP入站连接(可选,增强安全性)
block in on en0 proto tcp to any port 8080
【en0是默认有线网卡名,Wi-Fi通常为en1;务必先用ifconfig确认当前活跃接口】
第三步:重载配置并启用pf
sudo pfctl -f /etc/pf.conf → sudo pfctl -e
这一步执行完,规则就已生效。不需要重启,也不依赖图形界面状态。如果之前启用过pf,记得先停用再重载,避免规则冲突。
通过“共享”设置限定服务访问范围
适用于开启屏幕共享、文件共享、远程登录等系统自带服务时做粗粒度控制,操作简单但仅支持预设网络类型。说白了,它只能放行整个私有网段,没法精确到单个IP。
方法一:允许“专用网络”内所有设备访问
进入“系统设置”→“网络”→点击右下角“…”→“高级”→“服务”,勾选对应服务(如“远程登录”),再点“选项”→在“允许来自以下用户的连接”中选择“专用网络”。
该选项自动放行10.0.0.0/8、172.16.0.0/12、192.168.0.0/16等私有地址段。
方法二:创建自定义IP地址群组(需macOS Server App或命令行工具)
普通用户无法直接在系统设置里输入单个IP,必须借助Server App或手动编辑plist文件。此方式复杂度高,且仅对部分系统服务(如AFP/SMB共享)生效,不推荐日常使用。
验证规则是否起作用
配置完别急着收工,务必做一次实战测试——从被允许的IP设备上执行:
telnet 192.168.1.50 8080(将192.168.1.50换成你的Mac IP)
如果连接成功,说明放行规则有效;再换一台不在白名单内的设备尝试相同命令,应显示“Connection refused”或超时。
若白名单设备也无法连接,请检查Mac本机服务是否已启动、端口是否被其他程序占用、以及en0/en1接口是否填写错误。
运行sudo pfctl -s rules可查看当前加载的所有pf规则,确认添加的那条pass规则确实存在。要是规则没生效,八成是接口名配错了或者pf没启用——用sudo pfctl -s info看一眼状态就知道了。
