使用 pf 防火墙打开 os x 10.10.3 yousemite 上的端口 9 时遇到问题。我想这样做是为了能够将局域网唤醒数据包发送到此端口。我认为要使 WoL 正常工作,应该为 UDP 数据包打开端口(在要唤醒的机器上)(如果我说得不对,请纠正我)
有这个/etc/pf.conf:
# Open port 9 for UDP on all interfaces
pass in proto udp from any to any port 9 keep state
用以下命令重新启动 pf:
sudo /sbin/pfctl -f /etc/pf.conf
但当port closed
我这样做时:
sudo nmap -sU -p 9 localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000085s latency).
PORT STATE SERVICE VERSION
9/udp closed discard
我尝试创建自定义/etc/pf_cust.conf:
anchor "pf.rules"
load anchor "pf.rules" from "/etc/pf.anchors/pf.rules"
并使用自定义规则集/etc/pf.anchors/pf.rules:
# Open port 9 for UDP on all interfaces
pass in proto udp from any to any port 9 keep state
使用:sudo pfctl -f /etc/pf_cust.conf
但 nmap 显示它仍然关闭并且局域网唤醒不起作用(MacPro 相对较新(2013 年),具有无线唤醒:支持,并且在系统偏好设置-->节能器中选中了“唤醒网络访问”)。
请给我指明正确的方向。
答案1
这台 Mac Pro 是否充当某种网络中间件(路由器/网关/NAT/网桥)?或者它是您要唤醒的端点?
如果您尝试唤醒的是端点,则无需打开端口。局域网唤醒数据包在链路层工作。以太网(或 Wi-Fi)芯片在收到的每个数据包中查找魔法模式(ff:ff:ff:ff:ff:ff 后跟 16 个接口硬件 MAC 地址副本)。它甚至不关注数据包中的任何其他内容,因此它不知道该数据包是否是 IP 数据包,也不知道它发送到哪个 TCP 或 UDP 端口。
对于 WoL 魔术包,只有在尝试从互联网的不同部分发送数据包时才需要担心 IP 地址和端口,并且需要想办法让数据包通过路由器、防火墙和 NAT 网关。但一旦数据包到达以太网硬件目标主机需要唤醒时,它就完成了工作并唤醒了目标主机。如果主机操作系统在唤醒后决定拒绝数据包,则没有任何区别,因为到那时,主机已经唤醒,因此工作已经完成。