jjzjj

华为路由器BGP简单配置

永远是少年啊 2023-05-27 原文

今天,我将采用华为AR2220路由器,完成简单的BGP配置实验,主要是面向0基础用户,提供基本的BGP配置介绍和讲解。另外,本文提供配置代码,方便有实现需求但是基础较差的同学经过简单改动后拿来即用。
关于BGP的知识如果有不明白的可以查阅浅议BGP(一文看懂BGP),在这里就不过多介绍了。

一、拓扑场景

话不多说,首先来上拓扑图:

题目路由器和链接方式如上所示,我们的目的是要建立图中规定的EBGP和IBGP邻居关系,并且把IS-IS和OSPF分别通告给BGP邻居。

二、配置说明

1、接口IP配置

2、OSPF配置
OSPF配置中主要使用以下命令:

#
ospf 1 
 area 0.0.0.0
#
interface GigabitEthernet0/0/0
 ip address 21.1.12.1 255.255.255.252 
 ospf enable 1 area 0.0.0.0
#

上述代码说明如下:

#
ospf 1 //在全局配置下执行,主要是建立OSPF,并进入OSPF视图,1是进程号
 area 0.0.0.0//在OSPF视图下执行,主要是建立OSPF区域
#
interface GigabitEthernet0/0/0
 ip address 21.1.12.1 255.255.255.252 
 ospf enable 1 area 0.0.0.0//在接口模式下使能OSPF,表明此接口运行OSPF协议,查找OSPF邻居,1是OSPF进程号,0.0.0.0是OSPF区域号
#

在R1、R2上完成OSPF配置后,执行命令:

dis ospf peer brief 

应该出现下列状况:

3、IS-IS配置
is-is配置与OSPF相似,配置中主要使用下列命令:

#
isis 1
 network-entity 49.0000.0000.0000.0003.00
#
interface GigabitEthernet0/0/0
 ip address 21.1.34.2 255.255.255.252 
 isis enable 1
#

上述代码说明如下:

#
isis 1//在全局配置下执行,主要是建立IS-IS,并进入IS-IS视图,1是进程号
 network-entity 49.0000.0000.0000.0003.00//配置ISIS的ID,这种形式是OSI七层模型中网络层的地址样式
#
interface GigabitEthernet0/0/0
 ip address 21.1.34.2 255.255.255.252 
 isis enable 1//在接口模式下使能IS-IS
#

在R3、R4上完成IS-IS配置后,执行命令:

dis isis peer

应该出现下列状况:

4、BGP配置
在完成上述基本配置后,就可以进行BGP的配置了。
BGP配置基本命令如下:
在R1上:

#
bgp 10
 peer 21.1.12.2 as-number 10 
 peer 21.1.13.2 as-number 20
#

在R2上:

#
bgp 10
 peer 21.1.12.1 as-number 10
#

在R3上:

#
bgp 20
 peer 21.1.13.1 as-number 10
#

由于BGP采用TCP链接方式建立链接,因此必须手动指定BGP邻居的IP地址,上述配置过程基本上只有两条类型的命令:

bgp [Integer]

表示进入BGP视图,同时后面的Integer表示本路由器所处的AS号。

peer [IP地址] as-number [Integer]

在BGP视图下执行,指名BGP邻居的IP地址和AS号,这个AS号必须和BGP邻居的上一条命令的AS号一致才能建立BGP邻居。
BGP配置完成后,执行命令:

dis bgp peer

如果看到下列场景,说明BGP运行正常:

三、其他必要配置

上述只是BGP的基本配置,下面介绍三种在BGP中使用的几条额外命令,用于在不同的场景下配置BGP使用。
1、使用环回口配置BGP
由于环回口的稳定性,有时,我们可能会要求使用环回口配置BGP邻居。在本题中,假设R1和R3之间BGP邻居的建立需要使用环回口建立,R1上建立环回口LoopBack0,IP地址是1.1.1.1/32,R3上建立环回口LoopBack0,IP地址是2.2.2.2/32,
则配置命令如下:

 peer 2.2.2.2 as-number 20 
 peer 2.2.2.2 ebgp-max-hop 255 
 peer 2.2.2.2 connect-interface LoopBack0

