OpenWRT多网关情况下MiniUpnpd添加映射失败501
更新了OpenWTR1907之后发生的灵异事件 upnpd无法自动添加映射 查询详细日志后发现返回内容
更新了OpenWTR1907之后发生的灵异事件
upnpd无法自动添加映射
查询详细日志后发现返回内容
Sun Jul 5 08:41:59 2020 daemon.info miniupnpd[7417]: HTTP REQUEST from [::ffff:172.20.20.249]:36975 : POST /ctl/CmnIfCfg (HTTP/1.1)
Sun Jul 5 08:41:59 2020 daemon.debug miniupnpd[7417]: Host: 172.20.20.254:5000
Sun Jul 5 08:41:59 2020 daemon.info miniupnpd[7417]: SOAPAction: urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetCommonLinkProperties
Sun Jul 5 08:41:59 2020 daemon.info miniupnpd[7417]: HTTP REQUEST from [::ffff:172.20.20.249]:36976 : POST /ctl/IPConn (HTTP/1.1)
Sun Jul 5 08:41:59 2020 daemon.debug miniupnpd[7417]: Host: 172.20.20.254:5000
Sun Jul 5 08:41:59 2020 daemon.info miniupnpd[7417]: SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:2#GetExternalIPAddress
Sun Jul 5 08:41:59 2020 daemon.err miniupnpd[7417]: Failed to get ip address for interface
Sun Jul 5 08:41:59 2020 daemon.info miniupnpd[7417]: Returning UPnPError 501: Action Failed
\
翻找OpenWRT论坛发现有人有同样情况发生
大概会发生在多网关多越点的情况下
MiniUpnpd会启动的时候扫描所有的网关
然后如果不指定网关的网卡或者网关地址的话
扫描错误的网关就会导致映射添加失败
那么就查询下/etc/init.d/miniupnpd看看是怎么扫描的
echo "ext_ifname=$ifname"
echo "ext_ifname6=$ifname6"
[ -n "$external_ip" ] && echo "ext_ip=$external_ip"
//...
if [ -n "$external_iface" ] ; then
network_get_device ifname "$external_iface"
else
if [ -n "$external_zone" ] ; then
ifname=$(fw3 -q zone "$external_zone" 2>/dev/null | head -1)
else
network_find_wan external_iface && \
network_get_device ifname "$external_iface"
fi
fi
那就简单了
直接设置外网网卡或者IP即可
// 綁定外網網卡
uci set upnpd.config.external_iface='wan'
uci set upnpd.config.external_iface6='wan'
// 或者綁定外網IP
uci set upnpd.config.external_ip='115.219.145.0'
uci commit
/etc/init.d/miniupnpd restart