激活ufw后miniupnpc Python模块报错:无法发现UPnP设备
问题解决:UFW防火墙阻挡UPnP设备发现
你的代码报错是因为UFW默认拦截了UPnP设备发现所需的SSDP(简单服务发现协议)流量,这是UPnP设备交互的基础。
解决步骤:
允许SSDP组播流量(UPnP发现依赖的核心)
执行以下UFW命令开放相关端口:sudo ufw allow in proto udp to 239.255.255.250 port 1900 sudo ufw allow out proto udp from any to 239.255.255.250 port 1900这两条命令分别允许设备接收和发送SSDP组播请求(目标地址
239.255.255.250是UPnP标准组播地址,端口1900是SSDP默认端口)。(可选)允许与路由器UPnP服务的TCP通信
部分路由器的UPnP服务会使用TCP端口(通常是5000或随机高位端口),如果执行第一步后仍有问题,可以允许本地到路由器IP的TCP流量:sudo ufw allow out to <你的路由器IP> proto tcp替换
<你的路由器IP>为实际地址(比如192.168.1.1)。重启UFW生效
sudo ufw reload
验证
重新运行你的Python代码,应该能正常发现UPnP设备并获取公网IP了。
内容的提问来源于stack exchange,提问作者Ghost
相关产品推荐
相关产品推荐

