heiher / natmap

TCP/UDP port mapping for full cone NAT
MIT License
1.38k stars 103 forks source link

IP4P版的FRPC无法正常解析IP4P地址 #39

Closed xbins7210 closed 1 year ago

xbins7210 commented 1 year ago

大佬,您好!我在NAT后部署FRPS,在用您编译的FRP-IP4P客户端FRPC连接NAT-1后面的FRPS的时候报错,根据报错提示可以看出FRPC并不能正常解析IP4P为正常的公网IP和端口。这是怎么回事呢? 客户端输出如下,域名已隐藏...

D:\local\frp_ip4p>ipconfig /flushdns

Windows IP 配置

已成功刷新 DNS 解析缓存。

D:\local\frp_ip4p>nslookup natmapfrps.example.com 223.5.5.5 服务器: public1.alidns.com Address: 223.5.5.5

名称: natmapfrps.example.com Address: 2001::5e23:2*5f:e557

D:\local\frp_ip4p>frpc.exe tcp -s natmapfrps.example.com:0 -l 55555 2023/09/22 20:43:49 [W] [service.go:133] login to server failed: dial tcp: lookup natmapfrps.example.com: no such host

如果将上述IP4P地址改为穿透的公网IP和端口号,FRPC可以正常连接。 客户端系统:WIN10
FRP版本:frp_0.51.1_windows_amd64 (ip4p)

xbins7210 commented 1 year ago

我在linux上测试一切正常,在win10上不论是32位还是64位的frpc,都无法正确解析ip4p。

heiher commented 1 year ago

我在linux上测试一切正常,在win10上不论是32位还是64位的frpc,都无法正确解析ip4p。

感谢反馈,之前只测了Linux客户端,看来跨平台还有差别。

xbins7210 commented 1 year ago

期望大佬能在下个版本修复此问题,坐等中...

heiher commented 1 year ago

在Windows 10系统上验证了FRPC,没有发现问题。

xbins7210 commented 1 year ago

大佬您测试是正常的? 我再次测还是依旧如此,用nslookup命令域名解析正常,不知是哪儿出了问题了

user@ThinkPad /cygdrive/d/local/frp_ip4p $ dig -t aaaa natmapfrps.example.com +short 2001::5*23:2a5f:e557

user@ThinkPad /cygdrive/d/local/frp_ip4p $ nslookup natmapfrps.example.com Server: 192.168.1.1 Address: 192.168.1.1#53

Non-authoritative answer: Name: natmapfrps.example.com Address: 2001::5*23:2a5f:e557

user@ThinkPad /cygdrive/d/local/frp_ip4p $ ./frpc.exe stcp -s natmapfrps.example.com:0 -l 6000 2023/09/26 23:34:20 [W] [service.go:133] login to server failed: dial tcp: lookup natmapfrps.example.com: no such host

user@ThinkPad /cygdrive/d/local/frp_ip4p $ ./frpc.exe --version 0.51.1

我改天换台机器再测试一下吧。

heiher commented 1 year ago

你那可能是遇到了之前有人反馈过的,Windows系统域名解析的API在系统无IPv6的情况下无法解析出AAAA记录的问题。他说有个变通的方法是开启Teredo Tunnel。

xbins7210 commented 1 year ago

确实如此,win自动获取不到IPv6的情况下确实不能连接,如果正常获取到v6可以正常连接。 不过可以手动随便配一个v6地址就可以正常连接了,比如fd01::1,也不需要跑Teredo Tunnel。 再次感谢大佬,干杯~~~