我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在CentOS中怎么制作BGP路由器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在CentOS中怎么制作BGP路由器

这篇文章主要讲解了“在CentOS中怎么制作BGP路由器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在CentOS中怎么制作BGP路由器”吧!

Quagga是一个开源路由软件套件。在这个教程中,我将会重点讲讲如何把一个Linux系统变成一个BGP路由器,还是使用Quagga,演示如何建立BGP与其它BGP路由器对等。

在我们进入细节之前,一些BGP的背景知识还是必要的。边界网关协议(即BGP)是互联网的域间路由协议的实际标准。在BGP术语中,全球互联网是由成千上万相关联的自治系统(AS)组成,其中每一个AS代表每一个特定运营商提供的一个网络管理域(据说,美国前总统乔治.布什都有自己的 AS 编号)。
为了使其网络在全球范围内路由可达,每一个AS需要知道如何在英特网中到达其它的AS。这时候就需要BGP出来扮演这个角色了。BGP是一个AS去与相邻的AS交换路由信息的语言。这些路由信息通常被称为BGP线路或者BGP前缀。包括AS号(ASN;全球唯一号码)以及相关的IP地址块。一旦所有的BGP线路被当地的BGP路由表学习和记录,每一个AS将会知道如何到达互联网的任何公网IP。

在不同域(AS)之间路由的能力是BGP被称为外部网关协议(EGP)或者域间协议的主要原因。就如一些路由协议,例如OSPF、IS-IS、RIP和EIGRP都是内部网关协议(IGPs)或者域内路由协议,用于处理一个域内的路由.
测试方案

在这个教程中,让我们来使用以下拓扑。
在CentOS中怎么制作BGP路由器

我们假设运营商A想要建立一个BGP来与运营商B对等交换路由。它们的AS号和IP地址空间的细节如下所示:

    运营商 A: ASN (100), IP地址空间 (100.100.0.0/22), 分配给BGP路由器eth2网卡的IP地址(100.100.1.1)

    运营商 B: ASN (200), IP地址空间 (200.200.0.0/22), 分配给BGP路由器eth2网卡的IP地址(200.200.1.1)

路由器A和路由器B使用100.100.0.0/30子网来连接到对方。从理论上来说,任何子网从运营商那里都是可达的、可互连的。在真实场景中,建议使用掩码为30位的公网IP地址空间来实现运营商A和运营商B之间的连通。
在 CentOS中安装Quagga

如果Quagga还没安装好,我们可以使用yum来安装Quagga。

   

代码如下:

# yum install quagga

如果你正在使用的是CentOS7系统,你需要应用一下策略来设置SELinux。否则,SElinux将会阻止Zebra守护进程写入它的配置目录。如果你正在使用的是CentOS6,你可以跳过这一步。

   

代码如下:

# setsebool -P zebra_write_config 1

Quagga软件套件包含几个守护进程,这些进程可以协同工作。关于BGP路由,我们将把重点放在建立以下2个守护进程。

    Zebra:一个核心守护进程用于内核接口和静态路由.
    BGPd:一个BGP守护进程.

配置日志记录

在Quagga被安装后,下一步就是配置Zebra来管理BGP路由器的网络接口。我们通过创建一个Zebra配置文件和启用日志记录来开始第一步。

   

代码如下:

# cp /usr/share/doc/quagga-XXXXX/zebra.conf.sample /etc/quagga/zebra.conf

在CentOS6系统中:

  

代码如下:

# service zebra start
   # chkconfig zebra on

在CentOS7系统中:

   

代码如下:

# systemctl start zebra
   # systemctl enable zebra

Quagga提供了一个叫做vtysh特有的命令行工具,你可以输入与路由器厂商(例如Cisco和Juniper)兼容和支持的命令。我们将使用vtysh shell来配置BGP路由在教程的其余部分。

启动vtysh shell 命令,输入:

   

代码如下:

# vtysh

提示将被改成该主机名,这表明你是在vtysh shell中。

   

代码如下:

Router-A#

现在我们将使用以下命令来为Zebra配置日志文件:

   

代码如下:

Router-A# configure terminal
   Router-A(config)# log file /var/log/quagga/quagga.log
   Router-A(config)# exit

永久保存Zebra配置:

   

代码如下:

Router-A# write

在路由器B操作同样的步骤。
配置对等的IP地址

下一步,我们将在可用的接口上配置对等的IP地址。

   

代码如下:

