【linux】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使用端口转发问题的更多相关文章
- Linux 通过rinetd端口转发来访问内网服务
可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.rinetd,Wi ...
- 阿里云ECS linux通过rinetd 端口转发来访问内网服务
一.场景说明: 可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.r ...
- 【Linux】实现端口转发的rinetd
Linux下端口转发一般都使用iptables来实现,使用iptables可以很容易将TCP和UDP端口从防火墙转发到内部主机上.但是如果需要将流量从专用地址转发到不在您当前网络上的机器上,可尝试另一 ...
- linux centos6 NAT 端口转发
有很多时候我们为了安全,需要将例如数据库服务器放到内网中.但是有些时候又系统给外网开一个端口,这时就可以利用外网的服务器进行一个端口转发.今天我们以centos6 为例进行端口转发配置. 首先vi / ...
- rinetd 一个linux下的端口转发工具
inux下使用iptables实现端口转发,配置较为复杂,使用rinetd工具可以实现快速配置和修改端口转发. 例:本机ip:1.1.1.1 需要实现访问本机的8080端口,自动转发到2.2.2.2 ...
- 〖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. ...
- Linux:ssh端口转发详解
ssh是个多用途的工具,不仅可以远程登录,还可以搭建socks代理.进行内网穿透,这是利用它的端口转发功能来实现的. 所谓ssh端口转发,就是在ssh连接的基础上,指定 ssh client 或 ss ...
- Windows和linux下的端口转发
利用VPN,实现无公网IP或内网服务器的服务 @@@code netsh interface portproxy add v4tov4 listenport=8887 connectaddress=1 ...
- 【工具】rinetd 使用教程(linux 下的端口转发工具 )
日期:2019-07-30 20:00:36 更新: 作者:Bay0net 介绍:使用 rinetd 来转发某端口的流量. 0x01. 安装 官网 RINETD 安装方法很简单,一条语句就 OK 了. ...
随机推荐
- linux atoi
atoi 只能针对字符串为数字, 对字符串为十六进制.八进制的不能进行转化
- django 学习手册 - ORM 报错集(随时更新)
报错问题: 问题一:(1050代码) django.db.utils.InternalError: (1050, "Table 'app01_group' already exists&qu ...
- MySql 在cmd下的学习笔记 —— 有关储存过程的操作(procedure)
我们把若干条sql封装取来,起个名字------把此过程存储在数据库中叫存储过程 调用procedure 储存过程是可以变成的,意味着可以使用变量,表达式,控制结构 来完成复杂的功能 声明变量 pro ...
- Win10提示无法创建新的分区也找不到现有的分区解法
原文链接:https://www.pconline.com.cn/win10/1126/11261093.html 1.格式化整个硬盘,重新分区 如果你的硬盘上没有重要数据的话,到了分区这一步时,将硬 ...
- SpringCloud Netflix Ribbon(负载均衡)
⒈Ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具. Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负 ...
- Linux后门权限维持手法
0x01 Linux 1. 预加载型动态链接库后门 inux操作系统的动态链接库在加载过程中,动态链接器会先读取LD_PRELOAD环境变量和默认配置文件/etc/ld.so.preload,并将读取 ...
- shell脚本 统计一段程序运行时间【转】
转自:https://bbs.csdn.net/topics/391943383#include <stdio.h> #include <stdlib.h> #include ...
- hdu 4825 && acdream 1063 01字典树异或问题
题意: 给一个集合,多次询问,每次给一个k,问你集合和k异或结果最大的哪个 题解: 经典的01字典树问题,学习一哈. 把一个数字看成32位的01串,然后查找异或的时候不断的沿着^为1的路向下走即可 # ...
- Zeppelin0.7.2结合hive解释器进行报表展示
前提:服务器已经安装好了hadoop_client端即hadoop的环境hbase,hive等相关组件 1.环境和变量配置①拷贝hive的配置文件hive-site.xml到zeppelin-0.7. ...
- virtual box 安装centos min
2018-4-19 22:20:40 星期四 之前不小心把用了很久的centos镜像删掉了.....这里记录下安装最小版centos的步骤 1. 安装centos 2. 开启网络, 并设置为随机启动 ...