今天,我将采用华为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
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上找到一个类似的问题
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
有没有办法在这个简单的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
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的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
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o