以下详述我的问题,此问题已经困扰我很久了,但怎么尝试都无法解决,本人才疏学浅,请多指教!
1、我的网络结构
如附件图Lanimage.jpg
2、问题叙述
(1)因为正在对网络进行改进,为了不影响网络的正常运行,所以不希望改动原有的服务器配置
(2)邮件服务器(sendmail),可能在原来安装配置时,未开启允许公网IP通过邮件服务器发送邮件,虽然也尝试开启,但是为了服务器的稳定(服务器的运行不能中断),也为了安全,就没有这样做。
(3)在改进过渡过程中,我新做了一个网关,即附件图中的gateway。所以我的网络中,当前存在两个网关,一个是我的mailserver,它既担当前网络的网关,也是邮件服务器(很不好,所以需要改造)。
(4)新的网关。希望内网客户机通过新的网关实现与公网的接入。我做了squid+iptables的透明网关,并写了一个简单叫本,内容如下:
#!/bin/sh
#Edit by mdiane
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -F
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.98.0/24 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.98.0/255.255.255.0 -o eth0 -p tcp --dport ! 25 -j MASQUERADE
结果,上网可以,也实现了内网客户机发送公网邮件的目的,此时其实实现的不是网关与邮件服务器的交互,而是直接内网客机同邮件服务器的交互,此既是我要实现的目的。这样就可以避开邮件服务器的不允许公网IP利用邮件服务器发送邮件的限制。可是这样一来,由于platinum (何时才能飞) 指点得知的缘故,我的内网客户机skype能登录却不能联系其它用户,qq不能登录,msn不能使用语音功能。于是我想到了DNAT,对我的iptables脚本文件作了如下变更:
iptables -t nat -A PREROUTING -p tcp -d mailserver公网ip --dport 25 -j DNAT --to-destination 邮件服务器内网IP:25
iptables -t nat -A POSTROUTING -s 192.168.98.0/255.255.255.0 -o eth0 -j MASQUERADE
结果,客户机在使用outlook express发送邮件时,连接不上邮件服务器的25端口。
请问各位大拿们,我该如何是好啊?
[ 本帖最后由 mdiane 于 2006-6-12 10:05 编辑 ]
Lanimage.jpg (27.35 KB)
下载次数:12
2006-06-12 10:03