Router-A# show interface   #显示接口信息</p><p>    Interface eth0 is up, line protocol detection is disabled
   . . . . .
   Interface eth2 is up, line protocol detection is disabled
   . . . . .

配置eth0接口的参数:

   

代码如下:

site-A-RTR# configure terminal
   site-A-RTR(config)# interface eth0
   site-A-RTR(config-if)# ip address 100.100.0.1/30
   site-A-RTR(config-if)# description "to Router-B"
   site-A-RTR(config-if)# no shutdown
   site-A-RTR(config-if)# exit

继续配置eth2接口的参数:

   

代码如下:

site-A-RTR(config)# interface eth2
   site-A-RTR(config-if)# ip address 100.100.1.1/24
   site-A-RTR(config-if)# description "test ip from provider A network"
   site-A-RTR(config-if)# no shutdown
   site-A-RTR(config-if)# exit

现在确认配置:

   

代码如下:

Router-A# show interface </p><p>    Interface eth0 is up, line protocol detection is disabled
     Description: "to Router-B"
     inet 100.100.0.1/30 broadcast 100.100.0.3
   Interface eth2 is up, line protocol detection is disabled
     Description: "test ip from provider A network"
     inet 100.100.1.1/24 broadcast 100.100.1.255</p><p>    Router-A# show interface description   #显示接口描述</p><p>    Interface       Status  Protocol  Description
   eth0            up      unknown   "to Router-B"
   eth2            up      unknown   "test ip from provider A network"

如果一切看起来正常,别忘记保存配置。

   

代码如下:

Router-A# write

同样地,在路由器B重复一次配置。

在我们继续下一步之前,确认下彼此的IP是可以ping通的。

   

代码如下:

Router-A# ping 100.100.0.2 </p><p>    PING 100.100.0.2 (100.100.0.2) 56(84) bytes of data.
   64 bytes from 100.100.0.2: icmp_seq=1 ttl=64 time=0.616 ms

下一步,我们将继续配置BGP对等和前缀设置。
配置BGP对等

Quagga守护进程负责BGP的服务叫bgpd。首先我们来准备它的配置文件。

   

代码如下:

# cp /usr/share/doc/quagga-XXXXXXX/bgpd.conf.sample /etc/quagga/bgpd.conf

在CentOS6系统中:

   

代码如下:

# service bgpd start
   # chkconfig bgpd on

在CentOS7中:

   

代码如下:

# systemctl start bgpd
   # systemctl enable bgpd

现在,让我们来进入Quagga 的shell。

   

代码如下:

# vtysh

第一步,我们要确认当前没有已经配置的BGP会话。在一些版本,我们可能会发现一个AS号为7675的BGP会话。由于我们不需要这个会话,所以把它移除。

   

代码如下:

Router-A# show running-config </p><p>    ... ... ...
   router bgp 7675
    bgp router-id 200.200.1.1
   ... ... ...

我们将移除一些预先配置好的BGP会话,并建立我们所需的会话取而代之。

   

代码如下:

Router-A# configure terminal
   Router-A(config)# no router bgp 7675
   Router-A(config)# router bgp 100
   Router-A(config)# no auto-summary
   Router-A(config)# no synchronizaiton
   Router-A(config-router)# neighbor 100.100.0.2 remote-as 200
   Router-A(config-router)# neighbor 100.100.0.2 description "provider B"
   Router-A(config-router)# exit
   Router-A(config)# exit
   Router-A# write

路由器B将用同样的方式来进行配置,以下配置提供作为参考。

   

代码如下:

Router-B# configure terminal
   Router-B(config)# no router bgp 7675
   Router-B(config)# router bgp 200
   Router-B(config)# no auto-summary
   Router-B(config)# no synchronizaiton
   Router-B(config-router)# neighbor 100.100.0.1 remote-as 100
   Router-B(config-router)# neighbor 100.100.0.1 description "provider A"
   Router-B(config-router)# exit
   Router-B(config)# exit
   Router-B# write

当相关的路由器都被配置好,两台路由器之间的对等将被建立。现在让我们通过运行下面的命令来确认:

   

代码如下:

Router-A# show ip bgp summary


在CentOS中怎么制作BGP路由器

    从输出中,我们可以看到"State/PfxRcd"部分。如果对等关闭,输出将会显示"Idle"或者"Active'。请记住,单词'Active'这个词在路由器中总是不好的意思。它意味着路由器正在积极地寻找邻居、前缀或者路由。当对等是up状态,"State/PfxRcd"下的输出状态将会从特殊邻居接收到前缀号。

