Natter
Natter copied to clipboard
upnp启用失败
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
看起来是 UPnP 的问题。有部分设备例如光猫等,Natter 的适配还不完全
看起来是 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]失败) 以下是我的使用日志,希望能有所帮助
看起来是 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]
似乎有同样问题,本地部署的有 HomeAssistant 默认开启了 UPnP,主路由也开启了 UPnP,Natter会先扫描到HomeAssistant,导致打洞失败,禁用HomeAssistant 就正常了。建议可以直接指定UPnP地址。
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:'))]