命令介绍如下:

 peer 2.2.2.2 as-number 20 
 peer 2.2.2.2 ebgp-max-hop 255 //在默认情况下,BGP邻居建立的报文TTL是1,如果不是采用直连口建立BGP邻居,那么BGP邻居建立的报文很有可能无法到达目的IP,因此采用这条命令可以配置将BGP报文中TTL改为255
 peer 2.2.2.2 connect-interface LoopBack0//表示用本地环回口与对方建立BGP邻居

注意:由于BGP建立的基础是能够完成TCP建立过程,换句话说,BGP peer之间必须能够互相联通。但是在用环回口建立BGP后,可能出现BGP邻居之间不知道对方环回口的路由,此时,我们需要静态指定路由。
2、BGP路由引入
在上文中,尽管我们已经完成了BGP邻居的建立,但是此时BGP还没有引入路由,在BGP中引入路由需要以下两条命令:
在R1上:

import-route ospf 1

在R3上:

import-route isis 1

上述两条命令,用于将其他路由发布到BGP中,通过这两条命令,BGP路由就可以传递给对方了。
如果您已经完成上述配置,执行命令:

dis bgp routing-table

如果出现下列现象:

则说明BGP路由引入已经成功,如果显示内容为空,则说明配置存在问题,需要检查以前的配置。
3、更改IBGP下一跳
在完成上述所有配置后,BGP基本上就已经完成配置了,但是还有一点细节,就是R2上的BGP路由问题。
从拓扑图中可以看出,R1和R2建立了IBGP邻居关系,R1和R3建立了EBGP邻居关系。按照BGP协议,由EBGP传递来的路由会传递给IBGP,因此,在R2上会收到R3的isis路由信息。然而此时,如果我们在R2上查看路由表,缺发现没有R3的路由信息,这是为什么呢?
在R2上查看路由表信息:

在R2上查看BGP路由信息:

原来,问题出现在BGP路由传递上,可以看到,R2上的BGP路由前面没有尖括号,这表示该路由信息不可用。这是因为R2收到R1传来的BGP路由信息的下一跳并没有改动,还是2.2.2.2,然而R2并不知道2.2.2.2怎么走,因此,R2还是不能够转发到AS20的数据包。
要想解决上述问题,必须在R1向R2通告路由的时候,将下一条改为自己的IP地址,要想完成这一目标,必须执行下一条命令:

peer 21.1.12.2 next-hop-local

这样,上述问题就解决了。

四、配置模板

为了方便部分小伙伴更方便的配置,先将R1、R2、R3配置(已经删除其他无关配置)粘贴如下:
R1:

#
interface GigabitEthernet0/0/0
 ip address 21.1.12.1 255.255.255.252 
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 21.1.13.1 255.255.255.252 
#
interface LoopBack0
 ip address 1.1.1.1 255.255.255.255 
#
bgp 10
 peer 2.2.2.2 as-number 20 
 peer 2.2.2.2 ebgp-max-hop 255 
 peer 2.2.2.2 connect-interface LoopBack0
 peer 21.1.12.2 as-number 10 
 #
 ipv4-family unicast
  undo synchronization
  import-route ospf 1
  peer 2.2.2.2 enable
  peer 21.1.12.2 enable
  peer 21.1.12.2 next-hop-local 
#
ospf 1 
 area 0.0.0.0 
#
ip route-static 2.2.2.2 255.255.255.255 21.1.13.2

R2:

#
interface GigabitEthernet0/0/0
 ip address 21.1.12.2 255.255.255.252 
 ospf enable 1 area 0.0.0.0
#
bgp 10
 peer 21.1.12.1 as-number 10 
 #
 ipv4-family unicast
  undo synchronization
  peer 21.1.12.1 enable
#
ospf 1 
 area 0.0.0.0 

R3:

#
isis 1
 network-entity 49.0000.0000.0000.0003.00
#
interface GigabitEthernet0/0/0
 ip address 21.1.13.2 255.255.255.252 
#
interface GigabitEthernet0/0/1
 ip address 21.1.34.1 255.255.255.252 
 isis enable 1
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 
#
bgp 20
 peer 1.1.1.1 as-number 10 
 peer 1.1.1.1 ebgp-max-hop 255 
 peer 1.1.1.1 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  import-route isis 1
  peer 1.1.1.1 enable
#
ip route-static 1.1.1.1 255.255.255.255 21.1.13.1
#

原创不易,转载请说明出处,原文链接:
https://blog.csdn.net/weixin_40228200/article/details/118254189

有关华为路由器BGP简单配置的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  5. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  6. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  7. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  8. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  9. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  10. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

随机推荐