zoukankan      html  css  js  c++  java
  • 【linux】ftp使用端口转发问题

    相关资料:

    1.【ssh】端口转发

    2.【ftp】主动模式和被动模式

    先说结论:用端口转发无法解决ftp客户端与服务器的连接问题,原因是ftp的data端口不固定,不能把所有>1024的端口都做端口转发

    有如下三台机器:

    1. ftp服务器  F (ftp)

    2. 端口转发用的跳板机  J  (jump)

    3. 客户端  C  (client)

    其中,C要请求F的数据,但C无法连接F,F可以连接C,我们无法控制F,但可以控制J和C。J与F,C都可以连接,故作为中间跳板。

    在C上建立端口转发,C的2221端口映射F的21端口,即映射FTP的CMD端口

    ssh -g -f -N -L 2221:<A>:21 username@<B> -22

    注意:这里必须有-g  即开放转发给所有ip使用。

    原因:如果没有-g,则C会监听 127.0.0.1:2221,如果访问<C>:2221则会被拒绝,而后面进行步骤⑦时会ftp的data通道会试图连接127.0.0.1上的端口,导致错误。

    使用-g后,就可以访问<C>:2221了

    在建立端口转发后,采用主动模式的ftp连接过程如下图所示:

    ①ftp客户端像转发端口2221请求建立cmd连接

    ②<C>:2221 通过 <J>:22 转发请求

    ③<J>:22向ftp的cmd端口发送请求

    ④ftp的cmd端口响应<J>:22

    ⑤跳板返回响应

    ⑥<C>:2221返回响应  至此ftp的命令通道连接成功

    ⑦出问题的是在这一步,建立data通道时,ftp服务器企图绕过J,直接与C连接。这是不可以的。

    原因:

    ftp实际上是与J建立了cmd连接,此时J告知ftp直接连接C,ftp发现cmd和data通道连接不同的ip自然会拒绝。

    所以主动模式是行不通的。那看被动模式:

    采用被动模式时,⑦的方向反过来了。需要C的data端口访问F的data端口,但C的data端口不固定,所有>1024的都有可能,数量过大,不能都建立转发。

    所以,被动模式也是不行的.......

    至此:得到结论,当ftp客户端与服务器无法互联时,无法通过端口转发来解决。

  • 相关阅读:
    数字资产交易所记录
    How to decode input data from a contract transaction without ABI?
    【收藏】ETH以太坊各个环境的公共的RPC服务!!!
    Solidity知识点集 — 溢出和下溢
    docker run 与docker start的区别
    子网掩码计算192.168.1.0/24 24 / 11
    Solidity-让合约地址 接受ETH的转账充值的 三种方式
    echarts的散点图
    debug.js中的length的错误
    26个工具类
  • 原文地址:https://www.cnblogs.com/dplearning/p/7286339.html
Copyright © 2011-2022 走看看