博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用iptables做端口转发访问ftp
阅读量:6566 次
发布时间:2019-06-24

本文共 1688 字,大约阅读时间需要 5 分钟。

原创作品,允许转载,转载时请务必以超链接形式标明文章   、作者信息和本声明。否则将追究法律责任。

用iptables做端口转发是个很实用的功能,可以让我们忽略协议细节而实现透明转发,对于加密的数据传输更是好用。

 

       ftp协议不同于http协议,因为ftp的控制端口和数据端口是分离的,在被动模式下,数据端口是通过控制信息来商定的,所以我们不能简单地对21端口做转发。
注:假定我们是通过在 本机IP 上做NAT设置使 源IP 可以通过 本机IP 访问到 目标IP
        1、首先书写并运行nat命令
modprobe iptable_nat
/sbin/iptables -t nat -A POSTROUTING -d 目标ip  -p tcp --dport 21 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -d 本机ip -p tcp --dport 21 -j DNAT --to-dest 目标IP:21
        2、这个时候可以通过iptables -t nat -L命令进行查看目前nat,现在已经可以进行ftp的连接和登录了,同时一些控制命令也是正常的,但是使用LIST命令就会失败,抓包有如下结果。
                本机IP.00021-源IP.01289: 227 Entering Passive Mode (目标IP,8,215)
                源IP.01289-本机IP.00021: LIST -al
                本机IP.00021-源IP.01289: 425 Security: Bad IP connecting.
        3、出现上述问题的原因是,源IP通过本机IP转发到目标IP,在进入被动模式的时候,目标IP发送了目标的IP给源IP,所以源IP就直接尝试和目标IP建立数据连接,因为建立数据连接和控制连接的ip不同,所以目标IP拒绝访问。
        4、对于这个问题vsftp有一个设置可以放弃这种安全检查,手册是如下说明的:
       pasv_promiscuous
              Set  to  YES if you want to disable the PASV security check that ensures the data connection originates from the same IP address as the control connection.  Only enable if you know what you are doing! The only legitimate use for this is in some form of secure tunnelling  scheme, or perhaps to facilitate FXP support.
              Default: NO
        5、如果按照第4步的说明,配置为pasv_promiscuous,那么这个时候访问ftp是正常的,但是就像上面说的那样,控制连接由本机ip和目标Ip建立,数据连接由源IP和目标IP建立,估计这种情况对于99%的情况来说不是我们想要的。
        6、在进入被动模式的时候,是否可以修改PASV里面的目标IP为本机IP呢,这个就是ip_nat_ftp做得事情,如下安装模块:
                modprobe ip_conntrack_ftp
                modprobe ip_nat_ftp
                可以通过lsmod查看是否生效,我的如下:
ip_conntrack_ftp       76273  0
ipt_MASQUERADE          7873  11
iptable_nat            27237  2 ipt_MASQUERADE
ip_conntrack           45957  3 ip_conntrack_ftp,ipt_MASQUERADE,iptable_nat
iptable_filter          6721  1
ip_tables              21441  3 ipt_MASQUERADE,iptable_nat,iptable_filter
        7、现在在访问一下ftp,则一切正常了。

本文出自 “” 博客,请务必保留此出处

你可能感兴趣的文章
C# Note17: 使用Ionic.Zip.dll实现解压缩文件
查看>>
Codeforces Ilya and Queries
查看>>
Viewport
查看>>
〖Android〗(how-to) fix k860/k860i buletooth.
查看>>
static与线程安全 -摘自网络
查看>>
jsf标签,jsp标签与jstl标签
查看>>
使用PHP CURL的POST数据
查看>>
struts2:表单标签
查看>>
ASP.NET MVC3 通过Url传多个参数方法
查看>>
遭遇sql server 2005 启动包未能正确加载需要重新安装错误,重装.NET FRAMEWORK经历分析...
查看>>
简明 MongoDB 入门教程
查看>>
.NET Core 3.0中的数据库驱动框架System.Data
查看>>
北大AI公开课2019 | 雷鸣:人工智能革命与机遇
查看>>
英特尔开源计算机视觉数据标签工具CVAT,加速数据注释
查看>>
consule服务注册和发现 安装 部署
查看>>
多个帐户都用root 来登录 怎么看另一个用户使用的那些命令
查看>>
Map集合案例
查看>>
《FPGA全程进阶---实战演练》第十一章 VGA五彩缤纷
查看>>
第七次课程作业
查看>>
C++ 文本查询2.0(逻辑查询)
查看>>