Quagga 路由软件学习(by quqi99)

作者:张华  发表于:2013-07-07
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

http://blog.csdn.net/quqi99 )

             Quagga是一个开源的基于Zebra实现了RIP, OSPF, BGP的动态路由软件。它提供的CLI命令和Cisco IOS类似。
1 安装再下载源码,解压后执行下列命令:
sudo yum install readline-devel #打开vty功能需要readline包
./configure --enable-vtysh  --enable-user=root --enable-group=root –enable-vty-group=root  --sysconfdir=/etc/quagga –libdir=/lib
make && sudo make install如果不是用root用户,如使用quagga用户,则还需要:
sudo useradd -r -d /usr/local/sbin -s /sbin/nologin quagga
sudo mkdir /var/run/quagga
sudo chown quagga /var/run/quagga
sudo chgrp quagga /var/run/quagga它有下列进程,根据需要启动:
zebra: 路由接口声明和静态路由
bgpd: 支持BGP
ospfd: 支持OSPF
ospf6d: 支持IPv6 OSPF
ripd: 支持RIP v2
ripngd: 支持RIP IPv6
2 配置并启动Zemba软路由创建配置文件: sudo mv /etc/guagga/zebra.conf.sample /etc/guagga/zebra.conf在/etc/hosts文件中添加一条记录:192.168.99.100 Router运行命令sudo zemba -d启动zemba服务.上面sudo zemba -d命令只是将我们的“路由器”(软路由)运行起来了(也就是转发那块),但是它还无法正常工作,现在还要给它配置路由表。路由表可以手工配置,也可以运行动态路由协议,vk rip, ospf实现自动配置。我们先看看如何手工配置路由,即运行“telnet localhost 2601”命令进行类似ciso IOS的配置路由配置界面。
Router> en#进入特权模式
Password:
Router# config tRouter(config)# access-list  Add an access list entrybanner       Set banner stringdebug        Debugging functions (see also 'undebug')enable       Modify enable password parametersend          End current mode and change to enable mode.exit         Exit current mode and down to previous modehelp         Description of the interactive help systemhostname     Set system's network nameinterface    Select an interface to configureip           IP informationipv6         IPv6 informationline         Configure a terminal linelist         Print command listlog          Logging controlno           Negate a command or set its defaultspassword     Assign the terminal connection passwordquit         Exit current mode and down to previous moderoute-map    Create route-map or enter route-map command moderouter-id    Manually set the router-idservice      Set up miscellaneous serviceshow         Show running system informationtable        Configure target kernel routing tablewrite        Write running configuration to memory, network, or terminal#给接口配置IP地址:
Router(config)# interface eth0
Router(config-if)# ip address 192.168.2.1/24配置一个路由器的常用方法:
Router(config)# hostname R1
R1(config)# int em1
R1(config-if)# ip address 172.18.186.107/23
R1(config-if)# no shutdown
R1(config-if)# exit3 开启RIP/OSPF内部动态路由协议
sudo mv /etc/guagga/ripd.conf.sample /etc/guagga/ripd.conf
sudo ripd -d
例子:三台虚机,一台做路由,两台做客户端
路由器所在的Linux分别有两个网卡,eth0:192.168.1.1和eth1:192.168.10.1。
客户端A 所在网段为192.168.1.0/24,IP为192.168.1.2。
客户端B所在网段为192.168.10.0/24,IP为192.168.10.2。
在路由器的虚机上安装guagga,并开启zebma及rip两个协议,这时候是可以从192.168.1.2 ping 通 192.168.10.2的。查看RIP路由表:
ripd> router ripOSPF也是一个内部动态路由协议,它是基于状态的,一个路由器上知道全自治区域的所有路由信息。而RIP是基于最短路径的,只能有一个最短的路由。
sudo mv /etc/guagga/ospfd.conf.sample /etc/guagga/ospfd.conf
sudo ospfd -d
ospf的手工配置界面是:telnet 0 2604指定在172.18.186.0/23和192.168.3.0/24两个网络之间使用rip协议
ripd> en
ripd# conf t
ripd(config)# router rip
ripd(config-router)# network 172.18.186.0/23
ripd(config-router)# network 192.168.3.0/24
ripd(config-router)# end
ripd#如果OSPF,则应该指定哪些网络位于同一个区域,因为它是面向状态的内部路由协议:
network 172.18.186.0/23 area 0
network 192.168.3.0/24 area 03 开启BGP外部动态路由协议sudo mv /etc/guagga/bgpd.conf.sample /etc/guagga/bgpd.conf
sudo bgpd -d
手工配置界面是:telnet 0 2605
例子:下面只显示R1的Zebra配置过程,R2请自行配置:
Router> en
Password:
R1# conf t
R1(config)# hostname r1
r1(config)# int em1
r1(config-if)# ip address 172.18.186.100/23下面只显示R1的BGP配置过程,R2请自行配置:
[hua@laptop nova]$ telnet 0 2605
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.Hello, this is Quagga (version 0.99.22).
Copyright 1996-2005 Kunihiro Ishiguro, et al.User Access VerificationPassword:
bgpd> en
bgpd# conf t
bgpd(config)# hostname r1_bgpd
#指定自治系统号7675(自治系统号是一个16bit的数字,从1-65535,其中64512-65535保留为私有)
r1_bgpd(config)# router bgp 7675
r1_bgpd(config-router)# network 172.18.186.0/23
r1_bgpd(config-router)# neighbor 172.18.186.101 remote-as 7676
r1_bgpd(config-router)# exit
r1_bgpd(config)# exit
r1_bgpd# sh ip bgp neighbors
r1_bgpd# show ip bgp
BGP table version is 0, local router ID is 0.0.0.0
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incompleteNetwork          Next Hop            Metric LocPrf Weight Path
*> 172.18.186.0/23  0.0.0.0                  0         32768 iTotal number of prefixes 1
r1_bgpd# Total number of prefixes 1开启debug功能,将日记保存到/tmp/bgpd.log文件中。
r1_bgpd# debug bgp events
BGP events debugging is on
r1_bgpd# debug bgp keepalives
BGP keepalives debugging is on
r1_bgpd# debug bgp updates
BGP updates debugging is on
r1_bgpd# conf tr1_bgpd(config)# log file /tmp/bgpd.log
r1_bgpd(config)# exit

