busybox 开启ipv6的ftpd时,用ipv4登录设备后获取LIST失败,
错误: 无法建立数据连接: WSAEADDRNOTAVAIL - 无法分配请求的地址
通过抓包能看到失败的原因:
ftpd发过来的pasv信息中,ip地址是全空的,filezilla和win自带的ftpc因此不能解析,不会去发起数据连接。
正常ipv4时包如下:
解决的方法有两种:
1.改成主动模式后,不需要PASV信令,就不会有这个问题了。
2.ftpd侧(设备侧)添加一个ipv6地址,则PASV信令会填充有效地址,也不会出现解析失败问题:
ipv4用pasv,ipv6用epsv。有些ipv6客户端尝试pasv失败后会重新尝试epsv。