实验拓扑:
模拟器:eNSP
实验需求:
如图搭建好拓扑,A企业内网采用172.16.X.0/24来进行配置,配置好IP地址后测试直连PING通 服务器采用回环口进行模拟。
大型企业A需要承担互联网的联网任务,用来透传互联网条目,ISPB上挂有很多的服务器,这些服务器在互联网上必须能够访问,ISPC上也有一些列的服务器,要求互联网能够访问,根据以下要求进行配置:
- 每一台路由器都起一个/32 回环地址RX地址为X.X.X.X。
- 大型企业内部起OSPF协议,ISP B内部也起OSPF协议 大型企业A分别和ISP B和ISP C建立BGP邻居关系,以用来透传互联网上的条目,要求R1和ISPC有链路冗余,要求用回环口来建立EBGP邻居。
- 要求ISPC学到的挂在ISP B的服务器条目尽可能少。
- 要求ISP C前往ISP B那些服务器是通过R3和R5之间的高带宽链路的,为了充份利用链路带宽,要求ISP B访问ISP C上的服务器是走的R4和R6之间的底带宽链路,这些配置都需要在大型企业业上完成。
- 要求ISP和企业之间的BGP邻居建立是安全的。
- 完成以上所有配置后,确信网络中的每一台设备都学到了服务器对应的BGP条目。
步骤1:
划分IP地址思路,内网用链路两端的路由器标号作为IP地址第三段的标识,最后一位标识用自己路由器的下标比如R3和R2连接的链路就是172.16.23.0/24 R3上G0/0/1的ip地址就是172.16.23.3
将个网端口的IP地址进行配置(包括回环口),其中子网掩码是30位的地址注意接口的IP地址划分,另外R1上需要手动添加接口。另外配置为BGP建立邻居关系的回环口,如果R1就为1.1.1.1,其他路由器一样。
ISP C:
R7:(按照要求,服务器用回环口代替)
interface GigabitEthernet0/0/0
ip address 201.1.1.1 255.255.255.252
interface GigabitEthernet0/0/1
ip address 200.1.1.1 255.255.255.252
服务器:
interface LoopBack1
ip address 210.1.2.1 255.255.255.0
interface LoopBack2
ip address 210.1.1.1 255.255.255.0
建立BGP关系的回环口:
interface LoopBack3
ip address 7.7.7.7 255.255.255.255
A企业:
R1:
OSPF内网:
interface GigabitEthernet0/0/0
ip address 172.16.12.1 255.255.255.0
interface GigabitEthernet0/0/1
ip address 172.16.13.1 255.255.255.0
与互联网连接:
interface GigabitEthernet0/0/2
ip address 201.1.1.2 255.255.255.252
interface GigabitEthernet4/0/0
ip address 200.1.1.2 255.255.255.252
建立BGP关系的回环口:
interface LoopBack1
ip address 1.1.1.1 255.255.255.255
R2:
OSPF内网:
interface GigabitEthernet0/0/0
ip address 172.16.12.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 172.16.23.1 255.255.255.0
与互联网连接:
interface GigabitEthernet0/0/2
ip address 202.1.1.1 255.255.255.0
建立BGP关系的回环口:
interface LoopBack1
ip address 2.2.2.2 255.255.255.255
R3:
OSPF内网:
interface GigabitEthernet0/0/0
ip address 172.16.13.3 255.255.255.0
interface GigabitEthernet0/0/1
ip address 172.16.23.3 255.255.255.0
与互联网连接:
interface GigabitEthernet0/0/2
ip address 203.1.1.1 255.255.255.0
建立BGP关系的回环口:
interface LoopBack1
ip address 3.3.3.3 255.255.255.255
ISP B:
R4:
interface GigabitEthernet0/0/0
ip address 202.1.1.2 255.255.255.252
interface GigabitEthernet0/0/1
ip address 204.1.1.1 255.255.255.252
建立BGP关系的回环口:
interface LoopBack1
ip address 4.4.4.4 255.255.255.255
R5:
interface GigabitEthernet0/0/0
ip address 203.1.1.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 205.1.1.1 255.255.255.252
建立BGP关系的回环口:
interface LoopBack1
ip address 5.5.5.5 255.255.255.255
R6:(按照要求,服务器用回环口代替)
interface GigabitEthernet0/0/0
ip address 204.1.1.2 255.255.255.252
interface GigabitEthernet0/0/1
ip address 205.1.1.2 255.255.255.252
服务器:
interface LoopBack1
ip address 220.1.1.1 255.255.255.0
interface LoopBack2
ip address 220.1.2.1 255.255.255.0
interface LoopBack3
ip address 220.1.3.1 255.255.255.0
interface LoopBack4
ip address 220.1.4.1 255.255.255.0
建立BGP关系的回环口:
interface LoopBack5
ip address 6.6.6.6 255.255.255.255
配置完成后,在直连链路上进行ping操作,检测IP地址是否有误。
步骤2:
大型企业A内部起OSPF协议(保证内部通讯),ISP B内部也起OSPF协议(保证内部通讯),大型企业A分别和ISP B和ISP C建立BGP邻居关系(是EBGP邻居关系,因为AS号不同),以用来透传互联网(也就是双方服务器的条目)上的条目,要求R1和ISPC有链路冗余,要求用回环口来建立EBGP邻居;
按照要求,首先在大型企业内部启用OSPF协议(注意不能够将与外网连接的接口通告进来,而且需要将建立BGP关系的回环口通告进来,保证回环口可以TCP可达)
R1:
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 172.16.12.0 0.0.0.255
network 172.16.13.0 0.0.0.255
R2:
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 172.16.12.0 0.0.0.255
network 172.16.23.0 0.0.0.255
R3:
ospf 1
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 172.16.13.0 0.0.0.255
network 172.16.23.0 0.0.0.255
然后检测环回口是否互通
1.1.1.1和2.2.2.2之间(互通)
1.1.1.1和3.3.3.3之间(互通)
2.2.2.2和3.3.3.3之间(互通)
保证企业A互通后,我们配置让ISP C互通(OSPF只需要配置内部相连,与大型企业相连的接口不能配置OSPF,另外模拟WEB服务器的回环口也需要通告进来):
R4:
ospf 1
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 204.1.1.0 0.0.0.3
R5:
ospf 1
area 0.0.0.0
network 5.5.5.5 0.0.0.0
network 205.1.1.0 0.0.0.3
R6:
ospf 1
area 0.0.0.0
network 6.6.6.6 0.0.0.0
network 204.1.1.0 0.0.0.255
network 205.1.1.0 0.0.0.255
network 220.1.0.0 0.0.255.255
检测各需要建立BGP关系的回环口是否互通:(4.4.4.4和5.5.5.5之间可以不建立IBGP连接)
R6:
6.6.6.6和4.4.4.4(互通)
6.6.6.6和5.5.5.5(互通)
检测所有OSPF通告IP地址互通后,我们完成了ISP C内部的互通,现在需要完成的是将双方互联网上服务器的条目进行透传,因为在不同AS之间传递路由条目,所以我们选择BGP进行配置。其中ISP C在AS 3中,ISP B 在AS 2中 ,大型企业A在AS 1中。
BGP配置分为两种情况,双方建立的是EBGP邻居关系或者IBGP邻居关系,如果AS号不同自然就是EBGP邻居关系,相同的话就是IBGP邻居关系。首先进行EBGP邻居关系的配置。
存在EBGP邻居关系的有:R7和R1,R2和R4,R3和R5:
R7和R1:首先EBGP关系建立的条件是建立关系的IP地址TCP可达,我们需要在双方配置静态路由,保证回环口之间的互通。
R1上:(双静态双链路保证冗余,也就是一条连接断开后,还可以用另外一条静态路由走另外一条链路)
ip route-static 7.7.7.7 255.255.255.255 200.1.1.1
ip route-static 7.7.7.7 255.255.255.255 201.1.1.1
R7上:
ip route-static 1.1.1.1 255.255.255.255 200.1.1.2
ip route-static 1.1.1.1 255.255.255.255 201.1.1.2
配置完成后用ping来检查是否互通:(互通)
保证可达后进行BGP的配置
R7和R1的EBGP的配置:
R7上:
bgp 3 (表示的是自己的AS号为3)
peer 1.1.1.1 as-number 1 (EBGP对等体的建立关系的ip地址和AS号,本题目中对端建立EBGP关系的地址采用回环口进行,对方处于区域1)
peer 1.1.1.1 connect-interface LoopBack3(按照题目要求应该使用自己的回环口跟对方建立邻居关系,如果没有写的话,就会自动用自己与对端相通的物理接口进行连接。)
peer 1.1.1.1 ebgp-max-hop 2 (因为我们建立EBGP邻居关系是采用的两个回环口来建立的,EBGP对等体建立报文规定只能有一跳,而现在有两跳,为了防止建立关系的不被丢弃,我们需要将EBGP建立报文的生存时间改为2或者更大)
R1上:
bgp 1(表示的是自己的AS号为1)
peer 7.7.7.7 as-number 3 (对方的建立连接的接口和AS号)
peer 7.7.7.7 connect-interface LoopBack1(同上)
peer 7.7.7.7 ebgp-max-hop 2(同上)
配置完成后,在R1或者R7上使用dis bgp peer 命令查看EBGP关系是否建立成功
在R1上:
Established状态表示已经建立成功了。
同理我们在R2和R4之间进行EBGP的配置
在R2和R4上配置静态路由,保证与对端回环口TCP可达:
R2:ip route-static 4.4.4.4 255.255.255.255 202.1.1.2
R4:ip route-static 2.2.2.2 255.255.255.255 202.1.1.1
进行ping测试:(成功)
保证可达后进行BGP的配置
R2和R4的EBGP配置:
R2上:
bgp 1
peer 4.4.4.4 as-number 2
peer 4.4.4.4 connect-interface LoopBack1
peer 4.4.4.4 ebgp-max-hop 2
R4上:
bgp 2
peer 2.2.2.2 as-number 1
peer 2.2.2.2 connect-interface LoopBack1
peer 2.2.2.2 ebgp-max-hop 2
配置完成后检查双方的EBGP关系是否建立:
在R2上:
建立成功最后一个EBGP邻居关系R3和R5之间:
在R3和R5上配置静态路由,保证与对端回环口TCP可达:
R3:ip route-static 5.5.5.5 255.255.255.255 203.1.1.2
R5:ip route-static 3.3.3.3 255.255.255.255 203.1.1.1
进行ping测试:(成功)
保证可达后进行BGP的配置R3和R5的EBGP配置:
R3上:
bgp 1
peer 5.5.5.5 as-number 2
peer 5.5.5.5 connect-interface LoopBack1
peer 5.5.5.5 ebgp-max-hop 2
R5上:
bgp 2
peer 3.3.3.3 as-number 1
peer 3.3.3.3 connect-interface LoopBack1
peer 3.3.3.3 ebgp-max-hop 2
配置完成后检查双方的EBGP关系是否建立:
在R3上:
建立成功
EBGP关系已经建立完成,现在进行IBGP关系的建立,IBGP关系也需要建立关系的接口IP地址TCP可达,这个已经由OSPF提供,我们不必配置静态路由(互通前面已经验证)
我们直接进入IBGP的配置
在大型企业A中IBGP关系配置3个,R1和R2,R1和R3,R2和R3之间都配置IBGP关系,R2和R3配置IBGP关系是保证链路的冗余,当ISP B访问ISP C时,并且R2和R1之间的链路出现状况断开,R2仍然可以获得R3从R1发送过来的路由条目,传给R6,虽然不是最优路由,但是我们可以通过修改属性使一部分去往ISP C流量也可以走上方链路,如果不R2和R3不建立关系的,上方链路将完全处于无用状态,因为根本收到没有去往ISP C的路由条目,更不用说发给R4最终发给ISP B了。
R1和R2的IBGP配置:
R1:
bgp 1(自己的AS号)
peer 2.2.2.2 as-number 1 (对方的建立连接的IP地址和AS号,AS相同表示的就是IBGP关系)
peer 2.2.2.2 connect-interface LoopBack1(使用自己的回环口1进行关系建立)
peer 2.2.2.2 next-hop-local (根据下一跳属性(AS),IBGP传递EBGP学习的路由条目到IBGP对等体,路由的下一跳不会改变,也就是EBGP传给IBGP的端口的IP地址,是为了保证无环路,但是我们可以使用这条命令修改将路由条目下一跳为与对端接口建立IBGP关系的地址,也就是回环口地址)
R2:(同R1)
bgp 1
peer 1.1.1.1 as-number 1
peer 1.1.1.1 connect-interface LoopBack1
peer 1.1.1.1 next-hop-local
注意:
另外,IBGP关系报文的建立可以多跳,所以不用向EBGP一样进行修改。
路由器传递给EBGP对等体路由条目的时候,会自动修改下一跳为自己的出接口,所以不用配置
next-hop-local 。
配置完成后检查关系建立是否成功:(成功)
R1和R3的IBGP配置:
R1上:
bgp 1
peer 3.3.3.3 as-number 1
peer 3.3.3.3 connect-interface LoopBack1
peer 3.3.3.3 next-hop-local
R3上:
bgp 1
peer 1.1.1.1 as-number 1
peer 1.1.1.1 connect-interface LoopBack1
peer 1.1.1.1 next-hop-local
配置完成后检查关系建立是否成功:(成功)
R2和R3的IBGP配置:
R2上:
bgp 1
peer 3.3.3.3 as-number 1
peer 3.3.3.3 connect-interface LoopBack1
peer 3.3.3.3 next-hop-local
R3上:
bgp 1
peer 2.2.2.2 as-number 1
peer 2.2.2.2 connect-interface LoopBack1
peer 2.2.2.2 next-hop-local
配置完成后检查关系建立是否成功:(成功)
将大型企业A中的IBGP关系建立完成后,我们建立ISP B的IBGP邻居关系,只需要建立R4和R6,R5和R6的便可以了。R4和R5不需要建立关系的原因,因为中间没有直连,例如ISP B的服务器需要访问需要访问ISP C的服务器,让R4或者R5与R6之间的链路断了,都不可能互相发送ISP B服务器的条目,因为R4和R5在链路端口的情况下基本是不可达状态。R4和R6的IBGP配置:
R4上:
bgp 2
peer 6.6.6.6 as-number 2
peer 6.6.6.6 connect-interface LoopBack1
peer 6.6.6.6 next-hop-local
R6上:
bgp 2
peer 4.4.4.4 as-number 2
peer 4.4.4.4 connect-interface LoopBack5
peer 4.4.4.4 next-hop-local
配置完成后检查关系建立是否成功:(成功)
R5和R6的IBGP配置:
R5上:
bgp 2
peer 6.6.6.6 as-number 2
peer 6.6.6.6 connect-interface LoopBack1
peer 6.6.6.6 next-hop-local
R6上:
bgp 2
peer 5.5.5.5 as-number 2
peer 5.5.5.5 connect-interface LoopBack5
peer 5.5.5.5 next-hop-local
配置完成后检查关系建立是否成功:(成功)
当BGP和EBGP关系建立完成后,我们将需要相互交互的报文通告进BGP中:
按照题目的要求,我是是让ISP B和ISP C之间互相学习到对端挂在的服务器的路由条目:
进入R7:
bgp 3
network 210.1.1.0 24
network 210.1.2.0 24
BGP通告的是路由表,而且需要精确匹配路由表的子网掩码,如果没有精确匹配,虽然命令会被写入,但是命令不会有任何效果。
例如:
然后查看配置(写入了)
查看BGP 路由表:(没有写入)
另外如果只输入命令network 210.1.1.0 后面不加24,会按主内写入,也就是24,如果这个24跟路由表不匹配也会报错。
进入R6:
bgp 2
network 220.1.1.0
network 220.1.2.0
network 220.1.3.0
network 220.1.4.0
配置完成后分别在R6和R7上查看是否学习到了路由条目:
R7:(学习到了)
R6:(学习到了)
学习到路由条目以后,我们用两边的回环口互相ping(成功说明要求达成)
另外,我们一定不能通过R7直接ping R6的服务地址,因为ping包过去了以后,对面接到了没有R7物理接口的路由条目,会丢弃,使得不通。
步骤三:
要求ISP C学到的挂在ISP B的服务器条目尽可能少。
ISP C如果想学到ISP B服务器条目较少,只需要在ISP B的BGP进程下将服务器通告的路由条目进行汇总,BGP汇总的方式是手动汇总,也就是使用CIDR,我们先观察ISP C服务器上有哪些路由条目:
L1:220.1.1.1/24
L2:220.1.2.1/24
L3:220.1.3.1/24
L4: 220.1.4.1/24
通过计算,可以汇总成220.1.0.0/21。
在R6上:
bgp 2
aggregate 220.1.0.0 255.255.248.0
然后查看ISP B上学到的路由条目:
发现ISP C的路由条目既有汇总的和没有汇总的,这是因为ISP B及发送了明细路由,也发送了汇总路由,如果只需要汇总的路由,我们只需要在 aggregate 220.1.0.0 255.255.248.0 命令后面敲入关键词:detail-suppressed,表示抑制明细的路由条目。
我们敲入关键词以后,在检测R7上的路由条目:
发现只存在汇总后的路由条目了,实验成功。
步骤四:
要求ISP C前往ISP B那些服务器是通过R3和R5之间的高带宽链路的,为了充份利用链路带宽,要求ISP B访问ISP C上的服务器是走的R4和R6之间的底带宽链路,这些配置都需要在大型企业业上完成。
首先我们先思考一下我们可以修改哪些BGP属性来实现路由的选路,最常用的是med和本地优先级,另外也可以实验首选值,起源,AS路径,下一跳(比较少用)来选路。
一般MED是入栈属性,但是出栈时也可以用,本地优先级只能用在出栈的时候。
然后我们看一下R6去往ISP C到底是怎么走的:
去的时候:走的是R1,R2,R3到R6。
回程的时候:走的是R4,R2,R1到R7,也就是原路返回
都是走上方,我们需要将ISP C与ISP B发起的通信过去时走下方(需要改变),然后回程的时候走上方(不用变)。
明确了改变的目标以后,我们让ISP C走ISP B的时候走下方,思考可以用哪几种方法。
med可以传给EBGP和IBGP对等体,如果在大型企业上配置,是可以满足的要求的。因为med值如果存在默认为0,我们只能将med值修改大。
具体操作:
我们可以在R2上配置策略路由将ISP B上条目的med值修改高,在G0/0/0的出方向发送给R1。Med值可以在接收者的一个AS之中传播,R1接收到了条目的med值后会与其他从R3接收到的相同目的地的路由条目进行比较,最后会选择走下方的路由条目,保证了路由选路。
在R2上:
首先配置一个基本ACL(因为需要用路由策略调用,路由策略如果用ACL只能匹配源),注意匹配的ISP B上路由的条目,因为路由条目的报文时从对方为源发送过来的,而基本ACL只能匹配源。
先查看R1的BGP路由表:
在R2上:
创建一个ACL匹配ISP B的源
acl number 2000
rule 5 permit source 220.1.0.0 0.0.255.255
然后在路由策略里面调用这个ACL,并将匹配到的流量中路由表的med值改为150。(另外可以不写匹配所有,本题比较简单,只有ISP B的流量可以访问ISP C)
route-policy med permit node 1
if-match acl 2000
apply cost 150
匹配完成后再IBGP传给R1对等体的出方向使用:
bgp 1
peer 1.1.1.1 route-policy med export
修改完成后,在R1上查看BGP路由表:(选路发生了改变,现在走R3去往R7)
我们将配置归零,重新用本地优先级进行计算。
本地优先级,只可以传递给IBGP对等体,如果有本地优先级,默认为100,越大越优先,并且在本题目中可以满足。
先查看R1的BGP路由表:(走的是上方)
具体操作:
我们可以在R3上配置策略路由将ISP B上条目的本地优先级值修改高,在G0/0/0的出方向发送给R1。本地优先级值可以在发送者的一个AS之中传播,R1接收到了条目的本地优先级后会与其他从R2接收到的相同目的地的路由条目进行比较,最后会选择走下方的路由条目,保证了路由选路。
首先创建ACL匹配流量:
acl number 2000
rule 5 permit source 220.1.0.0 0.0.255.255
用路由策略匹配流量并将本地优先级改为200(比100大就可以)
route-policy local permit node 1
if-match acl 2000
apply local-preference 200
在BGP进程中运用路由策略
bgp 1
peer 1.1.1.1 route-policy local export
然后在R1上查看BGP路由表:(修改成功,流量走下方)
AS_path:入栈和出栈都可以使用,使用方法跟前面两个差不多,我们只需要将R2上将收到的ISP B的条目的路径改长,路径越短越优先。
先查看R1的BGP路由表:(走的是上方,上一步配置已经清零)
具体步骤:
ACL匹配流量:
acl number 2000
rule 5 permit source 220.1.0.0 0.0.255.255
路由策略匹配ACL和修改路径:
route-policy as_path permit node 1
if-match acl 2000
apply as-path 2 5 6 overwrite(覆盖原有路径)/additive (添加到当前路径以后)
调用策略:
bgp 1
peer 1.1.1.1 route-policy as_path export
查看R1的BGP路由表:(成功,流量走下方)
起源:入栈和出栈都可以使用,使用方法跟前面两个差不多,我们只需要将R2上将收到的ISP B的条目的起源改差,network的条目大于EGP学习到的条目,EGP学习到的条目大于从外部引入的条目。具体步骤:
先查看R1的BGP路由表:(走的是上方,上一步配置已经清零)
ACL匹配流量:
acl number 2000
rule 5 permit source 220.1.0.0 0.0.255.255
路由策略匹配ACL,并将匹配到的路由的起源改为从外部引入
route-policy org permit node 1
if-match acl 2000
apply origin incomplete
在BGP进程里应用:
bgp 1
peer 1.1.1.1 route-policy org export
查看R1的BGP路由表:(修改成功,ISP B到ISP C走下方)
下一跳:在修改路由属性中运用的比较少,略过。首选值:首选值是华为路由器特有的属 性,自在本地有效,而且在所有属性选路的优先级最高。因为只在本地有用,我们只能在R1选路上使用。
首先查看R1的BGP路由表:(原配置已经清空,走的是上方)
然后在R1上:
ACL匹配流量:
acl number 2000
rule 5 permit source 220.1.0.0 0.0.255.255
路由策略匹配ACL,并且将匹配到的路由条目的首选值值改大(越大越优先)
route-policy value permit node 1
if-match acl 2000
apply preferred-value 100
然后在与R2建立IBGP关系的入方向调用路由策略:
bgp 1
peer 3.3.3.3 route-policy value import
查看路由表:(首选值修改成功,选路)
步骤五:
要求ISP和企业之间的BGP邻居建立是安全的。
BGP认证方式很单一,也就是在建立BGP关系的时候配置,按照要求我们需要在ISP和企业之间建立安全认证,也就是只需要在建立EBGP关系的时候配置。
ISP C和大型企业A之间:一个EBGP关系。
R1和R7:
在R1上配置:
bgp 1
peer 7.7.7.7 password cipher gok
配置完成后,经过一段时间,我们在R1上查看与R7的EBGP关系已经断开。
我们随后在R2上配置:
bgp 3
peer 1.1.1.1 password cipher gok
配置完成后,我们在R1上查看关系建立是否成功:
ISP B和大型企业A之间:两个EBGP关系
R2和R4之间:
R2上:
bgp 1
peer 4.4.4.4 password cipher gok
R4上:
bgp 2
peer 2.2.2.2 password cipher gok
R3和R5之间:
R3上:
bgp 1
peer 5.5.5.5 password cipher gok
R5上:
bgp 2
peer 3.3.3.3 password cipher gok
配置完成后,我们也就是保证双方的安全了要求。
步骤六:
完成以上上进行配置:所有配置后,确信网络中的每一台设备都学到了服务器对应的BGP条目。
分别查看不同路由器的路由表:(都学到了BGP路由)
R1:
R2:
R3:
R4:
R5:
R6:
R7: