fatedier / frp

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
Apache License 2.0
85.58k stars 13.26k forks source link

android无法获取到assistedAddresses,无法连接 #4238

Closed shimmerjordan closed 5 months ago

shimmerjordan commented 5 months ago

Bug Description

隧道似乎打穿了,但似乎又没成功,看日志是assistedAddresses获取到的空,安卓设备没有root

~/frp_0.58.0_android_arm64 $ ./frpc -c ./frpc.toml

2024-05-24 11:09:21.520 [I] [sub/root.go:142] start frpc service for config file [./frpc.toml]
2024-05-24 11:09:21.520 [I] [client/service.go:294] try to connect to server...
2024-05-24 11:09:21.716 [I] [client/service.go:286] [b364e948884d402b] login to server success, get run id [b364e948884d402b] 2024-05-24 11:09:21.717 [I] [visitor/visitor_manager.go:121] [b364e948884d402b] start visitor success
2024-05-24 11:09:21.717 [I] [visitor/visitor_manager.go:172] [b364e948884d402b] visitor added: [p2p_ssh_visitor_2] 2024-05-24 11:09:33.349 [I] [visitor/xtcp.go:283] [b364e948884d402b] [p2p_ssh_visitor_2] nathole prepare success, nat type: HardNAT, behavior: BehaviorPortChanged, addresses: [223.104.68.34:63301 223.104.68.34:42406], assistedAddresses: [] 2024-05-24 11:09:34.987 [I] [visitor/xtcp.go:309] [b364e948884d402b] [p2p_ssh_visitor_2] get natHoleRespMsg, sid [17165201725f17b38cee07d1a2], protocol [kcp], candidate address [39.144.45.148:19464 39.144.45.148:18031], assisted address [10.0.5.1:59816 10.0.3.1:59816 10.0.7.1:59816 192.168.66.2:59816 172.30.0.1:59816 172.30.4.1:59816], detectBehavior: {Role:sender Mode:0 TTL:0 SendDelayMs:5000 ReadTimeoutMs:5000 CandidatePorts:[] SendRandomPorts:0 ListenRandomPorts:0}

2024-05-24 11:09:44.995 [W] [visitor/xtcp.go:316] [b364e948884d402b] [p2p_ssh_visitor_2] make hole error: wait detect message error: read udp4 0.0.0.0:47888: i/o timeout
2024-05-24 11:09:46.490 [I] [visitor/xtcp.go:283] [b364e948884d402b] [p2p_ssh_visitor_2] nathole prepare success, nat type: HardNAT, behavior: BehaviorPortChanged, addresses: [223.104.68.34:33742 223.104.68.34:29216], assistedAddresses: [] 2024-05-24 11:09:48.093 [I] [visitor/xtcp.go:309] [b364e948884d402b] [p2p_ssh_visitor_2] get natHoleRespMsg, sid [17165201864761bcb4ddf4301b], protocol [kcp], candidate address [39.144.45.148:61569 39.144.45.148:25182], assisted address [10.0.5.1:52797 10.0.3.1:52797 10.0.7.1:52797 192.168.66.2:52797 172.30.0.1:52797 172.30.4.1:52797], detectBehavior: {Role:sender Mode:0 TTL:0 SendDelayMs:10000 ReadTimeoutMs:5000 CandidatePorts:[] SendRandomPorts:0 ListenRandomPorts:0} 2024-05-24 11:09:52.382 [E] [visitor/xtcp.go:179] [b364e948884d402b] [p2p_ssh_visitor_2] open tunnel error: open tunnel timeout
2024-05-24 11:09:52.384 [E] [visitor/xtcp.go:179] [b364e948884d402b] [p2p_ssh_visitor_2] open tunnel error: open tunnel timeout

frpc Version

0.58

frps Version

0.58

System Architecture

android/arm64

Configurations

frpc.toml

serverAddr = "xxx.xxx.xxx.xxx" serverPort = 7000

[[visitors]] name = "p2p_ssh_visitor" type = "xtcp" protocol = "kcp" serverName = "p2p_ssh" secretKey = "xxxxxx" bindAddr = "127.0.0.1" bindPort = 32400

when automatic tunnel persistence is required, set it to true

keepTunnelOpen = true

Logs

No response

Steps to reproduce

  1. 下载0.58 android
  2. 在turmux中配置frpc运行

Affected area

fatedier commented 5 months ago

HardNAT 不成功属于预期中,可以使用 stcp 替代。

shimmerjordan commented 5 months ago

HardNAT 不成功属于预期中,可以使用 stcp 替代。 stcp在安卓上是可以成功的,但奇怪的是HardNat在windows是几乎100%可以打穿,也是用的这个安卓机的热点。不过既然可以用那就ok了。顺便贴个windows同HardNAT的成功日志

D:\Software\frp>frpc.exe -c frpc.toml 2024-05-24 09:10:05.067 [I] [sub/root.go:142] start frpc service for config file [frpc.toml] 2024-05-24 09:10:05.075 [I] [client/service.go:294] try to connect to server... 2024-05-24 09:10:05.174 [I] [client/service.go:286] [bbcc3bde921d62a8] login to server success, get run id [bbcc3bde921d62a8] 2024-05-24 09:10:05.174 [I] [visitor/visitor_manager.go:121] [bbcc3bde921d62a8] start visitor success 2024-05-24 09:10:05.174 [I] [visitor/visitor_manager.go:172] [bbcc3bde921d62a8] visitor added: [p2p_ssh_visitor] 2024-05-24 09:10:12.126 [I] [visitor/xtcp.go:283] [bbcc3bde921d62a8] [p2p_ssh_visitor] nathole prepare success, nat type: HardNAT, behavior: BehaviorIPChanged, addresses: [183.15.177.109:40173 183.15.176.232:40173], assistedAddresses: [172.28.0.1:61229 172.22.0.6:61229 172.31.3.234:61229] 2024-05-24 09:10:12.712 [I] [visitor/xtcp.go:309] [bbcc3bde921d62a8] [p2p_ssh_visitor] get natHoleRespMsg, sid [1716513012d3a1fad7f77184b9], protocol [kcp], candidate address [39.144.45.148:11711 39.144.45.148:22051], assisted address [10.0.5.1:47077 10.0.3.1:47077 10.0.7.1:47077 192.168.66.2:47077 172.30.0.1:47077 172.30.4.1:47077], detectBehavior: {Role:receiver Mode:1 TTL:7 SendDelayMs:0 ReadTimeoutMs:7000 CandidatePorts:[{From:22041 To:22061}] SendRandomPorts:0 ListenRandomPorts:0} 2024-05-24 09:10:15.894 [I] [visitor/xtcp.go:320] [bbcc3bde921d62a8] [p2p_ssh_visitor] establishing nat hole connection successful, sid [1716513012d3a1fad7f77184b9], remoteAddr [172.22.0.1:47077]

fatedier commented 5 months ago

成功的这个也不是走公网打洞的,而是内网互联。

android 获取不到内网 IP,所以没有走内网直连,且公网打洞也不成功。

你这个如果内网能直连,那你直接通过内网 IP 访问也可以,没必要走 frp 中转。