- 论坛徽章:
- 0
|
已经有一编文章说过此问题,是合理现象。原文:http://www.i170.com/article/6919
在内网设一个dns 服务器吧.
摘:
#iptables –t nat –A PREROUTING –d 1.1.1.1 –j DNAT --to-destination 192.168.1.24
上面的例子说明凡是访问1.1.1.1的数据包都转给内网的192.168.1.24,这样内部的服务器就可以发布出去了。现在问题来了,如果仅仅这样配置还是存在一点问题的,假设内部网络的其他用户也访问这个经过映射后的地址会怎样?当然他们完全可以直接访问服务器的真实地址,但在一些具体的情况下,比如 dns的解析就是指向了映射后的地址。可以加一条这样的语句:
#iptables –t nat –A POSTROUTING –d 1.1.1.1 –j SNAT –to-source 192.168.1.254
在这里,假设防火墙的内网地址是192.168.1.254,通过这样的配置,问题解决了,想一想为什么会这样?看看下面的示意图:也许你就明白了:
知道问题出在哪里了吗?很明显,当客户机192.168.1.23发起一个访问请求给映射后的地址1.1.1.1,防火墙收到这个请求后根据策略表匹配发现是一个对内部服务器192.168.1.24的映射,如果不加上面的那一行语句,防火墙会通过纯路由的方式将数据包转发给服务器 192.168.1.24,服务器收到请求后,发现源地址为192.168.1.23的客户机发来了一个请求,并且这台主机与自己在同一个网段内,于是直接将回应包SYN+ACK发送给主机192.168.1.23,主机收到这个包后会感觉很奇怪,因为它从来就没有给192.168.1.24发送过连接请求报文,所以就会将回应报文丢弃,现在,我们对内网主机通过映射后地址访问内网服务器的需求进行一些修改,如上面的哪条命令,我们对所有到1.1.1.1 的连接都做一个原地址路由,将连接的原地址改变成防火墙的内网接口地址,于是问题解决了。
当然,问题总有两面性,对于服务器而言,所有访问者这时都变成了防火墙内网的接口地址,这对于服务器的审计是有影响的,在具体的配置过程中,使用者需要权衡利弊,在做配置决定。
原帖由 suran007 于 2005-11-24 15:23 发表
先谢谢这位朋友,我让外面的朋友来访问我的动态域名是可以的,但是为什么内网访问动态域名就不行呢,内网通过ppp0的Ip来访问也不行,不明白为什么,假如我要从内网对网站进行测试,那该怎么办
[ 本帖最后由 anthonyfeng 于 2005-11-26 20:36 编辑 ] |
|