大家好,本期案例中,强叔将为大家介绍企业出口BGP的技术案例,希望能给大家带来一定的收获。

大家都知道,防火墙在企业网络中所处的位置一般是在出口,也就是作为出口网关来使用。对于一般的中小企业,在出口防火墙上配置静态路由就能保证企业内网与Internet之间的访问,但对于大型企业来说静态路由缺乏灵活性和可维护性,是不建议使用的。这里,强叔和大家一起探讨下BGP路由在大型企业出口的基本配置,这里强调是基本配置,就是不包括各种BGP属性等高级配置的。可能大家觉得很简单,但是在实际配置的时候往往会出现这样和那样的问题。当然很熟悉BGP路由的小伙伴们除外。

言归正传,首先我们来看一个组网,左侧是以防火墙为出口的实际组网,右侧为使用eNSP模拟的组网环境。如下图。

企业出口BGP组网配置_企业出口BGP组网配置


网络环境描述如下:

    两台防火墙作为企业的网关,通过主备备份的方式部署在企业的出口。

    企业内网通过OSPF协议学习内网路由。

   两台防火墙分别通过BGP协议与外网两个ISP建立EBGP邻居关系。

    防火墙上配置NAT,保证私网用户能够访问Internet(用于从ISP1访问Internet的地址池:110.1.1.1110.1.1.254;用于从ISP2访问Internet的地址池:210.1.1.1210.1.1.254)

这里说明一下,由于图比较小,一个图无法标出全部地址,只能在两个图中给出。模拟环境中R5Loopback 1地址代表外网服务器,CLIENT1代表用户区1中的一个用户。现给出基本配置如下(说明:这里只给出一条(左侧)线路的路由设备的相关配置,其它的配置部分请参见《USG9000V3R1C20典型配置案例》的路由-企业BGP部分)。

FW1

bgp 10

 peer 100.1.1.2 as-number 20

 peer 200.1.1.2 as-number 30

 #

 ipv4-family unicast

  undo synchronization

  peer 100.1.1.2 enable

  peer 200.1.1.2 enable

ospf 1

 default-route-advertise always

 area 0.0.0.0

  network 10.1.1.0 0.0.0.255

R3

bgp 20

 peer 100.1.1.1 as-number 10

 peer 101.1.1.1 as-number 10

 peer 102.1.1.2 as-number 40

 #

 ipv4-family unicast

  undo synchronization

  peer 100.1.1.1 enable

  peer 101.1.1.1 enable

  peer 102.1.1.2 enable

R5

bgp 40

 peer 102.1.1.1 as-number 20

 peer 202.1.1.1 as-number 30

 #

 ipv4-family unicast

  undo synchronization

  network 220.1.1.1 32

  peer 102.1.1.1 enable

  peer 202.1.1.1 enable

按照如上配置,我们在FW1上使用display bgp peer命令查看BGP的邻居建立情况,显示都为Established,说明成功建立邻居关系。

企业出口BGP组网配置_企业出口BGP组网配置_02

使用display bgp routing-table命令查看BGP路由表,能够看到外网220.1.1.1网段的路由。

企业出口BGP组网配置_企业出口BGP组网配置_03

此时,查看IP路由表,你也能看到这条路由

企业出口BGP组网配置_企业出口BGP组网配置_04


然而你在FW1ping  220.1.1.1,却发现无法ping通。大家知道为什么吗?这个问题针对部分初学路由的人来说可能是个困惑,“路由都学习到了,为什么还ping不通” 年轻时的强叔也有过这个疑问。

其实答案很简单:路由是双向的,有去的路由,就要有回的路由。这个时候,你在R5上查看路由表,发现是没有到FW1的路由。

如果你要在FW1ping220.1.1.1,你就需要在FW1上把自己的接口网段通告到BGP路由中,怎么通告,方法很多。

2  可以引入直连路由:[FW1-bgp] import-route direct

2  可以通过network命令发布接口的网段(推荐使用方法):[FW1-bgp] network 100.1.1.1 24

然后你再在R5上查看BGP路由表,会发现如下路由,并且能够ping220.1.1.1

企业出口BGP组网配置_企业出口BGP组网配置_05


但是针对本场景,我们是需要内网用户能够访问外网,也就是模拟环境中的CLIENT1访问R5loopback1地址220.1.1.1,这个时候我们应用怎么配置呢?

企业内部网络是通过OSPF协议学习路由,现在要想让外部网络学习到内部网络的路由,很多初学者,很自然的想到在出口网关FW1上把两种路由互相引入,如:

[FW1-bgp]  import-route ospf

这种方法在实际网络中是非常不可取的,这样会把大量的内网路由引入到Internet中,像本例一样就更不可行,因为内部网络是私网地址。实际的做法是,把内网需要对外发布的路由在BGPnetwork通告出去,本例中是把地址池的地址网段对外通告,如下:

[FW1-bgp]  network 110.1.1.0 255.255.255.0

[FW1-bgp]  network 210.1.1.0 255.255.255.0

此时,我们在R5上通过display bgp routing-table命令查看BGP路由表。

企业出口BGP组网配置_企业出口BGP组网配置_06


发现BGP路由表中,路由根本没有变化,对于这个问题大家考虑下是为什么(1分钟)?

答案是:地址池中是地址的集合,而在BGP中对外通告的是路由,问题就在这,BGP要通过路由,但地址池中是地址,如何让地址变成路由就是关键,具体的做法是把地址池中的地址网段先配置成黑洞路由,如:

企业出口BGP组网配置_企业出口BGP组网配置_07

这时,再在R5上通过display bgp routing-table命令查看BGP路由表。发现地址池网段的路由都已经存在。

企业出口BGP组网配置_企业出口BGP组网配置_08

路由都有,现在可以验证CLIENT1能否访问R5loopback1地址220.1.1.1了,很显然只要其它配置没有问题,肯定是可以访问的。

企业出口BGP组网配置_企业出口BGP组网配置_09


【拍案惊奇】

此案例的惊奇在于实际的配置都是非常的简单,但是还是容易出错,所以案例的写作不是凭空想象,必须是来自于实际且要经过验证。总结本案例,其实就是告诉大家三条内容:

1.         路由是双向的,有去的路由,必须有回的路由。

2.         两种路由协议在同一个设备上出现时,要谨慎互相引入。

3.         NAT地址池中的地址要在路由协议中发布出去,需要提前把地址池地址变成路由,然后才能够发布去。

【强叔问答】

本例中虽然主要是说BGP,但FW1配置的部分有OSPF相关的内容,如下:

ospf 1

 default-route-advertise always

 area 0.0.0.0

  network 10.1.1.0 0.0.0.255

强叔的问题是,为什么要配置default-route-advertise always命令?如果配置default-route-advertise命令(去掉always是否可行,为什么?