Closed 1368129224 closed 4 months ago
另外请问一下v2版本能否通过文件进行配置,和hook应该怎么设置?
为了方便定位问题,麻烦提供以下信息:
python --version
python natter.py --version
然后使用 -v
选项,贴上完整的日志(敏感信息如 IP 地址可以去掉):
python natter.py -v ...您的参数...
使用方法请参考相关文档:
v2 版本,程序本体仅支持命令行参数运行,复杂配置请使用 docker compose 配置文件。
环境: 无ipv4公网 ISP <-> 光猫桥接 <-> openwrt路由器 <-> NAS Ubuntu natter运行在NAS,路由已配置全端口转发 Python 3.9.12 Natter 2.0.0-rc1
期望:
python natter.py
,结果正常且能够访问
2024-01-24 13:33:56 [I] Natter v2.0.0-rc1
2024-01-24 13:33:56 [I] Tips: Use `--help` to see help messages
2024-01-24 13:34:00 [I]
2024-01-24 13:34:00 [I] tcp://192.168.1.100:42379 <--Natter--> tcp://110.184.66.216:33856
2024-01-24 13:34:00 [I]
2024-01-24 13:34:00 [I] Test mode in on.
2024-01-24 13:34:00 [I] Please check [ http://110.184.66.216:33856 ]
2024-01-24 13:34:00 [I]
2024-01-24 13:34:00 [I] LAN > 192.168.1.100:42379 [ OPEN ]
2024-01-24 13:34:00 [I] LAN > 192.168.1.100:42379 [ OPEN ]
2024-01-24 13:34:00 [I] LAN > 110.184.66.216:33856 [ OPEN ]
2024-01-24 13:34:01 [I] WAN > 110.184.66.216:33856 [ OPEN ]
2024-01-24 13:34:01 [I]
sudo python -u natter.py -m iptables -e hook.sh -r -v > qb.log 2>&1
使用工具tcpinghttps://www.itdog.cn/tcping/110.184.66.216:33409
,结果端口未打开,且端口频繁变动
2024-01-24 13:42:23 [I] Natter v2.0.0-rc1
2024-01-24 13:42:23 [D] fwd-iptables: Found iptables (1, 8, 7)
2024-01-24 13:42:23 [D] fwd-iptables: Cleaning up Natter rules
2024-01-24 13:42:23 [D] stun: Got address tcp://110.184.66.216:33409 from tcp://fwa.lifesizecloud.com:3478, source tcp://192.168.1.100:39051
2024-01-24 13:42:23 [D] keep-alive: Connected to host tcp://www.qq.com:80
2024-01-24 13:42:26 [D] keep-alive: OK
2024-01-24 13:42:27 [D] stun: Got address tcp://110.184.66.216:33409 from tcp://fwa.lifesizecloud.com:3478, source tcp://192.168.1.100:39051
2024-01-24 13:42:27 [D] fwd-iptables: Adding rule tcp://192.168.1.100:39051 forward to tcp://192.168.1.100:33409
2024-01-24 13:42:27 [I]
2024-01-24 13:42:27 [I] tcp://192.168.1.100:33409 <--iptables--> tcp://192.168.1.100:39051 <--Natter--> tcp://110.184.66.216:33409
2024-01-24 13:42:27 [I]
2024-01-24 13:42:27 [I] Calling script: hook.sh
Update qBittorrent listening port to 33409...
Push to telegram bot...
Done.
2024-01-24 13:42:29 [I] LAN > 192.168.1.100:33409 [ OPEN ]
2024-01-24 13:42:29 [I] LAN > 192.168.1.100:39051 [ OPEN ]
2024-01-24 13:42:29 [I] LAN > 110.184.66.216:33409 [ OPEN ]
2024-01-24 13:42:30 [D] port-test: ifconfig.co: b'HTTP/1.1 200 OK\r\nDate: Wed, 24 Jan 2024 05:42:30 GMT\r\nContent-Type: application/json\r\nContent-Length: 66\r\nConnection: close\r\nCF-Cache-Status: DYNAMIC\r\nReport-To: {"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=Uv6ojnWTGABPUt4ymratHqMLkADqSS3c1PbdEPjZjNYphCnQEVURh4Cvr5exA%2BMDlPHfnPQ3AH8fl%2B6BSDPrfX5DKEjdVBxGqIqAIfHCQc%2Fms182esgMD4o9IhP4tQ%3D%3D"}],"group":"cf-nel","max_age":604800}\r\nNEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}\r\nServer: cloudflare\r\nCF-RAY: 84a5f4152c12158a-SJC\r\nalt-svc: h3=":443"; ma=86400\r\n\r\n{\n "ip": "110.184.66.216",\n "port": 33409,\n "reachable": true\n}'
2024-01-24 13:42:30 [I] WAN > 110.184.66.216:33409 [ OPEN ]
2024-01-24 13:42:30 [I]
2024-01-24 13:42:33 [D] keep-alive: OK
2024-01-24 13:42:48 [D] keep-alive: OK
2024-01-24 13:43:03 [D] keep-alive: OK
2024-01-24 13:43:18 [D] keep-alive: OK
2024-01-24 13:43:33 [D] keep-alive: OK
2024-01-24 13:43:48 [D] keep-alive: OK
2024-01-24 13:44:03 [D] keep-alive: OK
2024-01-24 13:44:18 [D] keep-alive: OK
2024-01-24 13:44:33 [D] keep-alive: OK
2024-01-24 13:44:48 [D] keep-alive: OK
2024-01-24 13:45:03 [D] keep-alive: OK
2024-01-24 13:45:18 [D] keep-alive: OK
2024-01-24 13:45:33 [D] keep-alive: OK
2024-01-24 13:45:48 [D] keep-alive: OK
2024-01-24 13:46:03 [D] keep-alive: OK
2024-01-24 13:46:18 [D] keep-alive: OK
2024-01-24 13:46:33 [D] keep-alive: OK
2024-01-24 13:46:48 [D] keep-alive: OK
2024-01-24 13:47:03 [D] keep-alive: OK
2024-01-24 13:47:15 [D] Start recheck
2024-01-24 13:47:16 [D] LAN > 110.184.66.216:33409 [ CLOSED ]
2024-01-24 13:47:17 [D] stun: Got address tcp://110.184.66.216:36096 from tcp://fwa.lifesizecloud.com:3478, source tcp://192.168.1.100:39051
2024-01-24 13:47:17 [D] fwd-iptables: Cleaning up Natter rules
2024-01-24 13:47:17 [D] fwd-iptables: Found iptables (1, 8, 7)
2024-01-24 13:47:17 [D] fwd-iptables: Cleaning up Natter rules
2024-01-24 13:47:17 [D] stun: Got address tcp://110.184.66.216:36160 from tcp://fwa.lifesizecloud.com:3478, source tcp://192.168.1.100:40349
2024-01-24 13:47:17 [D] keep-alive: Connected to host tcp://www.qq.com:80
2024-01-24 13:47:20 [D] keep-alive: OK
2024-01-24 13:47:20 [D] stun: Got address tcp://110.184.66.216:36160 from tcp://fwa.lifesizecloud.com:3478, source tcp://192.168.1.100:40349
2024-01-24 13:47:20 [D] fwd-iptables: Adding rule tcp://192.168.1.100:40349 forward to tcp://192.168.1.100:36160
2024-01-24 13:47:20 [I]
2024-01-24 13:47:20 [I] tcp://192.168.1.100:36160 <--iptables--> tcp://192.168.1.100:40349 <--Natter--> tcp://110.184.66.216:36160
2024-01-24 13:47:20 [I]
2024-01-24 13:47:20 [I] Calling script: hook.sh
Update qBittorrent listening port to 36160...
Push to telegram bot...
Done.
2024-01-24 13:47:22 [I] LAN > 192.168.1.100:36160 [ OPEN ]
2024-01-24 13:47:22 [I] LAN > 192.168.1.100:40349 [ OPEN ]
2024-01-24 13:47:22 [I] LAN > 110.184.66.216:36160 [ OPEN ]
2024-01-24 13:47:23 [D] port-test: ifconfig.co: b'HTTP/1.1 200 OK\r\nDate: Wed, 24 Jan 2024 05:47:22 GMT\r\nContent-Type: application/json\r\nContent-Length: 66\r\nConnection: close\r\nCF-Cache-Status: DYNAMIC\r\nReport-To: {"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=fHHI6%2FTlEuqu8Pve%2FY7V4FkyliFRDG9XiaurVKMiLkTeG7bRByu8XK9gcifh2LG2EA8hRJjVLLDac3YP%2FVnlR6oxxLZWAK6lyBcF0qJfKv8zxna3vxYA1LrX4avHfw%3D%3D"}],"group":"cf-nel","max_age":604800}\r\nNEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}\r\nServer: cloudflare\r\nCF-RAY: 84a5fb395a27f9cc-SJC\r\nalt-svc: h3=":443"; ma=86400\r\n\r\n{\n "ip": "110.184.66.216",\n "port": 36160,\n "reachable": true\n}'
2024-01-24 13:47:23 [I] WAN > 110.184.66.216:36160 [ OPEN ]
2024-01-24 13:47:23 [I]
2024-01-24 13:47:26 [D] keep-alive: OK
2024-01-24 13:47:41 [D] keep-alive: OK
2024-01-24 13:47:56 [D] keep-alive: OK
2024-01-24 13:48:11 [D] keep-alive: OK
2024-01-24 13:48:26 [D] keep-alive: OK
2024-01-24 13:48:41 [D] keep-alive: OK
2024-01-24 13:48:56 [D] keep-alive: OK
2024-01-24 13:49:11 [D] keep-alive: OK
2024-01-24 13:49:26 [D] keep-alive: OK
2024-01-24 13:49:41 [D] keep-alive: OK
2024-01-24 13:49:56 [D] keep-alive: OK
sudo python -u natter.py -m iptables -p 22 -v > ssh.log 2>&1
tcping测试端口未打开
2024-01-24 13:52:58 [I] Natter v2.0.0-rc1
2024-01-24 13:52:58 [D] fwd-iptables: Found iptables (1, 8, 7)
2024-01-24 13:52:58 [D] fwd-iptables: Cleaning up Natter rules
2024-01-24 13:52:58 [D] get mapping: STUN server fwa.lifesizecloud.com:3478
2024-01-24 13:52:58 [D] stun: Got address tcp://110.184.66.216:32768 from tcp://fwa.lifesizecloud.com:3478, source tcp://192.168.1.100:36605
2024-01-24 13:52:58 [D] keep-alive: Connected to host tcp://www.qq.com:80
2024-01-24 13:53:01 [D] keep-alive: OK
2024-01-24 13:53:01 [D] get mapping: STUN server fwa.lifesizecloud.com:3478
2024-01-24 13:53:01 [D] stun: Got address tcp://110.184.66.216:32768 from tcp://fwa.lifesizecloud.com:3478, source tcp://192.168.1.100:36605
2024-01-24 13:53:01 [D] fwd-iptables: Adding rule tcp://192.168.1.100:36605 forward to tcp://192.168.1.100:22
2024-01-24 13:53:01 [I]
2024-01-24 13:53:01 [I] tcp://192.168.1.100:22 <--iptables--> tcp://192.168.1.100:36605 <--Natter--> tcp://110.184.66.216:32768
2024-01-24 13:53:01 [I]
2024-01-24 13:53:01 [I] LAN > 192.168.1.100:22 [ OPEN ]
2024-01-24 13:53:01 [I] LAN > 192.168.1.100:36605 [ OPEN ]
2024-01-24 13:53:01 [I] LAN > 110.184.66.216:32768 [ OPEN ]
2024-01-24 13:53:02 [D] port-test: ifconfig.co: b'HTTP/1.1 200 OK\r\nDate: Wed, 24 Jan 2024 05:53:02 GMT\r\nContent-Type: application/json\r\nContent-Length: 66\r\nConnection: close\r\nCF-Cache-Status: DYNAMIC\r\nReport-To: {"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=DOOg13kfYW3RFpkkJroSRcuwF%2FZP2svcZpzEyKxzTc4fyY5WZ4PFVpmKOSc97wjbsQ0BJ%2B%2BnKuukUALrohYsPPq1qoE571ZdZK5sOIyQNUP%2FhUAWCLkDg3MKiT8i9A%3D%3D"}],"group":"cf-nel","max_age":604800}\r\nNEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}\r\nServer: cloudflare\r\nCF-RAY: 84a60383ee99cee1-SJC\r\nalt-svc: h3=":443"; ma=86400\r\n\r\n{\n "ip": "110.184.66.216",\n "port": 32768,\n "reachable": true\n}'
2024-01-24 13:53:02 [I] WAN > 110.184.66.216:32768 [ OPEN ]
2024-01-24 13:53:02 [I]
2024-01-24 13:53:05 [D] keep-alive: OK
2024-01-24 13:53:20 [D] keep-alive: OK
2024-01-24 13:53:35 [D] keep-alive: OK
2024-01-24 13:53:50 [D] keep-alive: OK
2024-01-24 13:54:05 [D] keep-alive: OK
2024-01-24 13:54:20 [D] keep-alive: OK
2024-01-24 13:54:35 [D] keep-alive: OK
2024-01-24 13:54:50 [D] keep-alive: OK
新给的日志中没有找到 timed out
字样。
完整的日志中,看起来是 keep-alive
(保活)机制没有生效:第一次检查的端口是33409
,五分钟之后重新检查端口变成了36096
。(Natter 尝试维持端口固定,但是最终还是意外地改变了)
没能保活,特点就是端口打通的一瞬间是开放的,但是时间很短,一分钟甚至几秒后就关闭了。从日志看,您的端口确实在一瞬间打开过,ifconfig.co
的检测结果也显示打开 "reachable": true
。
以下几种情况,可能会遇到这种问题,可以参考一下:
新给的日志中没有找到
timed out
字样。
我把keep alive服务器从www.baidu.com
修改为www.qq.com
以后没有出现time out
情况
完整的日志中,看起来是
keep-alive
(保活)机制没有生效:第一次检查的端口是33409
,五分钟之后重新检查端口变成了36096
。(Natter 尝试维持端口固定,但是最终还是意外地改变了)没能保活,特点就是端口打通的一瞬间是开放的,但是时间很短,一分钟甚至几秒后就关闭了。从日志看,您的端口确实在一瞬间打开过,
ifconfig.co
的检测结果也显示打开"reachable": true
。
是的,我昨天测试时链接一分钟左右就会关闭,端口会频繁地改变,今天不知道为什么变成了5分钟左右才会变
以下几种情况,可能会遇到这种问题,可以参考一下:
- 路由器使用了多拨;
没有使用多拨
- 使用了透明代理;
NAS有运行clash客户端,可能有影响?
- 运营商有多重出口,使用了负载均衡(典型的例子是查询本机IP来回跳,或者国内外查询本机IP不一致);
从多个网站查询IP未发现可疑情况
- 运营商使用了我还没有见过的奇怪网络策略;
- Natter 有 Bug(我暂时没有找到);
另外有一点奇怪的是,在测试中有小概率是能够保持链接的,但日志我没能保存下来。是否和keep alive服务器或STUN服务器有关?
我把代理关掉再调调看
顺带说一句,端口保活其实有两种方法:
总的来说,就是你的端口有流量的情况下,运营商一般不会回收,Natter 就是想方设法造出点流量。流量如果经过 clash 透明代理,可能会发生改变,可以暂时关闭试试?
近两周未复现问题,能够稳定保持链接,关闭issue。
使用v2版本测试,打通后不到一分钟就会报错:
[E] keep-alive: connection broken: timed out
无法正常使用,不知道这个报错是什么原因?是用户侧问题,还是运营商作妖?