中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 操作系统 > Linux > Linux综合
解决通过nat的ftp无法列表问题
作者:未知 时间:2005-09-13 22:06 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:解决通过nat的ftp无法列表问题
登陆linux的ftp服务器没问题,只是登陆windows的有问题,当列表时无法列出.

解决通过nat的ftp无法列表问题:
登陆linux的ftp服务器没问题,只是登陆windows的有问题,当列表时无法列出.

modprobe ip_nat_ftp 时出现:

modprobe: Too deep recursion in module dependencies!
modprobe: Circular dependency? ip_nat_proto_udp ip_conntrack ip_nat_core ip_nat_helper ip_nat_ftp
已经放弃
用insmod ip_nat_ftp 后就解决问题.


之后找了些资料.他们是这样讨论的:

加载模块:
modprobe ip_tables
insmod ip_conntrack
insmod ip_conntrack_ftp
insmod ip_nat_ftp

关于有状态功能,重点在于后三个模块:
ip_conntrack模块能够使防火墙具有连接跟踪能力。(通过输入 "cat /proc/net/ip_conntrack" 可以查看您的机器参与的活动网络连接。)

加载这个模块后,基本上所有有状态的返回包都能识别,例:telnet,http,QQ,mail,ping,dns等。

实际上,加载了ip_conntrack模块,ftp已经能够登陆,并能使用象pwd,cd等命令,但当使用ls命令显示文件内容时,就会timeout。原因在于

显示文件列表的包防火墙无法识别,就会进入默认策略----禁止,此时就需要加载ip_conntrack_ftp模块。

ip_conntrack_ftp模块使防火墙能够识别FTP某类特殊的返回包。

如果防火墙上对所有出去的返回包作了伪装,就需要加载ip_nat_ftp模块。
ip_nat_ftp模块在出去的包作了伪装以后,必须加载,否则防火墙无法知道返回的包该转发到哪里。


http://www.chinaunix.net/jh/4/517901.html
 網中人 回复于:2005-03-29 15:22:36
在做試驗之前, 可先用所學的基礎來論證一下, 將更有助理解.

首先要理解前面 platinum 兄貼的說明, 也就是關於 ftp 的兩種連線模式.
然後再來區分出 port command 的內容是在 ftp packet 內的, 而不是記錄在 tcp/ip header 內.
當我們的 firewall/nat 在沒有 modules 幫忙的情況下,
只會檢查及修改 tcp/ip header 的內容而不會去理會 ftp packet 的內容.
如此, 在 ftp active mode 下,
當來自 ftp server port 20 的 NEW packet 到達 firewall/nat 時, 
由於沒有連線記錄也沒預先開好的規則讓 packet 通過, 那這時 ftp-data channel 就會斷掉.
若有 ip_conntack_ftp module 的幫忙, firewall 還會對所有 port 21 相關的 tcp packet 展開查看裡面的 ftp packet.
如發現有 port command, 那可事先為這個 RELATED 連線開通規則, 讓 ftp-data packet 穿過 firewall .

然而 conntrack module 只是監控連線, 不會對 packet 做任何的修改.
這在 direct-routing 環境下的 firewall 就夠用了.
但是在 nat 環境下呢?
先讓我們看看 ftp packet 裡的 port command 所使用的 address : 
是使用 nat 之後的外部地址還是 nat 之前的內部地址呢?
假如沒有 ip_ftp_nat module 的幫忙, 那肯定是使用 nat 之前的內部地址.
這樣, 請問另一端的 server/client 的 ftp-data packet 要送到哪裡去?
呵, 當然是送到內部地址去啦. 但, 這在 internet 上是行不通的. 或根本就送錯地方而遭 reset !
okay, 如此, 怎才能讓另一端的 packet 送回這端的外部地址? 且還能改回到正確的內部地址去呢?
答案呼之欲出---就是 ip_nat_ftp 要做的事情!
 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有