5 路由的获取Linux下的路由可以通过netlink包编程获取
Quagga不直接使用底层的路由表或者硬件转发表,它自己维护的路由表是RIB表,包含除主机路由以外的所有路由(因为主机路由是通过ARP学到的,而ARP是OS底层实现的)。RIB表包括直连路由,静态路由,动态路由。而OS维护的表是转发表,即FIB表,Quagga负责维护RIB与FIB间的同步,也负责各种路由协议的路由表与RIB间的同步;Quagga提供了几种方式与内核通信,类UNIX系统下的常见方式ioctl, sysctl, proc, netlink都有支持。RIB表是radix树结构,而FIB表是hash table结构。radix是一个二叉树,如下图所示:该radix二叉树用结构休route_table表示,
根节点用结构体route_node表示,包括四个成员,表示前缀的prefix结构体,左孩子、右孩子和表示下一路的info指针,info可以是下一跳的接口,或者IP,也可以是黑洞,分别对应着三种路由目标的类型:IFNAME, GATEWAY, BLACKHOLE。

一点体会:设想两个异地的openstack云通过quagga进行动态路由学习互访的话:1, 首先需要ISP给数据中心分配一个BGP号(向CNNIC申请自治域号)2,数据中心内部用OSPF,数据中心(内网ip)和ISP(外网ip)之间走BGP协议, 所有浮动ip地址需重分发到BGP路由里【实验9.11.2】 配置BGP和NAT一起使用【IEEEnjoy.L.ZH】 http://blog.csdn.net/ieeenjoy/article/details/15582483,也需按如下方法在路由器中配置浮动ip池在路由器上配置一个DNAT地址,这样通过在公网上访问61.135.99.3可以访问到内网地址192.168.10.2ip nat inside source static 192.168.10.2 61.135.99.3或许配置一个浮动ip池:MYNAT 66.122.33.98 66.122.33.126 netmask 255.255.255.224access-list 10 per 172.16.0.0 0.0.255.255ip nat inside source list 10 pool MYNAT overload4, 更具体地详见下面列出的参考资料

  6 Reference

1, Quagga使用及实验说明:http://wenku.baidu.com/view/59dc823d0912a216147929b9.html 2, EBGP和IBGP的一篇好文章, IBGP路由的水平分割 http://shenrq.blog.51cto.com/25801/1542853, 实验9.11.2 配置BGP和NAT一起使用, http://blog.csdn.net/ieeenjoy/article/details/1558248 4, 配置静态地址转换------发布公司内网网站到互联网上 http://blog.csdn.net/zhengzizhi/article/details/170134735, Setting Up Network With ISP WAN and Public IP Block subnets running NAT, http://www.dslreports.com/faq/159186, Cisco 2811 PPPOE+NAT 配置实例, http://iflaugh.blog.51cto.com/846701/1725567, Neutron/DynamicRouting/TestingDynamicRouting https://wiki.openstack.org/wiki/Neutron/DynamicRouting/TestingDynamicRouting

