Natter icon indicating copy to clipboard operation
Natter copied to clipboard

upnp启用失败

Open blueskink opened this issue 11 months ago • 5 comments

2024-12-16 23:00:16 [I] Scanning UPnP Devices... 2024-12-16 23:00:17 [E] upnp: failed to load service from http://192.168.1.1:49652/49652gatedesc.xml: Invalid response from HTTP server TypeError: 'NoneType' object is not iterable 2024-12-16 23:00:43 [I] Natter v2.1.1

blueskink avatar Dec 16 '24 15:12 blueskink

看起来是 UPnP 的问题。有部分设备例如光猫等,Natter 的适配还不完全

MikeWang000000 avatar Feb 09 '25 19:02 MikeWang000000

看起来是 UPnP 的问题。有部分设备例如光猫等,Natter 的适配还不完全

提交下UPnP的bug: 先说下我的坏境: 我的网络中有两个UPnP设备,1、打印机设备(192.168.223.90:80);2、路由器(已经改桥接可以直接DMZ使用,现在更换UPnP方式) 使用-U参数时,如果我的网络中有打印机设备(192.168.223.90),Scanning UPnP Devices时会因为先扫描到打印机设备而不再扫描路由器,导致UPnP失败 但是如果我将打印机设备禁止联网后,可以直接Scanning UPnP Devices到路由器,[UPnP]成功 所以我想问下博主,能不能直接在 "-U" 的时候指定UPnP Devices,不去自动扫描(因为扫描到局域网其他设备会导致[UPnP]失败) 以下是我的使用日志,希望能有所帮助

haitao9491 avatar Jul 09 '25 01:07 haitao9491

看起来是 UPnP 的问题。有部分设备例如光猫等,Natter 的适配还不完全

提交下UPnP的bug: 先说下我的坏境: 我的网络中有两个UPnP设备,1、打印机设备(192.168.223.90:80);2、路由器(已经改桥接可以直接DMZ使用,现在更换UPnP方式) 使用-U参数时,如果我的网络中有打印机设备(192.168.223.90),Scanning UPnP Devices时会因为先扫描到打印机设备而不再扫描路由器,导致UPnP失败 但是如果我将打印机设备禁止联网后,可以直接Scanning UPnP Devices到路由器,[UPnP]成功 所以我想问下博主能不能直接在-U的时候指定UPnP Devices,不去自动扫描(因为扫描到局域网其他设备会导致[UPnP]失败),以下是我的使用日志,希望可以采纳

这是我的终端日志,可以参考下: 局域网存在打印机设备192.168.223.90:80时,[UPnP]失败: root@LinServer:/home/www/02_BackServer/Natter-v2.1.1/bin# python3 natter.py -U -m iptables -t 127.0.0.1 -p 10286 2025-07-09 09:13:57 [I] Natter v2.1.1 2025-07-09 09:14:01 [I] 2025-07-09 09:14:01 [I] Scanning UPnP Devices... 2025-07-09 09:14:05 [E] upnp: failed to load service from http://192.168.223.90:80/Canon_basic.xml: timed out TypeError: 'NoneType' object is not iterable root@LinServer:/home/www/02_BackServer/Natter-v2.1.1/bin# python3 natter.py -u -m iptables -t 127.0.0.1 -p 10286 2025-07-09 09:14:13 [I] Natter v2.1.1 2025-07-09 09:14:16 [I] 2025-07-09 09:14:16 [I] udp://192.168.223.77:10286 <--iptables--> udp://192.168.223.77:35582 <--Natter--> udp://124.89.102.189:20807 2025-07-09 09:14:16 [I]

禁用打印机设备(192.168.223.90)联网后,[UPnP]成功: ^Croot@LinServer:/home/www/02_BackServer/Natter-v2.1.1/bin# python3 natter.py -U -m iptables -t 127.0.0.1 -p 10286 2025-07-09 09:21:38 [I] Natter v2.1.1 2025-07-09 09:21:42 [I] 2025-07-09 09:21:42 [I] Scanning UPnP Devices... 2025-07-09 09:21:44 [I] [UPnP] Found router 192.168.223.1 2025-07-09 09:21:44 [I] 2025-07-09 09:21:44 [I] tcp://192.168.223.77:10286 <--iptables--> tcp://192.168.223.77:34543 <--Natter--> tcp://124.89.102.189:21035 2025-07-09 09:21:44 [I] 2025-07-09 09:21:44 [I] LAN > 192.168.223.77:10286 [ OPEN ] 2025-07-09 09:21:44 [I] LAN > 192.168.223.77:34543 [ OPEN ] 2025-07-09 09:21:44 [I] LAN > 124.89.102.189:21035 [ OPEN ] 2025-07-09 09:21:44 [I] WAN > 124.89.102.189:21035 [ OPEN ] 2025-07-09 09:21:44 [I]

haitao9491 avatar Jul 09 '25 02:07 haitao9491

似乎有同样问题,本地部署的有 HomeAssistant 默认开启了 UPnP,主路由也开启了 UPnP,Natter会先扫描到HomeAssistant,导致打洞失败,禁用HomeAssistant 就正常了。建议可以直接指定UPnP地址。

Zisbusy avatar Jul 22 '25 05:07 Zisbusy

        elif len(router_l) > 1:
            Logger.warning("upnp: multiple routers found: %s" % (router_l,))
            self.router = router_l[0]

这个地方加一个input应当就可以了吧

        elif len(router_l) > 1:
            Logger.warning("upnp: multiple routers found: %s" % (router_l,))
            self.router = router_l[int(input('select router:'))]

wukan1986 avatar Aug 15 '25 13:08 wukan1986