在楼栋汇聚处配置策略路由如下:
ip access-list extended 100
10 deny ip host X.X.X.X X.0.0.0 X.255.255.255
20 permit ip host X.X.X.X any
ip access-list extended 101
10 deny ip host X.X.X.X X.0.0.0 X.255.255.255
20 permit ip host X.X.X.X any
route-map 100 permit 100
match ip address 100
set ip next-hop 内网下一跳联通路由地址
route-map 100 permit 101
match ip address 101
set ip next-hop 内网下一跳电信路由地址
inter vlan 516
ip route-cache policy
ip policy route-map 100
exit
ip local policy route-map mymap
配置完成后两条策略路由开启或者关闭的情况下,策略路由始终优先走第一位内网联通路由,并不会因联通线路断线,自动切换到电信线路,查询了相关资料启用sdm prefer routing即可实现,但是此命令仅适用于3750以前设备,我得C9300并不接受此协议。
还请大佬赐教策略路由负载均衡关键
不要沉底啊,大佬们帮忙解答一下疑惑,忘记补充的要点
route-map 100 permit 100
match ip address 100
set ip next-hop verify-availability(意思是检测路由是否可用,不可用即不执行此规则)
set ip next-hop 内网下一跳联通路由地址
route-map 100 permit 101
match ip address 101
set ip next-hop verify-availability(意思是检测路由是否可用,不可用即不执行此规则)
set ip next-hop 内网下一跳电信路由地址
但是加上这条命令后
inter vlan 516下
ip policy route-map 100(这条命令能敲进去,但是配置中不现实)
所以现在到了死胡同,烦请大佬们指点迷津
1. C9300的route-map中set的下一跳是你联通电信的内网地址,这些地址不会因为联通或者电信链路断掉而不通,除非你对应的出口设备直接挂掉了。所以不管你写set ip next-hop 还是加上verify-availability 效果都是一样的,set语句一直有效,实现不了空set,也就实现不了切换。
2. 为啥不操控默认路由来实现呢?如果非得用route-map到是也有办法:
准备一个被探测的互联网ip地址,以114.114.114.114为例。
- 9300上写114的主机路由到联通,加上track (ip route 114.114.114.114 255.255.255.255 联通设备接口ip地址 track 10),然后再写同样一条路由到电信,加大管理距离。
- 完善track和sla的配置:
> C9300上写一条联通端IP的静态路由,例如公司设备和联通互联使用12.1.1.0/30,你们用.2联通用.1,那么就添加一条12.1.1.1/32的路由,指向你们联通出口路由器的ip (需要将C9300的接口ip地址在你们联通的路由器上映射一下,保证包能出去)
> 配置sla,检测你们和联通链路的连通性。
> 配置track 调用前面的sla。
- 配置一条route-map,写成 "set ip next-hop recursive global 114.114.114.114"的形式,然后应用到接口上面。
=====
上面的配置基本上就可以了。
正常情况下,sla正常,track状态正常,114的路由指向联通出口,route-map的recursive会自动将下一跳设置为联通设备的ip,如果联通挂掉了,sla异常,track异常,114路由指向电信出口,route-map recursive递归出的下一跳为电信,也可以正常出去。
1、本端C9300至联通或电信出口,因不在一个机房,架构不同且不通,中间借用网络设备强行串接起链路,所以当防火墙内网接口地址或防火墙Down时,C9300至串接设备接口处于正常连接状态,所以set ip next-hop和verify-availability并未监测到异常。
2、因为集团网络缺省默认指向集团总部DMZ。 测试并未能成功
ip sla 1
icmp-echo 1.1.1.2 source-ip 1.1.1.1
ip sla schedule 1 life forever start-time now
track 1 ip sla 1 reachability ip route 0.0.0.0 0.0.0.0 1.1.1.2 track 1
route-map 100 permit 100
set ip next-hop recursive global 1.1.1.2写入后
inter vlan 516下
ip policy route-map 100命令自行丢失,依然能写入不能展示
不知是我配置是否出现错误
PS:两条完全不通的架构,中间靠一条光路串接,串接设备两个端口,分别指向两台防火墙,联通和电信。我觉得问题出在这里且不能解决
查了一下资料 C9300是支持PBR的,三层接口和SVI都支持。但是不支持recursive和 verify availability,也就是前面的方法都毙掉了,没法搞。
只能故障了手动改next-hop的地址了。或者用路由器搞也可以
至于你说SVI接口下挂不上policy route-map的命令。理论上不应该,你先把多余的配置清理一下吧?
ip route-cache policy
ip local policy route-map mymap
这两条命令没啥用。现在的交换机基本上都是CEF,配置route-cache是多余的,(检查一下cef,确保是开启状态的)
目前手上没额外的C9300做测试,没法给你验证这个功能,只能你自己测试了
下面是C9300 17.5的configure guide,可以根据你的实际使用版本更换对应文档查看
因为C9300不支持recursive和 verify availability协议,所以在route-map 100 permit 100下配置recursive和 verify availability协议时,SVL下已经配入的policy route-map,交换机会自动检测到异常,移除policy route-map命令。
完整命令配置展示
ip sla 1
icmp-echo 1.1.1.2 source-ip 1.1.1.1
frequency 5
ip sla schedule 1 life forever start-time now
ip sla 2
icmp-echo 1.1.1.3 source-ip 1.1.1.1
frequency 5
ip sla schedule 2 life forever start-time now
track 1 ip sla 1 reachability
track 2 ip sla 2 reachability
ip access-list extended 100
10 deny ip host 1.1.1.X 1.0.0.0 0.255.255.255
20 permit ip host 1.1.1.X any
route-map load permit 100
match ip address 100
set ip next-hop verify-availability 1.1.1.2 1 track 1
set ip next-hop verify-availability 1.1.1.3 2 track 2
以上配置无问题,只因C9300不支持recursive和 verify availability协议,所以在SVL下无法写入ip policy route-map load,故无法实现,根据理论逻辑C3750及以前三层设备支持,可以实现。
希望以后有同样困扰的人,可以借鉴。