`
siwind
  • 浏览: 144756 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

开源路由软件Quagga 源代码 编译/安装/运行/调试(Eclipse环境)

阅读更多
安装:
0) 安装依赖软件包(--enable-vtysh需要)
#sudo apt-get install libreadline6-dev (Ubuntu)
#sudo yum install readline-devel (CentOS)

创建用户(可选)
#sudo groupadd quagga
#sudo useradd quagga -g quagga

1) 下载软件包,解压缩, 编译并安装
	
	#tar xzf quagga-0.99.21.tar.gz
	#cd quagga-0.99.21
	
	#sudo mkdir /var/run/quagga   (运行时的PID文件位置)
	#sudo chmod 777 /var/run/quagga

	#sudo mkdir /etc/quagga       (运行时的配置文件目录)
	#sudo chmod 777 /etc/quagga

	#./configure --enable-vtysh --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga
	(默认运行用户为quagga, 确保运行的localstatedir对用户有读写的权限,建议配置)

	#./configure --localstatedir=/var/run/quagga
	
	#make 
	#sudo make install
	#sudo ldconfig    (加载库文件路径)


注意: 配置文件路径, 默认为/usr/local/etc; 可执行文件路径, 默认为/usr/local/sbin
2) 修改文件/etc/services (某些linux平台可能不需要), 添加如下内容:
zebrasrv 2600/tcp # zebra service
zebra 2601/tcp # zebra vty
ripd 2602/tcp # RIPd vty
ripngd 2603/tcp # RIPngd vty
ospfd 2604/tcp # OSPFd vty
bgpd 2605/tcp # BGPd vty
ospf6d 2606/tcp # OSPF6d vty
ospfapi 2607/tcp # ospfapi
isid 2608/tcp # ISISd vty

3) 使用如下脚本启动/停止quagga: sudo ./run_quagga.sh start|stop|restart
   或者直接启动停止:
   #sudo /../zebra -u 用户 -g 用户组 -d   (确保编译时设置的localstatedir对用户有读写权限即可)
   #sudo ospfd -u 用户 -g 用户组 -d
   ......
  
4) 登录控制台:
#telnet localhost 2601    //zebra
#telnet localhost 2604    //ospf
#sudo /usr/local/bin/vtysh //vtysh
......


5) 问题解决
    i) 如果遇到zebra库文件未找到错误,则到目录 /etc/ld.so.conf.d下面新建个文件,
内容为quagga安装的库路径,例如: /usr/local/lib
然后 sudo ldconfig即可。
ii) 如果不能连接vtysh的话,是因为在/var/run/quagga/*.vty文件对当前执行vtysh命令的用户没有权限。
可以使用: sudo /usr/local/bin/vtysh即可。
也可以: sudo chmod 777 /var/run/quagga/* ,(当zebra都启动之后), 然后运行vtysh即可。
iii) 如果需要设置IP地址,设置路由等,则建议使用root用户身份运行Quagga(zebra/ospfd/bgpd等), 否则修改路由IP等会导致没有权限的错误。

iii)  如果路由不能转发,修改/etc/sysctl.conf文件。 启用IPv4转发功能
        net.ipv4.ip_forward = 1

     iv) 如果发生了源路由验证的路由问题,  修改/etc/sysctl.conf文件。 禁用源路由验证功能
        net.ipv4.conf.default.rp_filter = 1


     v) 如果要启用net-snmp支持,则如下:
            #sudo yum install net-snmp net-snmp-devel net-snmp-perl net-snmp-utils
            # ./configure --enable-vtysh --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga  --enable-snmp=smux

6) 如果要启用quagga的vtysh控制台:
#./configure --enable-vtysh --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga 
#make 
#sudo make install

然后配置/etc/quagga/vtysh.conf文件内容即可。

====================================
在Eclipse中调试运行Quagga (CentOS环境)

0) 首先按照上面要求正确编译运行Quagga.
1) 打开Eclipse, 新建项目 "Makefile Project with existing code", 选择Quagga的解压缩路径
2) 选择 “Run Configuration ...", 新建C/C++可执行程序, 命名为 ”Quagga-0.99.21 zebra“
    在C/C++ Application输入: zebra/.libs/zebra
    在Argument处输入: -f /usr/local/etc/zebra.conf -u 当前用户 -g 当前用户
    在Enviremont处新建变量: LD_LIBRARY_PATH, 取值为: :./lib/.libs:./ospfd/.libs


3) 其它ospfd, bgpd等都可以同样如2)设置。
4) 运行和调试都OK。


====================================
run_quagga.sh

#!/bin/bash

EXEC_DIR=/usr/local/sbin
CONF_DIR=/etc/quagga
LIB_DIR=/usr/local/lib
PID_DIR=/var/run/quagga
DAEMON=(zebra ospfd bgpd)
USER=root
TIME_DELAY=2

#DAEMON=(zebra ospfd ospf6d ripd bgpd) 
#set librery path
export LD_LIBRARY_PATH=$LIB_DIR:$LD_LIBRARY_PATH

#
echo make sure user \"$USER\" has read-write privileges in directory \"$PID_DIR\" !

start()
{
	for d in ${DAEMON[*]}; do
		$EXEC_DIR/$d -f $CONF_DIR/$d.conf -i $PID_DIR/$d.pid -u $USER -g $USER -d
		ps -ef | grep $d
		if [ $d = "zebra" ] ; then
			sleep $TIME_DELAY
		fi
	done
	echo "start (${DAEMON[*]})  finished!"
}

stop()
{
	for d in ${DAEMON[*]}; do
		killall $d
		#rm -f $PID_DIR/$d.pid
	done
	rm -f $PID_DIR/*
	echo "stop (${DAEMON[*]})  finished!"
}

case $1 in
	start)
		start ;;
	stop)
		stop ;;
	restart)
		stop
		start  ;;
	*)
        echo "Usage: $0 start | stop | restart"
esac


1
2
分享到:
评论
1 楼 ngc1275 2012-12-17  
免费编程电子书系列 源代码大全
C++,STL,C++Builder,Delphi,VC,MFC
下载地址
http://www.ctdisk.com/u/1413630

http://page1.yunfile.com/ls/ngc1275/share/
高质量C++C编程指南.pdf
高质量C、C++编程指南.pdf
高质量c++编程(林锐).pdf
代码大全2中文版.pdf
利用套接字开发网络通信程序.pdf
精通.Net核心技术原理与构架.Pdf
美河提供.C.Builder精彩编程实例集锦.pdf
美河提供.C.STL中文版.pdf
美河提供.C.参考大全第四版.pdf
美河提供.C.多范型设计.pdf
美河提供.C.必知必会.pdf
美河提供.C.编程.数据结构与程序设计方法.pdf
美河提供.C.编程思想.第2卷.实用编程技术.pdf
[url=http://www.t00y.com/file/13646734]美河提供.C.编程惯用法.高级程序员常用方法和技巧.pdf

[/url]
美河提供.C.编程艺术.pdf
高质量C++编程指南.pdf
高质量程序设计指南——C++_C语言(第二版).pdf
黑客反汇编揭密 pdf版.pdf
深度探索c++对象模型 不清晰.pdf
深度探索C++对象模型.pdf
美河制作.C..编程规范.pdf
美河制作.现代C.程序设计.pdf
美河制作.程序设计语言实践之路.pdf
美河提供.C.游戏编程.pdf
美河提供.C.精髓.软件工程方法.pdf
美河提供.STL.源码剖析.pdf
美河提供.Visual.C.6编程宝典.pdf
美河提供.Visual.C.NET完全手册.pdf
美河提供.Visual.C.项目开发实例导航.pdf
美河提供.嵌入式系统--体系结构.编程与设计.pdf
美河提供.标准C.编程宝典.pdf
[url=http://www.t00y.com/file/13646925]美河提供数据结构C.语言描述.应用标准摸板库STL第2

相关推荐

    Quagga 开源路由协议栈

    通过阅读和分析源代码,可以增进对路由协议工作原理的理解,也可以参与到项目中,为开源社区贡献自己的力量。下载名为"quagga-1.2.4"的压缩包后,用户可以解压并按照官方文档进行编译和安装,然后开始探索和配置...

    quagga-1.2.3.tar.gz

    Quagga是一个开源的网络路由软件,其源代码在"quagga-1.2.3.tar.gz"这个压缩包中提供。这个版本是Quagga的1.2.3迭代,适合对网络协议有深入研究或者需要在Linux环境下自定义配置路由功能的用户。Quagga支持多种重要...

    基于powerlinux的Quagga编译和安装.docx

    然后,下载 cares 的源代码,编译和安装它。最后,下载 Quagga 的源代码,编译和安装它。 编译 Quagga 需要使用以下命令: autoreconf -fi ./configure --enable-vtysh --enable-user=root --enable-group=root --...

    quagga1.2.4源码,包含ospf,bgp,rip等

    Quagga是一个强大的开源路由软件套件,主要包含OSPF(Open Shortest Path First)、BGP(Border Gateway Protocol)和RIP(Routing Information Protocol)等关键的路由协议实现。这个1.2.4版本的源码包允许用户在...

    zebra 软路由源代码

    Zebra软路由,作为一个开源的网络路由软件,因其灵活、高效和可扩展性而备受青睐。本文将深入探讨Zebra源代码,聚焦其核心功能和设计原理,特别是与OSPF、BGP和RIP等路由协议的集成。 首先,我们要理解Zebra的基本...

    quagga路由软件

    Quagga路由软件是一款开源的网络路由软件,它允许用户在通用计算机上实现路由器的功能。这个软件包提供了对多种主流路由协议的支持,使得个人或组织能够构建和管理复杂的网络环境。下面我们将深入探讨Quagga路由软件...

    quagga安装、配置与更新

    Quagga是一款开源的路由软件套件,它包含了多种路由协议的实现,如OSPF(Open Shortest Path First)、BGP(Border Gateway Protocol)等,适用于Linux和类UNIX系统。在本文中,我们将深入探讨Quagga的安装、配置...

    quagga-0.98.6.tar.gz 源代码

    通过研究和编译这些源代码,开发者和网络管理员可以深入理解路由协议的工作机制,自定义Quagga以适应特定的网络环境,或者对现有的路由软件进行扩展和优化。此外,这对于学术研究和教学也是宝贵的资源,因为它揭示了...

    Go-zebra是GNUZebra和Quagga的一个开源实现

    Go-zebra是一个开源项目,它是对经典的网络路由软件GNU Zebra和Quagga的现代化重写,采用了Go编程语言进行实现。这个决定主要是为了更好地适应现代计算环境,特别是容器化和虚拟化环境的需求。Go语言以其高效、轻量...

    quagga 1.2.0 使用文档

    Quagga在安装过程中需要编译源代码,这一步骤在文档中被分为两个部分:“Build the Software”和“Install the Software”。通过这两个步骤,用户能够将源代码编译成可执行文件并安装到系统中。 Quagga软件包内的...

    89346483quagga-0.98.5.tar

    Quagga是一个开源的路由软件套件,主要实现了BGP(边界网关协议)以及其他一些网络路由协议,如OSPF、RIP等。在你提到的"89346483quagga-0.98.5.tar"压缩包中,包含了Quagga的0.98.5版本的源代码。这个版本可能包含...

    Ubuntu16下quagga进行网络路由仿真.doc

    Quagga 是一个开源的路由软件,可以模拟各种路由协议,例如 OSPF、RIP、BGP 等。Ubuntu 16 是一个流行的 Linux 操作系统。通过在 Ubuntu 16 下安装和配置 Quagga,我们可以进行网络路由仿真实验。 实验目的 本实验...

    quagga-0.99.21.tar.gz

    Quagga是一款强大的开源路由软件,其版本号为0.99.21,以`.tar.gz`格式的压缩包形式提供。这个软件包的主要功能是实现多种路由协议,为网络环境提供高效的路由服务。在深入探讨Quagga之前,我们先理解一下什么是路由...

    quagga-1.2.4

    Quagga是一个开源的路由软件套件,专为网络设备和服务器设计,它实现了多种路由协议,如OSPF(开放最短路径优先)和BGP(边界网关协议)。版本1.2.4是该软件的一个特定发行版,通常会包含错误修复、性能改进和可能的...

    quagga路由协议

    Quagga是一款开源的路由软件,它实现了多种路由协议,包括OSPF(Open Shortest Path First)、BGP(Border Gateway Protocol)以及RIP(Routing Information Protocol)等。在现代网络环境中,路由协议是网络通信的...

    quagga-0.99.19

    Quagga是一个开源的路由软件套件,主要用于实现网络设备上的路由协议,如OSPF(Open Shortest Path First)和BGP(Border Gateway Protocol)。版本0.99.19是该软件的一个特定发行版,它包含了对软件的更新、修复和...

    Quagga配置及使用文档

    - **开源特性**:作为一款开源软件,Quagga提供了完整的源代码,用户可以根据自己的需求进行修改和扩展。 #### 二、系统架构与支持平台 Quagga的系统架构设计简洁高效,主要包括以下几个组件: - **Zebra**:核心...

    router(Quagga-zebra)

    在给定的文件列表中,`quagga_1.2.4.orig.tar.gz`是Quagga源代码的原始版本,用户可以通过解压并编译来安装和使用。`zebra-0.95a.tar.gz`是Zebra的源代码,同样需要编译安装。`zebra-0.95a.tar.gz.zip.rar`可能是...

Global site tag (gtag.js) - Google Analytics