Quagga 路由软件学习(by quqi99)相关推荐

  1. 安装Quagga路由软件

    为什么80%的码农都做不了架构师?>>>    #!/bin/bash 要先下载好软件:quagga-0.99.19.tar.gzcp /etc/yum.conf /etc/yum. ...

  2. quagga 简介 开源路由软件

    quagga Quagga是一个开源的基于Zebra实现了RIP, OSPF, BGP的动态路由软件.它提供的CLI命令和Cisco IOS类似 ,可以使用 quagga 将linux 机器打造成一台 ...

  3. Quagga:开源的基于Zebra实现了RIP, OSPF, BGP的动态路由软件

    目录 quagga简介 特性 安装 quagga简介 https://www.jianshu.com/p/300acac7801f Quagga是一个开源的基于Zebra实现了RIP, OSPF, B ...

  4. linux路由软件quagga安装

    介绍: quagga是继承于zebra的一款开源路由软件,支持多种协议: OSPF.RIP.OSPF6.BGP等. 软件介绍:http://www.nongnu.org/quagga/ 下载: 下载源 ...

  5. 开源路由软件zebra介绍和和在Linux环境下的安装

    感谢:http://www.cnblogs.com/iTsihang/archive/2012/11/22/2783249.html ================================= ...

  6. 海蜘蛛路由(中文软路由软件) v3.2.7免费版(Free)

    海蜘蛛路由(中文软路由软件) v3.2.7免费版(Free) http://www.52z.com/soft/14404.Html#Temp_address 海蜘蛛hsrouter路由免费版最终稳定版 ...

  7. 路由软件安装使用(一)(bird)

    1 bird简介 bird实际是BIRD Internet Routing Daemon'的简称,它是在网络里跑着动态路由协议(支持IPV4 IPV6)的一种程序.相比较于其他的一些路由软件而言(ro ...

  8. 工具类软件操作手册_全套广联达软件学习资料合集:教程+实例讲解+操作手册,一文搞定...

    要学习并掌握好算量软件,不仅仅需要软件知识,还需要各种造价相关知识,只有精通软件及造价知识,才能大大的提高算量的速度及准确度. 一个算量的高手掌握的不单是软件操作技术,还要掌握的是造价的基础知识,你要 ...

  9. project项目管理案例_福清公司开展Project项目管理软件学习培训活动

    Project讲解 日前,福清公司组织开展了Project项目管理软件学习培训活动.生产指挥中心.工程科技部等相关人员参加了此次培训. 实际操作练习 整体培训 培训内容首先就Project软件的相关功 ...

最新文章

  1. Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading
  2. 程序员的量化交易之路(1)----规划开篇
  3. 【项目管理】人力资源管理
  4. android log丢失(二)使用and4.4log kernel机制
  5. 这个Python库助你发现网络图的社区结构
  6. EAST: An Efficient and Accurate Scene Text Detector(自然场景下文本识别)训练,测试
  7. KillBee框架的使用(上)
  8. CTO@全体成员,未经允许和评审不让用反射,Java反射到底慢在哪?
  9. 关于信号处理中的复信号
  10. 一周成python大神_2个月把你变成selenium+Python大神,上海悠悠带你飞!
  11. 四种方法检测网站是否被微信、QQ等拦截屏蔽
  12. union和union all哪个效率高
  13. 打印机只能扫描图片,不能扫描成PDF解决办法
  14. ubuntu qq 以及 词典
  15. linux登录远程mysql_实现MySQL远程登陆在linux下
  16. O2O为什么烧钱 国内有哪些平台是O2O模式?
  17. 管家婆服务器端口修改,更改sql数据库端口
  18. 蓝桥杯嵌入式第十届省赛真题
  19. 移动电源当中的自动检测负载方式讲解
  20. “双碳”目标下资源环境中的可计算一般均衡(CGE)模型实践技术

热门文章

  1. GBase8s中虚拟处理器及其作用
  2. MySQL新密码机制介绍caching_sha2_password
  3. 实用性文章:精密电阻的特性与应用
  4. Tampermonkey油猴脚本的简单实现教程
  5. 盘点Cloudera发展史:大数据的弄潮儿
  6. 2022年,教育培训行业的五大营销趋势
  7. 整车OTA布局新一轮「市场红利」
  8. shields 徽标_神经网络生成超级英雄徽标
  9. java httpclient 模拟登录
  10. UML Thinking in UML大象 参与者