三、初步方案
直接在PIX防火墙的第二个接口接电信网。
因为本系统一共有5个需要发布的服务器。目前已经通过联通发布了两个。现在加接了电信链路,意味着还需要通过电信发布三个服务器。而这些服务器都是要公网任何地方都可以访问的,所以要求服务器的返回路由设置必须是0.0.0.0 0.0.0.0(所有地址)。
本来以为PIX可以设置两台默认路由。当我加上:
pix(config)# route outside2 0.0.0.0 0.0.0.0 e.f.g.233 1
系统显示:
cannot add route entry
显然这种方法是不行的了。假如我只做:
pix(config)# route outside2 e.f.g.0 255.255.255.0 e.f.g.233 1
那么意味着只有e.f.g.0 这个段可以访问outside2, 而且用户通过NAT上网时,碰到这一段也会从outside2走。
假如这样做,我放在outside2的服务器就谈不上公网访问了。
四、方案二: 增加一个路由设备
通过PIX第二口连接电信的方案失败了,仔细想了一下,并在juechen70同志的指导下,开始尝试第二种方案:
增加一个接入设备。如图
使用cisco2621 路由器E0接入电信网络。E1放到VLAN1中,地址设为10.10.10.2。
CISCO 2621 部份配置:
------------------------------------------------ip nat static & route----------------------------
ip nat inside source list 1 interface FastEthernet0/0 overload
ip nat inside source static 10.10.10.36 e.f.g.237
ip nat inside source static tcp 10.10.10.4 21 e.f.g.236 21 extendable
ip nat inside source static tcp 10.10.10.4 80 e.f.g.236 80 extendable
ip nat inside source static 10.10.10.34 e.f.g.235
ip classless
ip route 0.0.0.0 0.0.0.0 e.f.g.233
ip route 10.10.10.0 255.255.255.0 FastEthernet0/1
ip route 10.10.11.0 255.255.255.0 FastEthernet0/1
ip route 10.10.12.0 255.255.255.0 FastEthernet0/1
ip route 10.10.13.0 255.255.255.0 FastEthernet0/1
-------------------over-------
并在4006的三层模块上加上一条:
ip route 0.0.0.0 0.0.0.0 10.10.10.2 1
4006上就有两条默认路由(是支持的)。
ip route 0.0.0.0 0.0.0.0 10.10.10.1 1
ip route 0.0.0.0 0.0.0.0 10.10.10.2 1
这样看来, 似乎网站访问应该正常的了。
比如公网中H1主机(地址:61.32.23.12)通过电信网访问服务器10.10.10.4 , 而10.10.10.4 服务器通过10.10.10.249网关到默认路由10.10.10.2,再经原路返回到61.32.23.12。
理论上, 这种方案是可行的。
同样的原理, H1主机访问联通中的10.10.10.3,也会以同样的路由返回。
但经过一个小时的试用, 发现了两个问题:
返回路由混乱。
例如公网上有H1访问通过PIX(联通)访问10.10.10.3,而10.10.10.3却通过10.10.10.2(电信)返回。这样H1就收不到10.10.10.3返回的包。
路由器NAT查看方式:
cisco2621#sh ip nat trans
PRo Inside global Inside local Outside local Outside global
tcp e.f.g.234:80 10.10.10.3:80 218.18.124.152:3637 218.18.124.152:3637
tcp e.f.g.234:80 10.10.10.3:80 61.41.131.164:37721 61.41.131.164:37721
--- e.f.g.235 10.10.10.34 --- ---
--- e.f.g.237 10.10.10.36 --- ---
tcp e.f.g.236:21 10.10.10.4:21 --- ---
tcp e.f.g.236:80 10.10.10.4:80 --- ---
tcp e.f.g.236:80 10.10.10.4:80 218.18.38.26:4512 218.18.38.26:4512
tcp e.f.g.236:80 10.10.10.4:80 218.10.169.230:1627 218.10.169.230:1627
tcp e.f.g.235:21 10.10.10.34:21 202.104.219.59:60945 202.104.219.59:60945
tcp e.f.g.236:80 10.10.10.4:80 221.1.151.134:2240 221.1.151.134:224
注重,2621路由并没有做到10.10.10.3的static NAT。
2、inside用户上网速度减慢
因为所有VLAN用户都通过三层交换连网。而三层交换又有两个默认的路由。
所以当用启访问某网站时,三层交换会事先traceroute网络,再找出合适的路由返回给用户,这个中间所需要时间就非常长了。
路由模块寻址:
1 a.b.c.129 0 msec
10.10.10.2 4 msec
a.b.c.129 0 msec
2 e.f.g.233 4 msec
vlan2.ahwh.cnuninet.net (211.91.108.62) 4 msec
e.f.g.233 4 msec
3 *
61.190.251.53 0 msec
61.241.128.49 4 msec
4 202.102.205.233 4 msec
61.241.128.5 4 msec
202.102.205.233 4 msec
5 211.94.44.81 8 msec
202.97.41.105 8 msec
211.94.44.81 4 msec
6 p-14-0-r2-c-jsnj-1.cn.net (202.97.37.114) 8 msec
211.94.42.41 88 msec
p-14-0-r2-c-jsnj-1.cn.net (202.97.37.114) 4 msec
7 211.94.40.13 164 msec
202.97.35.13 12 msec
211.94.40.13 188 msec
8 202.97.34.45 40 msec
219.158.28.73 176 msec
202.97.34.45 40 msec
9 219.158.11.121 108 msec
202.96.12.42 288 msec
219.158.11.121 108 msec
10 202.106.192.174 292 msec
202.96.12.34 60 msec
202.106.192.174 292 msec
11 202.106.192.226 116 msec
210.74.176.158 292 msec
202.106.192.226 124 msec
12 *
202.106.192.174 108 msec
www.sina.com.cn (202.108.37.42) 288 msec
4006-l3#
五、修改路
在上述方案中,双默认路由已经不能通过。经过在cisco CCO上大量的资料查阅之后,头脑中昏昏沉沉,总是想着返回路由的问题,不过仍然没有答案。 icewind也提示使用route-map或者来ACL限制,不过总感觉是不对的,因为route-map最终服务于内网用户上网,以内部先发出连接为主。
做为网站访问,只能形成公网上的死区(访问不到)。而ACL应用应该是使用在路由之后的,路由不能选择,也就谈不上ACL(个人感觉,可能不对)。
看来服务器经过了三层交换之后, 就不太轻易返回路由了。假如把服务器的网关直接指向出网的路由器行不行呢?
修改方案:
将服务器10.10.10.36 、10.10.10.4 、10.10.10.34 网关修改为10.10.10.2。
这样等于服务器直接出公网, 不经过三层交换。这样外网就可以访问到了。
本来我非常担心这样做会导致内网其他网段不能访问该服务器,不过经过一段时间的检测之后, 发现其他网段也是可以访问的。
主要是因为10.10.10.2也做了返回的路由,如下:
ip route 10.10.11.0 255.255.255.0 FastEthernet0/1
ip route 10.10.12.0 255.255.255.0 FastEthernet0/1
ip route 10.10.13.0 255.255.255.0 FastEthernet0/1
这个可以保证在这个地址范围内的主机访问该服务器,也由10.10.10.2返回给三层路模块,再回到发出请求的主机。
以上也可通过ping来看出:
10.10.13.25的主机ping 10.10.10.4
C:\ping 10.10.10.4
Pinging 10.10.10.4 with 32 bytes of data:
Reply from 10.10.10.4: bytes=32 time
Reply from 10.10.10.4: bytes=32 time
Reply from 10.10.10.4: bytes=32 time
Reply from 10.10.10.4: bytes=32 time
Ping statistics for 10.10.10.4:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
其中TTL(生存时间)=253,表示经过两跳路由,证实结果是对的。
后记:到这儿,本系统的配置应该就算全部完成了,最后的解决方案却很简单,只是修改了服务器的网关。但我认为经过前面的过程却必不可少, 可以更好的把握关于静态路由方面的知识。
当然,在这个系统中其他网段用户的上网还只能通过PIX,不能使用电信线路。诸位看官有什么好的方法呢?
另外,在路由器的能不能智能分辨路由的方向,而辨认出是内网访问还是外网,并对所测出的情况进行路由选择?假如是内网,则使用做好的route-map, 假如是外网访问,则使用原来的返回路径。