1
ntedshen 1 天前
所以客户端传 pasv 了吗?
我只自己写过不晓得 vsftp 怎么个实现。。。 |
![]() |
3
unt OP @ntedshen 不晓得 vsftp 的 bad ip 是怎么判定的。 网上说是因为建立连接的时候和传输数据的时候两者 ip 端口发生了变化,但是我抓包看到是一样的,没有变化。 然后详细的日志我也看了,每个步骤也都不少
|
4
ntedshen 1 天前 ![]() remote_fd == -2
/* SECURITY: * Reject the connection if it wasn't from the same IP as the * control connection. */ if (!tunable_pasv_promiscuous) if (!vsf_sysutil_sockaddr_addr_equal(p_sess->p_remote_addr, p_accept_addr)) return -2; 还是得开。。。 |
6
ntedshen 1 天前
@unt 中间经过 nat 或者什么转发导致了 ip 判断的不对吧。。。我不太确定,感觉只能本地先试一下了。。。
客户端发送 pasv 请求的话是进入了被动模式,应该不会判断这个,传 port 的话倒是有可能(主动模式下是客户端自己传地址的)。。。 |
![]() |
7
xiangyuecn 1 天前
ftp 这个古董协议也是奇葩,你说他简单吧,70 年代设计的用 2 条连接来做控制和传数据。传数据这条连接的建立应该没有主动模式了( PORT 服务器发起连接,连个鬼),全是被动模式( PASV 客户端发起连接)
|
8
laminux29 1 天前
不要用 FTP 协议,太老了又麻烦,换基于 SSH 的 SFTP ,SSH 这套协议才是最强的,安全 + 网络兼容性都拉满。
|
11
ntedshen 23 小时 52 分钟前
@unt p_remote_addr -> getpeername()
p_accept_addr -> vsf_sysutil_accept_timeout -> remote_addr.u.u_sockaddr_in -> vsf_sysutil_sockaddr_set_ipv4addr -> handle_port str_equal_text(&p_sess->ftp_cmd_str, "PORT") emm 。。。 现在应该就是在主动模式,传了 pasv 但是可能没生效。。。 pasv_promiscuous 这个能开就开吧 |
12
xqzr 23 小时 5 分钟前
NAT ALG:FTP
|