鉴于属于技术探讨性质,下面我将一直使用真实数据进行说明。
环境事实如下:
1. 同济大学有内网,为10.0.0.0/8。我们实验室分到两个学校内网的口,其中一个被学校路由器NAT到外网一个IP,并绑定域名hpcc.tongji.edu.cn。此域名在公共DNS上解析为外网的IP,在校内DNS上解析为校内10开头的IP。
2. 实验室内部有NAT网关服务器,称之为100。实验室内网使用IP为11.0.0.0/8(此处为与学校内网的10.0.0.0/8区分,但172的和192的内网IP不够大,所以只好无耻地占掉DoD的IP~)开一个网站服务器,内网IP为11.0.0.102。
3. 目标是,使得102对外提供网页服务,使得三种用户:A,实验室内网内的;B,学校内网内但实验室外的;C,外网用户都可以访问。
NAT服务器上做的iptables如下:
[code=’c#’]
$IPT -t nat -A PREROUTING -p tcp -i eth0 –dport 80 -j DNAT –to 11.0.0.102
$IPT -t nat -A POSTROUTING -s 11.0.0.102 -j SNAT –to $IP_global
$IPT -A FORWARD -d 11.0.0.102 -j ACCEPT
$IPT -A FORWARD -s 11.0.0.102 -m state –state ESTABLISHED -j ACCEPT[/code]
然后发现一个事实… B,C类用户可以成功访问到102,但A类用户会穿透防火墙直接访问NAT服务器的Apache。
这个问题搞了几天有点晕,无奈之下配置了一下NAT的Apache,如下:
[code=’c#’]
ServerName hpcc.tongji.edu.cn
DocumentRoot /opt/httpd_htdocs
RedirectMatch ^/(.*)$ http://11.0.0.102/$1
[/code]
终于,A,B,C类用户可以访问了…
谁还有别的办法?