分类: 系统运维
2008-05-21 08:53:15
目的:模拟拥有双出口链路情况下基于原地址策略路由功能,实现不同原内部地址从不同出口对外部网络的访问,由于多数实际情况下路由器在外部端口使用NAT对内网地址进行翻译,所以本试验也使用双NAT对内部地址进行翻译,实现通过多ISP访问Internet功能。
环境描述:使用设备为Cisco2621XM + NE-1E模块,该配置拥有两个FastEthernet以及一个Ethernet端口。
现使用Ethernet 1/0 端口连接内部局域网,模拟内部拥有100.100.23.0 255.255.0.0 与100.100.24.0 255.255.0.0 两组客户机情况下基于原地址的策略路由。
Fastethernet 0/0 模拟第一个ISP接入端口,Fastethernet 0/1模拟第二个ISP接入端口,地址分别为 Fastethernet 0/0 的ip地址192.168.1.2 255.255.255.0 对端ISP地址192.168.1.1 255.255.255.0
Fastethernet 0/1 的ip地址192.168.2.2 255.255.255.0 对端ISP地址192.168.2.1 255.255.255.0
通过策略路由后对不同原地址数据流量进行分流,使得不同原地址主机通过不同ISP接口访问Internet,并为不同原地址主机同不同NAT地址进行转换。
具体配置:
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname Router
!
!
ip subnet-zero
!
!
!
call rsvp-sync
!
!
!
!
!
!
!
!
interface FastEthernet0/0 --------------------假设该端口为ISP 1接入端口
ip address 192.168.1.2 255.255.255.0 --------分配地址
ip nat outside --------指定为NAT Outside端口
duplex auto
speed auto
!
interface FastEthernet0/1 --------------------假设该端口为ISP 2接入端口
ip address 192.168.2.2 255.255.255.0 --------分配地址
ip nat outside --------指定为NAT Outside端口
duplex auto
speed auto
!
interface Ethernet1/0 --------------------假设该端口为内部网络端口
ip address 100.100.255.254 255.255.0.0 --------分配地址
ip nat inside --------指定为NAT Inside端口
ip policy route-map t0 --------在该端口上使用route-map t0进行策略控制
half-duplex
!
ip nat inside source list 1 interface FastEthernet0/0 overload ------Nat转换,指定原地址为100.100.23.0的主机使用Fastethernet 0/0的地址进行转换
ip nat inside source list 2 interface FastEthernet0/1 overload ------Nat转换,指定原地址为100.100.24.0的主机使用Fastethernet 0/1的地址进行转换
ip classless
ip route 0.0.0.0 0.0.0.0 192.168.2.1 ------静态路由,对Internet的访问通过192.168.2.1(ISP2)链路
ip route 0.0.0.0 0.0.0.0 192.168.1.1 ------静态路由,对Internet的访问通过192.168.1.1(ISP1)链路
ip http server
!
access-list 1 permit 100.100.23.0 0.0.0.255 ----访问控制列表1,用于过滤原地址,允许100.100.23.0网段主机流量通过
access-list 2 permit 100.100.24.0 0.0.0.255 ----访问控制列表2,用于过滤原地址,允许100.100.23.0网段主机流量通过
route-map t0 permit 10 ----定义route-map t0,permit序列为10
match ip address 1 ----检查原地址,允许100.100.23.0 网段地址
set interface FastEthernet0/0 ----指定出口为Fastethetnet 0/0
!
route-map t0 permit 20 ----定义route-map t0,permit序列为20
match ip address 2 ----检查原地址,允许100.100.24.0 网段地址
set interface FastEthernet0/1 ----指定出口为Fastethetnet 0/1
!
!
dial-peer cor custom
!
!
!
!
line con 0
line aux 0
line vty 0 4
!
end
效果检验:
察看路由表
Router#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
100.0.0.0/16 is subnetted, 1 subnets
C 100.100.0.0 is directly connected, Ethernet1/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.2.0/24 is directly connected, FastEthernet0/1
S* 0.0.0.0/0 [1/0] via 192.168.1.1
[1/0] via 192.168.2.1
发现静态路由存在两条路径!
察看ip Nat translations
Router#sho ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 192.168.1.2:1024 100.100.23.23:1024 1.1.1.1:1024 1.1.1.1:1024
icmp 192.168.2.2:1280 100.100.24.23:1280 1.1.1.1:1280 1.1.1.1:1280
由于路由器外部存在1.1.1.1的地址,用于模拟Internet公网地址,发现不同网段内部主机流量确实已经从不同出口访问外部资源,并且使用了不同Nat进行地址转换!
注:大部分多ISP情况下都要使用NAT地址转换功能,但有些特殊情况下不需使用NAT功能,如果不是用NAT,就将配置中的有关NAT的配置去掉,
如此配置中去掉 ip nat inside source list 1 interface FastEthernet0/0 overload 和ip nat inside source list 2 interface FastEthernet0/1 overload
以及在端口上去掉ip Nat outside和ip nat inside的配置,就可以实现不用NAT的策略路由。
以上试验可以实现基于原地址的策略路由功能,可以根据内网原地址进行不同流量通过不同ISP接口访问Internet的功能,但仍没有实现双链路相互备份的功能,即当任意一条链路出现故障的时候无法自动使用另一条链路进行备份,造成一部分相应的内网主机无法访问外网的情况。
望各位Fans进行讨论,希望找到可行性的方法,即能解决策略路由问题,又能实现双链路的自动备份功能!
注(不同者意见):
1、自动备份加负载均衡是很困难的,特别是对常规的路由协议来说, 包括BGP. MPLS TE 有一些解决方法,但只适用于特殊的核心环境,这个问题已经讨论很久了, 现在还没有完美的解决方法, 至少只依靠路由协议来说。
2、偶前一段时间就是用的类似这种负载均衡,但感觉不如指定出口,负载均衡似乎并不好用,还增加无用数据。
3、偶在想有没有办法实现两种很实用的功能:
(1)、从内网访问ispA的IP段,会自动从NAT池中选择ispA的IP转换.访问ispB的网段则同理.这样对于两个isp商互相限制的情况下会大大提高网速.(两个ISP互相限制的情况在各地都不同程度的存在的)-----这个问题,CISCO是可以实现的。
(2)、实现不受DNS解析影响,自动选择最优路由路径.如外网访问内网服务器,客护端为ispA的网段,则自动从ispA的IP访问服务器,而不管DNS解析出的是ispA的IP还是ispB的IP.(不知道一个域名绑顶两个IP可以吗?如果可以那就好办多了.服务器用双网卡各自帮顶一个ISP的IP自然就实现最优选择了.有人提出在内网做DNS服务器,现在bind9有一种叫做的智能dns功能。实际上,是应用了view中的match-list功能。就是说,针对来自不同用户的请求地址,同一域名解析出不同的ip。这样,只要你把网通和电信的ip表添加到dns的match-list中就可以实现了) -------这个问题,CISCO目前还实现不了。
4、相关问题见《双出口要作线路冗余分流的问题》(本站点收集的文章)。