LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 993|回复: 4

求助:一个特殊的防火墙问题

[复制链接]
发表于 2005-8-18 20:51:17 | 显示全部楼层 |阅读模式
版本:suse linux enterprise server 9(sles9)

网络结构描述:一台服务器安装sles9作为防火墙(当然还作为WEB服务器等,与本问题无关),两块网卡,其中一个为公网IP,一个为内网IP。由于内网中机器不多,对整个系统的安全行要求也一般,所以没有建DMZ,内网直接通过IP MASQERADE方式上internet,外网通过FORWARD_MASQ方式访问内网的ftp服务器。

问题描述:现内网中的这台ftp服务器已经通过FORWARD_MASQ方式成功实现从外网来访问。公司有域名,因此员工和客户在外网都通过域名来访问ftp。但在内网中,域名同样被解析成公网IP地址,访问ftp被拒绝(通过ftp的内网ip直接访问当然没有问题)。

求教:想实现在内网中也通过域名(即内外网一致)方式来访问ftp服务器。

偶才接触sles9两周时间,按我的知识面解决不了这一难题了。曾经想过通过DNS来解决,但不愿意设置一个DNS。请不吝赐教:通过调整防火墙的设置能够实现吗?或者通过DNS能够实现吗?先行谢过

P.S. 请斑竹大侠放行!从suse发行区也发了一个同样的帖子,发完后才发现发错地方了,应该在这里比较合适。新人,请原谅
 楼主| 发表于 2005-8-19 19:04:24 | 显示全部楼层
在daemeon大侠的帮助下已经搞定!与大家分享:

iptables -t nat -A POSTROUTING --protocol tcp --source 内网地址 --destination FTP服务器的IP --dport 21 -j SNAT --to-source 外网IP
回复 支持 反对

使用道具 举报

发表于 2005-8-21 21:30:09 | 显示全部楼层
2楼的兄弟,你能不能把命令分开啊
解释一下行吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-22 10:19:02 | 显示全部楼层
光有那一条还不行。通过潜心研究文档,偶终于大彻大悟   需要使用这两条iptables命令:

iptables -t nat -A PREROUTING  --protocol tcp --destination 218.x.x.x  --dport 21 -j DNAT --to-destination 192.168.0.1:21

iptables -t nat -A POSTROUTING --protocol tcp --source 192.168.0.0/24 --destination 192.168.0.1 --dport 21 -j SNAT --to-source 218.x.x.x

背景:偶的外网卡eth0,内网卡eth1,218.x.x.x是公网IP(eth0),192.168.0.0/24是内网地址,其中192.168.0.1就是FTP服务器的IP;已经通过从YaST界面的防火墙配置了通过masquerade访问internet

现用命令iptables -t nat -L -v -n可看到如下结果:

Chain PREROUTING (policy ACCEPT 85147 packets, 7697K bytes)

pkts bytes target     prot opt in  out  source     destination
22   1104  DNAT       tcp  --   *   *   0.0.0.0/0     218.x.x.x   tcp dpt:21 to:192.168.0.1:21

Chain POSTROUTING (policy ACCEPT 104 packets, 12059 bytes)

pkts  bytes     target             prot opt in     out     source                 destination
21814 1407K MASQUERADE  all    --    *     eth0    192.168.0.0/24   0.0.0.0/0
12    588        SNAT               tcp    --   *      *        192.168.0.0/24  192.168.0.1    tcp dpt:21 to:218.x.x.x

偶一行行说说自己的理解,不对之处请赐教(本周是偶学sles9的第3周,真心向各位前辈学习):

第1行:任何地方发来的到218.x.x.x:21的包,将起目标地址修改为192.168.0.1:21
第2行:内网发到eth0任何协议的任何包都将其“化妆”成公网IP(这个是从YaST设置防火墙得到的结果)
第3行:从内网发到192.168.0.1:21的包,将其源地址修改为218.x.x.x:21

这样,内、外网都可通过这个公网IP访问FTP服务器。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-22 10:20:52 | 显示全部楼层
唉!这个论坛居然会将多余空格都给删掉,上下行无法对齐。凑合着看吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表