相关资料:

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客户端与服务器无法互联时,无法通过端口转发来解决。

【linux】ftp使用端口转发问题的更多相关文章

  1. Linux 通过rinetd端口转发来访问内网服务

    可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.rinetd,Wi ...

  2. 阿里云ECS linux通过rinetd 端口转发来访问内网服务

    一.场景说明: 可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.r ...

  3. 【Linux】实现端口转发的rinetd

    Linux下端口转发一般都使用iptables来实现,使用iptables可以很容易将TCP和UDP端口从防火墙转发到内部主机上.但是如果需要将流量从专用地址转发到不在您当前网络上的机器上,可尝试另一 ...

  4. linux centos6 NAT 端口转发

    有很多时候我们为了安全,需要将例如数据库服务器放到内网中.但是有些时候又系统给外网开一个端口,这时就可以利用外网的服务器进行一个端口转发.今天我们以centos6 为例进行端口转发配置. 首先vi / ...

  5. rinetd 一个linux下的端口转发工具

    inux下使用iptables实现端口转发,配置较为复杂,使用rinetd工具可以实现快速配置和修改端口转发. 例:本机ip:1.1.1.1 需要实现访问本机的8080端口,自动转发到2.2.2.2 ...

  6. 〖Linux〗iptables端口转发(11.11.136.80:5552 <==> 10.10.136.1:8055/11.11.136.1:8055)

    环境: pc1: 10.10.72.1 (network: 10.10.72.0/22) pc2: 地址1: 10.10.136.1 (nework: 10.10.136.0/22) 地址2: 11. ...

  7. Linux:ssh端口转发详解

    ssh是个多用途的工具,不仅可以远程登录,还可以搭建socks代理.进行内网穿透,这是利用它的端口转发功能来实现的. 所谓ssh端口转发,就是在ssh连接的基础上,指定 ssh client 或 ss ...

  8. Windows和linux下的端口转发

    利用VPN,实现无公网IP或内网服务器的服务 @@@code netsh interface portproxy add v4tov4 listenport=8887 connectaddress=1 ...

  9. 【工具】rinetd 使用教程(linux 下的端口转发工具 )

    日期:2019-07-30 20:00:36 更新: 作者:Bay0net 介绍:使用 rinetd 来转发某端口的流量. 0x01. 安装 官网 RINETD 安装方法很简单,一条语句就 OK 了. ...

随机推荐

  1. Element Tabs 组件中使用 ve-histogram组件渲染不出来(已解决)

    Element Tabs 组件中使用 ve-histogram组件渲染不出来 发现问题提了issue,饿了么前端“西瓜”同学很快做了回复,饿了么大前端团队有沉淀很专业,赞. tip: GitHub 的 ...

  2. react——获取数据ajax()、$.ajax()、fetch()、axios

    ajax() import React from 'react'; import ReactDom from 'react-dom'; import ajax from './tool.js'; cl ...

  3. Android逆向基础----Android Dalvik虚拟机

    Android Dalvik虚拟机的特点: l  体积小,占用内存空间小. l  专有DEX可执行文件. l  常量池采用32位索引值,寻址类方法名,字段名,常量更快. l  基于寄存器架构,并拥有一 ...

  4. Ubuntu 16.04下安装MySQL5.7

    原文链接:https://www.linuxidc.com/Linux/2017-06/144805.htm ps:ubuntu14.04下默认安装的是MySQL5.5 首先执行下面三条命令: sud ...

  5. Django中的csrf基础了解

    简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有 ...

  6. zookeeperCli和Java操作zookeeperAPI

    推荐一个zookeeper可视化工具:zktools.exe eclipse集成的工具: http://www.massedynamic.org/eclipse/updates/ 1.zkCli客户端 ...

  7. eMMC基础技术2:eMMC概述

    0.前言 本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍.主要包含如下的内容: (1)eMMC系统的总体架构 (2)eMMC的总线协议 (3)device controller (4)fl ...

  8. Linux下clock计时函数学习【转】

    转自:https://www.cnblogs.com/wfwenchao/p/5195022.html 平时在Linux和Winows下都有编码的时候,移植代码的时候免不了发现一些问题.1. 你到底准 ...

  9. Linux将rm命令设置为回收站【转】

    一个方案就是重定向 rm 命令以嫁接为 mv 命令,相当于给 Linux 系统定制了一个回收站. 实现方式如下: ### 重定义rm命令 ### # 定义回收站目录 trash_path='~/.tr ...

  10. 使用cstdiofile在vs2010中无法写入中文的问题

    在VC2010环境下, 以下代码无法实现使用CStdioFile向文本文件中写入中文(用notepad.exe查看不到写入的中文) CStdioFile file; file.Open(…); fil ...