rardge 发表于 2005-11-30 16:18

还是 IPFW + NATD + active ftp 的问题

natd.conf:
interface                vr0
   log_denied            yes
   dynamic               yes
   unregistered_only yes
   use_sockets          yes
   same_ports         yes
   punch_fw 600:100

ipfw.conf:
add 100 divert natd all from any to any in via xl0
add 200 check-state
add 300 skipto 800 tcp from any to any 21 out via xl0 setup keep-state
add 700 deny all from any to any in via xl0
add 701 deny all from any to any out via xl0
add 800 divert natd all from any to any out via xl0
add 801 allow all from any to any

然后,当我在 LAN 内向外网 FTP 服务器发起连接时,可以清楚的看到(ipfw list):
00621 allow tcp from 192.168.0.149 11598 to 61.152.242.18 20
00621 allow tcp from 61.152.242.18 20 to 192.168.0.149 11598
被动态增加了两条记录,而且有数据包通过!
但是,客户端的 ftp 还是不能下载数据!?
PORT Command successful.
LIST
150 Opening ASCII mode data connection for /bin/ls.
426 Data connection closed, transfer aborted.
Error loading directory...

请问这个是怎么回事情???

rardge 发表于 2005-11-30 16:20

原帖由 rardge 于 2005-11-30 16:18 发表
natd.conf:
interface                vr0


对不起,这个是我在这里发帖的时候打错字了,是 xl0。

FinalBSD 发表于 2005-11-30 16:21

先学学TCP/IP再说。已经教过一回了。

rardge 发表于 2005-11-30 16:23

不是这个问题,你的方法我也用过了,现在也不通了。

rardge 发表于 2005-11-30 16:49

我不是不学tcp协议,这个东西也不是几天能学下来的吧。
主要是以前我没有用过 NATD(用 ADSL 的时候,ppp 自动完成了这个步骤),我以前的规则现在都无效,后来搞了半天并对比了 rc.firewall 的 open 段才知道要用 natd!
然后又在 natd 和 check-state 这里卡住,再看手册又学到要用 skipto。
现在就是这个ftp不通,我看了很多帖子(俄文和英文的才找到类似的帖子,中文的帖子都是翻录王波的书籍,真是好的没话讲),用上了上面我的那些指令,现在还是卡住,真不知道怎么办了。
我就是不想用 allow tcp from any 20 to any 这样,觉得还是我贴出来的方式比较放心点。
你可以说我神经、自找麻烦等等等等,但是既然它有这个用法,我就是想搞懂怎么用。
你一句话把我踢到TCP/IP那里去了,说实话,我还真有《TCP/IP 协议详解 卷一》,但是我功力太差,看的似懂非懂的。那我现在能否请你指教我一下,我上面的方案到底哪里用错了?真的谢谢了!

rardge 发表于 2005-11-30 19:18

知道了
100 divert natd all from any to any in via xl0
200 check-state
300 skipto 800 tcp from any to any 21 out via xl0 setup keep-state
621 allow tcp from 192.168.0.149 11598 to 61.152.242.18 20<---- 这个包出不去!
621 allow tcp from 61.152.242.18 20 to 192.168.0.149 11598
700 deny all from any to any in via xl0
701 deny all from any to any out via xl0
800 divert natd all from any to any out via xl0
801 allow all from any to any
唉,NATD 自己动态增加的规则我无法让它skipto,继续研究。

rardge 发表于 2005-11-30 19:58

唉,版主,我歇菜了,呵呵。
暂时还是用
ipfw add 400 skipto 800 tcp from any to any 21 out via xl0 setup keep-state
ipfw add 401 skipto 800 tcp from any 20 to any in via xl0 setup keep-state
来搞定吧。
真奇怪,natd 的这个在防火墙上开个洞的做法不能应用于带状态的规则?希望将来它行,亦或者我还没找到方法。
结束,不再对此问题发帖了。

happyboygd 发表于 2013-08-15 17:15

回复 3# FinalBSD


$cmd 120 $skip tcp from any to any 21 out xmit $pif setup keep-state
$cmd 130 $skip tcp from any 20 to any in recv$pif setup keep-state

happyboygd 发表于 2013-08-15 17:54

参考 《CNFUG期刊》第十二期里面的4.4.1内网Client访问外网Ftp Server和 4.4.2外网Client访问内网Ftp Server
http://fanqiang.chinaunix.net/adm/net/2005-03-30/3069.shtml

lsstarboy 发表于 2013-08-15 20:10

不开放20,ftp能通就出大错了!不是你想用不想用的问题,是必须用。
页: [1]
查看完整版本: 还是 IPFW + NATD + active ftp 的问题