V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
unt
V2EX  ›  程序员

有没有 FTP 大佬,请帮我看下为什么会报 425 错误

  •  
  •   unt · 1 天前 · 1189 次点击
    用的是 vsftp ,pasv_promiscuous 是默认关闭的。
    源地址是 4G 物联网模组发起的,sim 卡是海外漫游卡。
    下面是抓包结果,全程 ip 和端口都是没变的呀。
    谢谢各位老板

    12 条回复    2025-08-31 22:56:25 +08:00
    ntedshen
        1
    ntedshen  
       1 天前
    所以客户端传 pasv 了吗?
    我只自己写过不晓得 vsftp 怎么个实现。。。
    unt
        2
    unt  
    OP
       1 天前
    @ntedshen 传 pasv 了
    unt
        3
    unt  
    OP
       1 天前
    @ntedshen 不晓得 vsftp 的 bad ip 是怎么判定的。 网上说是因为建立连接的时候和传输数据的时候两者 ip 端口发生了变化,但是我抓包看到是一样的,没有变化。 然后详细的日志我也看了,每个步骤也都不少
    ntedshen
        4
    ntedshen  
       1 天前   ❤️ 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;

    还是得开。。。
    unt
        5
    unt  
    OP
       1 天前
    @ntedshen 大佬,直接源码分析,厉害了。。。但是我对了抓包数据,从始至终,ip 和端口就没有变过呀
    ntedshen
        6
    ntedshen  
       1 天前
    @unt 中间经过 nat 或者什么转发导致了 ip 判断的不对吧。。。我不太确定,感觉只能本地先试一下了。。。
    客户端发送 pasv 请求的话是进入了被动模式,应该不会判断这个,传 port 的话倒是有可能(主动模式下是客户端自己传地址的)。。。
    xiangyuecn
        7
    xiangyuecn  
       1 天前
    ftp 这个古董协议也是奇葩,你说他简单吧,70 年代设计的用 2 条连接来做控制和传数据。传数据这条连接的建立应该没有主动模式了( PORT 服务器发起连接,连个鬼),全是被动模式( PASV 客户端发起连接)
    laminux29
        8
    laminux29  
       1 天前
    不要用 FTP 协议,太老了又麻烦,换基于 SSH 的 SFTP ,SSH 这套协议才是最强的,安全 + 网络兼容性都拉满。
    unt
        9
    unt  
    OP
       1 天前
    @laminux29 做嵌入式的,可能 FTP 更熟悉吧
    unt
        10
    unt  
    OP
       1 天前
    @ntedshen 不是,是 pasv 模式下触发的这个判断,所以叫 pasv_promiscuous
    ntedshen
        11
    ntedshen  
       1 天前
    @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 这个能开就开吧
    xqzr
        12
    xqzr  
       1 天前
    NAT ALG:FTP
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   892 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:32 · PVG 04:32 · LAX 13:32 · JFK 16:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.