免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2094 | 回复: 6
打印 上一主题 下一主题

[网络管理] ftp端口映射问题求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-14 16:52 |只看该作者 |倒序浏览
网关 单网卡,绑定双ip 外eth0  内 eth1
内部ftp服务器192.168.1.44:2100,默认网关设为eth1

在网关上设了如下规则
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -d eth0 -dport 2100 -j DNAT --to 192.168.1.44:2100
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.44 --dport 2100 -j SNAT --to eth1

iptables -P FORWARD ACCEPT

这样添加规则后,在外部网络访问ftp服务器能显示连上,但是list文件的时候出错,说socket错误,连接超时

问题处在哪里呢?

论坛徽章:
0
2 [报告]
发表于 2006-03-14 17:07 |只看该作者
iptables -t nat -A PREROUTING -p tcp -d eth0 -dport 2100 -j DNAT --to 192.168.1.442100
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.44 --dport 2100 -j SNAT --to eth1

1、语法错误,红色部分全是
2、逻辑错误,蓝色部分
3、POSTROUTING 的使用属于画蛇添足
4、另外,即使语法正确了,也依然无法正常工作
   这是典型的 FTP 被动模式下的防火墙连接追踪问题
   解决方法:

# modprobe ip_nat_ftp ports=2100


在置顶的下周要讲的 iptables 讲座贴子中,有我一篇 PPT 初学者教程,你应该先好好看一下

论坛徽章:
0
3 [报告]
发表于 2006-03-14 20:12 |只看该作者
谢谢这么详细的指出我的错误
ppt我看了,还有两点不明白
1、逻辑错误是怎么回事呢?
2、iptables相关模块我都编进内核里去了,那应该怎么设置呢

论坛徽章:
0
4 [报告]
发表于 2006-03-14 20:39 |只看该作者
原帖由 stankeeper 于 2006-3-14 20:12 发表
谢谢这么详细的指出我的错误
ppt我看了,还有两点不明白
1、逻辑错误是怎么回事呢?
2、iptables相关模块我都编进内核里去了,那应该怎么设置呢

1、POSTROUTING 数据包通过 Linux 的最后一步,方向是流出,-d 是目的地址,你用在这里当然是逻辑错误了
2、如果是 <M> 就可以,如果是 <*> 恐怕你要该回 <M> 了

论坛徽章:
0
5 [报告]
发表于 2006-03-14 21:07 |只看该作者
原帖由 platinum 于 2006-3-14 20:39 发表

1、POSTROUTING 数据包通过 Linux 的最后一步,方向是流出,-d 是目的地址,你用在这里当然是逻辑错误了
2、如果是 <M> 就可以,如果是 <*> 恐怕你要该回 <M> 了


我把端口改成21,第二条规则确实多余的
那SNAT就不能以目的地址来匹配了么?

论坛徽章:
0
6 [报告]
发表于 2006-03-14 21:45 |只看该作者
你应该先了解 POSTROUTING 链是做什么用的,SNAT 动作的功能是什么,再考虑 -d 的目的 IP 如何写
我认为我的那个 PPT 已经讲的很清楚了

论坛徽章:
0
7 [报告]
发表于 2006-03-15 10:22 |只看该作者
原帖由 platinum 于 2006-3-14 21:45 发表
你应该先了解 POSTROUTING 链是做什么用的,SNAT 动作的功能是什么,再考虑 -d 的目的 IP 如何写
我认为我的那个 PPT 已经讲的很清楚了


POSTROUTING链是用来做SNAT的,修改数据包的源ip地址

假设一个外部ip(1.2.3.4)要访问该ftp(192.168.1.44:21),用$eth0表示防火墙外部ip,$eth1表示内部ip
我加了2条规则
iptables -t nat -A PREROUTING -p tcp -d $eth0 -dport 21 -j DNAT --to 192.168.1.44
iptables -t nat -A POSTROUTING -s 192.168.1.44 -j SNAT --to $eth0
数据包的流向是这样的:

数据包(sip:1.2.3.4  dipeth0 dport:21)到达防火墙后,匹配防火墙规则,进行DNAT,数据包变为(sip:1.2.3.4  dip:192.168.1.44 dport:21),然后进行路由判断是转发的数据包,经过FORWARD链进行过滤后到达POSTROUTING链然后送出到达ftp服务器。ftp默认网关为防火墙内部ip,其返回数据包(sip:192.168.1.44 sport:21 dip:sip:1.2.3.4)首先到达防火墙,经过PREROUTING FORWARD ,在POSTROUTING 做SNAT,转换成(sipeth0 sport:21 dip:1.2.3.4),然后就回到(1.2.3.4)

是不是这么走的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP