从ufw获取对应iptables规则并限制mDNS仅允许本地局域网访问的方法
嘿,我来帮你搞定这两个问题,一步步说清楚:
一、获取ufw对应的完整iptables规则
ufw本质是iptables的封装工具,iptables -L只能看到简化版规则,要查看它生成的所有细节,更推荐用这个命令:
sudo iptables-save
它会输出完整的规则链、参数配置,包括ufw自动添加的ufw-not-local链和mDNS相关规则。要是你只想看ufw自身管理的规则,直接用sudo ufw status verbose也能得到更直观的详细信息。
二、限制mDNS仅允许本地局域网访问
你观察得没错,ufw默认的mDNS规则确实允许所有来源IP,要改成只开放给局域网,按以下步骤操作:
删除默认的mDNS规则
先查看ufw规则的编号,方便精准删除:sudo ufw status numbered在输出里找到和mdns(端口5353/udp)相关的允许规则,比如类似
[X] Allow IN 5353/udp from any to mdns.mcast.net,然后用编号删除它:sudo ufw delete [X]把
[X]换成实际的规则编号就行。添加局域网专属的mDNS规则
假设你的本地局域网网段是192.168.1.0/24(如果是其他网段,比如192.168.0.0/24就替换成对应的),执行下面的命令添加规则:sudo ufw allow in from 192.168.1.0/24 to any port 5353 proto udp这条规则会只允许该局域网内的设备发送mDNS请求到你的机器。
另外,mDNS依赖多播地址
224.0.0.251,你也可以补充一条更精准的规则,确保只允许局域网设备和这个多播地址通信:sudo ufw allow in from 192.168.1.0/24 to 224.0.0.251 port 5353 proto udp验证规则生效
执行sudo ufw status verbose或者sudo iptables -L | grep mdns,就能看到新规则已经生效,现在只有你的局域网IP段能访问mDNS服务了。
备注:内容来源于stack exchange,提问作者fghoussen

