主要实验两条命令:
1、advertise-map non-exist- map
2、advertise-map exist-map
实验 一:项目背景:
AS300 拥有一块地址块:172.16.0.0/16
AS200向AS300申请一个地址 段,172.16.1.0/24.
实验要求 :
1、R2不向R1通告172.16.1.0网络 ,外界要访问 这个网络需要走R3这条路线。
2、R3会向R2通告一条默认路由,但使用团体属性no-export,禁止这条默认路由通告给AS100.
3、如果 ,R2--R3这条链路故障,R2将通告172.16.1.0/24给AS100,以使外界 能通过R1访问AS200.
advertise-map non-exist-map应用情景 :当R3通告过来的默认路由172.16.0.0存在R2的BGP表中时,R2不向AS100通告172.16.1.0/24路由,因为希望 外界访问172.16.1.0这个网络时走R3路线。
而如果 通往R3的链路失效,则向AS100通告172.16.1.0路由。
实验 配置如下:
- R1:
- router bgp 100
- no synchronization
- bgp router-id 1.1.1.1
- bgp log-neighbor-changes
- neighbor 12.1.1.2 remote-as 200
- no auto-summary
- R2:
- interface Loopback0
- ip address 172.16.1.1 255.255.255.0
- !
- interface Serial0/0
- ip address 12.1.1.2 255.255.255.0
- serial restart-delay 0
- !
- interface Serial0/1
- ip address 23.1.1.2 255.255.255.0
- serial restart-delay 0
- !
- router bgp 200
- no synchronization
- bgp router-id 2.2.2.2
- bgp log-neighbor-changes
- network 172.16.1.0 mask 255.255.255.0
- neighbor 12.1.1.1 remote-as 100
- neighbor 12.1.1.1 send-community
- neighbor 12.1.1.1 advertise-map can-go-out non-exist-map if-no-exist
- neighbor 23.1.1.3 remote-as 300
- neighbor 23.1.1.3 route-map set-comm in
- no auto-summary
- ip bgp-community new-format ip community-list 1 permit 100:300
- ip prefix-list if-no-prefix seq 5 permit 172.16.0.0/16
- !
- ip prefix-list out-prefix seq 5 permit 172.16.1.0/24
- !
- route-map can-go-out permit 0
- match ip address prefix-list out-prefix
- !
- route-map set-comm permit 10
- set community 100:300 additive
- !
- route-map if-no-exist permit 10
- match ip address prefix-list if-no-prefix
- match community 1
- !
命令以及功能 解析:
1、neighbor 12.1.1.1 advertise-map can-go-out non-exist-map if-no-exist
如果if-no-exist中捕抓到的路由(172.16.0.0/16)存在“show ip bgp ”中,则不通告can-go-out中的路由
。
如果 if-no-exist中捕抓到的路由(172.16.0.0/16)不存在“show ip bgp ”中,则通告can-go-out中的路
由。
这条命令实现了,当R2到R3的链路失效时,那么在R2的BGP表中,将不再存在172.16.0.0这个条目,这个时候R2
将向R1通告172.16.1.0/24这条路由了。
non-exist-map应该 理解 为“不再存在时”。不再存在时就通告。
2、
neighbor 23.1.1.3 route-map set-comm in
route-map set-comm permit 10
set community 100:300 additive
这几条命令对R3通告过来路由设置 团体值,之后 会通告给R1.值100表示是由AS100通告,值设置 为300则能比较
明晰的表示 这条路由是来自于AS300的。实验中我们要明确 这是AS300的路由,所以才设置 了这个团体值。
3、ip bgp-community new-format
BGP的团体属性有两种格式:
1)十进制格式,在1~4294967200之间
2)AA:NN格式,AA表示AS号,范围 是1~65535.NN取值范围1~65440.
cisco路由器默认是旧的格式 ,也就是1)格式 。如果要使用新的格式 ,则需要“ip bgp-community
new-format”这条命令。
4、
ip community-list 1 permit 100:300
route-map if-no-exist permit 10 match ip address prefix-list if-no-prefix match community 1
- R3:
- router bgp 300
- no synchronization
- bgp router-id 3.3.3.3
- bgp log-neighbor-changes
- network 172.16.0.0
- neighbor 23.1.1.2 remote-as 200
- neighbor 23.1.1.2 send-community
- neighbor 23.1.1.2 route-map set-comm out
- no auto-summary
- !
- ip http server
- no ip http secure-server
- !
- ip route 172.16.0.0 255.255.0.0 Null0
- !
- !
- route-map set-comm permit 10
- set community no-export
- //只通告给AS200,不通告给AS100.
实验二:advertist-map exist-map实例。
如图所示,在AS100内部 运行ospf作为IGP,内网有一段私有地址块192.168.1.0/24.
要求 :
1、不能向外界通告私有地址 块192.168.1.0/24.
2、在R2上对私有地址进行NAT转换。
3、通告转换后的地址 给AS200.
advertise-map exist-map应用情景:如果内部私有地址存在,则通告转换后的地址 ,如果内部私有地址 块因
为某些原因不存在 了,则也没必要通告202.1.1.0这个转换后的地址 了。
基本的配置如下:
- R1:
- !
- router ospf 100
- log-adjacency-changes
- network 0.0.0.0 255.255.255.255 area 0
- R3:
- !
- router ospf 100
- log-adjacency-changes
- network 0.0.0.0 255.255.255.255 area 0
- R2:
- router ospf 100
- log-adjacency-changes
- network 0.0.0.0 255.255.255.255 area 0
- !
- router bgp 100
- no synchronization
- bgp router-id 2.2.2.2
- bgp log-neighbor-changes
- redistribute ospf 100
- neighbor 24.1.1.4 remote-as 100
- no auto-summary
- !
- R4:
- router ospf 100
- log-adjacency-changes
- network 24.1.1.4 0.0.0.0 area 0
- !
- router bgp 100
- no synchronization
- bgp router-id 4.4.4.4
- bgp log-neighbor-changes
- neighbor 24.1.1.2 remote-as 100
- neighbor 24.1.1.2 next-hop-self
- neighbor 45.1.1.5 remote-as 200
- no auto-summary
- !
- R5:
- router bgp 200
- no synchronization
- bgp router-id 5.5.5.5
- bgp log-neighbor-changes
- neighbor 45.1.1.4 remote-as 100
- no auto-summary
这时查看 R5的路由表:
第一步:控制 私有地址 不向外通告。
- R4:
- ip prefix-list block seq 5 deny 192.168.1.0/24
- ip prefix-list block seq 20 permit 0.0.0.0/0 le 32
- router bgp 100
- neighbor 45.1.1.5 prefix-list block out
第二步:做NAT转换
- R2:
- ip nat pool cisco 202.1.1.1 202.1.1.100 prefix-length 24
- ip nat inside source list 1 pool cisco
- interface FastEthernet0/0
- ip address 192.168.1.2 255.255.255.0
- ip nat inside
- interface Serial1/0
- ip address 24.1.1.2 255.255.255.0
- ip nat outside
- R4:
- router bgp 100
- redistribute static
第三步:advertise-map exist-map配置
- R4:
- router bgp 100
- neighbor 45.1.1.5 advertise-map after-nat exist-map private
- ip route 202.1.1.0 255.255.255.0 24.1.1.2
- ip prefix-list after-nat seq 5 permit 202.1.1.0/24
- ip prefix-list private seq 5 permit 192.168.1.0/24
- route-map after-nat permit 10
- match ip address prefix-list after-nat
- !
- route-map private permit 10
- match ip address prefix-list private
查看 实验 效果 :在R2上关闭f0/0接口。然后再看:
因为R4的bgp表中已经没有了192.168.1.0/24这条路由,所以R4也不会再向R5通告202.1.1.0/24这条路由了。
参考 《BGP设计与实现》
本文出自 “YEELONⒼ ” 博客,转载请与作者联系!