在这个例子的输出中,BGP对等只是在AS100和AS200之间呈up状态。因此没有前缀被更改,所以最右边列的数值是0。
配置前缀通告

正如一开始提到,AS 100将以100.100.0.0/22作为通告,在我们的例子中AS 200将同样以200.200.0.0/22作为通告。这些前缀需要被添加到BGP配置如下。

在路由器-A中:

   

代码如下:

Router-A# configure terminal
   Router-A(config)# router bgp 100
   Router-A(config)# network 100.100.0.0/22
   Router-A(config)# exit
   Router-A# write

在路由器-B中:

   

代码如下:

Router-B# configure terminal
   Router-B(config)# router bgp 200
   Router-B(config)# network 200.200.0.0/22
   Router-B(config)# exit
   Router-B# write

在这一点上,两个路由器会根据需要开始通告前缀。
测试前缀通告

首先,让我们来确认前缀的数量是否被改变了。

   

代码如下:

Router-A# show ip bgp summary


在CentOS中怎么制作BGP路由器

    为了查看所接收的更多前缀细节,我们可以使用以下命令,这个命令用于显示邻居100.100.0.2所接收到的前缀总数。

    

代码如下:

Router-A# show ip bgp neighbors 100.100.0.2 advertised-routes


在CentOS中怎么制作BGP路由器

     查看哪一个前缀是我们从邻居接收到的:

   

代码如下:

Router-A# show ip bgp neighbors 100.100.0.2 routes


在CentOS中怎么制作BGP路由器

    我们也可以查看所有的BGP路由器:

   

代码如下:

Router-A# show ip bgp


在CentOS中怎么制作BGP路由器

    以上的命令都可以被用于检查哪个路由器通过BGP在路由器表中被学习到。

   

代码如下:

Router-A# show ip route

    代码: K - 内核路由, C - 已链接 , S - 静态 , R - 路由信息协议 , O - 开放式最短路径优先协议,
    
           I - 中间系统到中间系统的路由选择协议, B - 边界网关协议, > - 选择路由, * - FIB 路由
    
   

代码如下:

C>* 100.100.0.0/30 is directly connected, eth0
   C>* 100.100.1.0/24 is directly connected, eth2
   B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:06:45</p><p>    Router-A# show ip route bgp </p><p>    B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:08:13

BGP学习到的路由也将会在Linux路由表中出现。

  

代码如下:

[root@Router-A~]# ip route </p><p>    100.100.0.0/30 dev eth0  proto kernel  scope link  class="lazy" data-src 100.100.0.1
   100.100.1.0/24 dev eth2  proto kernel  scope link  class="lazy" data-src 100.100.1.1
   200.200.0.0/22 via 100.100.0.2 dev eth0  proto zebra

最后,我们将使用ping命令来测试连通。结果将成功ping通。

   

代码如下:

[root@Router-A~]# ping 200.200.1.1 -c 2

总而言之,本教程将重点放在如何在CentOS系统中运行一个基本的BGP路由器。这个教程让你开始学习BGP的配置,一些更高级的设置例如设置过滤器、BGP属性调整、本地优先级和预先路径准备等,我将会在后续的教程中覆盖这些主题。

感谢各位的阅读,以上就是“在CentOS中怎么制作BGP路由器”的内容了,经过本文的学习后,相信大家对在CentOS中怎么制作BGP路由器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在CentOS中怎么制作BGP路由器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在CentOS中怎么制作BGP路由器

这篇文章主要讲解了“在CentOS中怎么制作BGP路由器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在CentOS中怎么制作BGP路由器”吧!Quagga是一个开源路由软件套件。在这个教程
2023-06-10

怎么在CentOS中制作BGP路由

怎么在CentOS中制作BGP路由?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Quagga是一个开源路由软件套件。在这个教程中,我将会重点讲讲如何把一个Lin
2023-06-10

CentOS服务器中怎么添加永久静态路由?

这篇文章将为大家详细讲解有关CentOS服务器中怎么添加永久静态路由?,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、Linux添加永久静态路由 方法一:修改 rc.local 配置文件
2023-06-10

CentOS下怎么使用Quagga变成OSPF路由器

今天小编给大家分享一下CentOS下怎么使用Quagga变成OSPF路由器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Qu
2023-06-27

win10路由器怎么限制网速

这篇文章主要介绍了win10路由器怎么限制网速的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win10路由器怎么限制网速文章都会有所收获,下面我们一起来看看吧。1.进入路由器设置界面,在路由器功能界面中找到路由
2023-06-28

