MacOS下不终止进程如何封禁本地1234端口?
MacOS下不终止进程如何封禁本地1234端口?
我完全理解你想要在不终止进程的前提下封禁本地1234端口,以此测试 fallback 场景的需求——MacOS 下确实得靠 pfctl 来做这类端口封禁操作,可能你之前的命令在细节上没踩对,我来给你梳理靠谱的操作步骤:
第一步:先确认当前的pf规则(可选)
先看看系统现有规则有没有冲突,执行:sudo pfctl -sr第二步:加载封禁1234端口的规则
这条命令会保留现有规则的同时,新增封禁本地回环接口(lo0)上1234端口TCP流量的规则,并且启用pf:(sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -e -f - 2>/dev/null这里解释下关键参数:
lo0是MacOS的本地回环接口,比直接写127.0.0.1更适配系统网络配置;block drop quick表示直接丢弃匹配的流量,不会返回任何响应,刚好满足你测试 fallback 的需求;-e用来启用pf(MacOS默认是关闭状态);-f -表示从标准输入加载规则,这样我们就能把现有规则和新规则合并加载。
第三步:验证规则是否生效
你可以用telnet localhost 1234测试,如果连接被拒绝或者长时间超时,就说明规则生效了;也可以直接查看规则是否存在:sudo pfctl -sr | grep 1234第四步:恢复端口访问(测试完成后)
如果你想恢复1234端口的访问,最简单的方式是直接关闭pf:sudo pfctl -d
这样所有临时添加的规则都会失效,系统回到默认状态。
之前你用的命令可能没生效,大概率是因为用了127.0.0.1而非接口名lo0,或者没有正确触发pf的启用,试试上面的步骤应该就能解决问题啦。
备注:内容来源于stack exchange,提问作者AP_22
相关产品推荐
相关产品推荐

