← 回到文章列表

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

在这里找找

输入关键词,找一篇过去的记录。