CentOS中怎么制作php的rpm包

本文小编为大家详细介绍“CentOS中怎么制作php的rpm包”,内容详细,步骤清晰,细节处理妥当,希望这篇“CentOS中怎么制作php的rpm包”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。安装rpm-bui
2023-06-27

Android中app自由模版怎么制作

今天小编给大家分享一下Android中app自由模版怎么制作的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。通常模版都是预定义
2023-06-26

怎么在php中利用Laravel定义路由

本篇文章为大家展示了怎么在php中利用Laravel定义路由,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主
2023-06-14

vue在路由中怎么验证token是否存在

今天小编给大家分享一下vue在路由中怎么验证token是否存在的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 在rout
2023-07-04

云服务器路由器怎么设置网速限制

以下是一个简单的路由器限速设置的示例:打开控制面板:网络和共享中心:进入网络和共享中心后,右键点击“网络”,再点击“更改适配器设置”。更改高级设置:在网络连接下方的“IP带宽限制”旁边,勾选“开启IP带宽限制”(IP带宽最大值从200KB/s到300KB/s不等),并设置带宽上限。设置无线连接:勾选“启用本地连接检测功能”,然后点击“更改高级设置”,在&ldquo
2023-10-26

无线中继路由器怎么设置

今天小编给大家分享一下无线中继路由器怎么设置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。无线中继路由器置方法:1、因为无线
2023-07-02

云服务器路由器怎么设置网速限制的

首先,在开始菜单中的搜索框中输入“云服务器”,然后点击搜索结果中右侧的“添加”按钮;点击添加按钮以后,就会弹出一个创建账户的对话框,输入一个需要限制的云服务器账号和密码;点击“创建账户”按钮后,出现一个新的界面,可以选择是否限制登录,如需限制登录,可以勾选“仅限本地登录”,如需限制登录范围,可以勾选“全球”,如需限制登录权限,可以勾选“仅限数据库访问”,如需限制用
2023-10-26

怎么在Windows11上查找路由器IP地址

这篇“怎么在Windows11上查找路由器IP地址”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在Windows11上查
2023-04-14

CentOS中怎么利用FPM制作一个RPM包

本篇文章给大家分享的是有关CentOS中怎么利用FPM制作一个RPM包,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  一、我们来先安装FPM:  # FPM是Ruby模块  
2023-06-10

怎么在php中使用kohana框架设置路由

本篇文章为大家展示了怎么在php中使用kohana框架设置路由,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypert
2023-06-14

怎么在php中利用Symfony框架设置路由

这期内容当中小编将会给大家带来有关怎么在php中利用Symfony框架设置路由,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:H
2023-06-14

思科模拟器中路由器怎么配置

本文小编为大家详细介绍“思科模拟器中路由器怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“思科模拟器中路由器怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。思科模拟器路由器配置教程:1、打开思科模拟
2023-07-02

网络设备:无线路由器怎么限制上网速度 无线路由器限制上网速度方法【介绍】

编程学习网:无线路由器是用于用户上网、带有无线覆盖功能的路由器。无线路由器可以看作一个转发器,将家中墙上接出的宽带网络信号通过天线转发给附近的无线网络设备(笔记本电脑、支持WiFi的手机、平板以及所有带有WIFI功能的设备)。
网络设备:无线路由器怎么限制上网速度 无线路由器限制上网速度方法【介绍】
2024-04-23

云服务器路由器怎么设置网速限制功能

要设置云服务器路由器限制网速功能,可以按照以下步骤进行操作:开启网速限制功能:可以在路由器底部菜单中看到“网络参数”设置项,点击进入。设置流量限制:在流量限制选项卡下方,勾选“启用流量限制”复选框,然后点击“确定”按钮。选择服务器模式:选择“Web服务器”或“客户端服务器”两种模式,然后点击“确定”按钮。启用WiFi设置:在Web服务器或客户端服务器模式下,选择&
2023-10-27

云服务器路由器怎么设置上网时间限制

云服务器路由器通常提供网络时间功能,允许您限制或禁用特定设备的上网时间。要设置上网时间限制,可以按照以下步骤操作:打开浏览器,在地址栏中输入“192.168.1.1”(不同地区可能会有所不同)或者“192.168.0.0”,进入“控制面板”;点击“时区”选项卡,进入“时区设置”;进入“时区设置”后,选择“美国”或“加拿大/澳大利
2023-10-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录