2015年1月

提问:我在安装一个设备驱动前先要安装内核头文件。怎样安装合适的内核头文件?

当你在编译一个设备驱动模块时,你需要在系统中安装内核头文件。内核头文件同样在你编译与内核直接链接的用户空间程序时需要。当你在这些情况下安装内核头文件时,你必须确保内核头文件精确地与你当前内核版本匹配(比如:3.13.0-24-generic)。

如果你的内核是发行版自带的内核版本,或者使用默认的包管理器的基础仓库升级的(比如:apt-ger、aptitude或者yum),你也可以使用包管理器来安装内核头文件。另一方面,如果下载的是kernel源码并且手动编译的,你可以使用make命令来安装匹配的内核头文件。

现在我们假设你的内核是发行版自带的,让我们看下该如何安装匹配的头文件。

在 Debian、Ubuntu 或者 Linux Mint 上安装内核头文件

假设你没有手动编译内核,你可以使用apt-get命令来安装匹配的内核头文件。

首先,使用dpkg-query命令检查是否有可用的内核头文件。

$ dpkg-query -s linux-headers-$(uname -r) 

dpkg-query: package 'linux-headers-3.11.0-26-generic' is not installed and no information is available

接着使用下面的命令安装匹配的内核头文件。

$ sudo apt-get install linux-headers-$(uname -r) 

验证头文件是否成功安装。

$ dpkg-query -s linux-headers-$(uname -r) 

Package: linux-headers-3.11.0-26-generic
Status: install ok installed

Debian、Ubuntu、Linux Mint默认头文件在/usr/src下。

在 Fedora、CentOS 或者 RHEL 上安装内核头文件

假设你没有手动编译内核,你可以使用yum命令来安装匹配的内核头文件。

首先,用下面的命令检查系统是否已经安装了头文件。如果下面的命令没有任何输出,这就意味着还没有头文件。

$ rpm -qa | grep kernel-headers-$(uname -r)

接着用yum命令安装头文件。这个命令会自动找出合适的头文件并安装。

$ sudo yum install kernel-headers 

验证包安装的状态。

$ rpm -qa | grep kernel-headers-$(uname -r) 

kernel-headers-3.10.0-123.9.3.el7.x86_64

Fedora、CentOS 或者 RHEL上默认内核头文件的位置是/usr/include/linux


via: http://ask.xmodulo.com/install-kernel-headers-linux.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

苹果借助‘Apple Watch’的发布,证实了其进军穿戴式电子设备市场的长期传言

Ubuntu Smartwatch – good idea?

Ubuntu智能手表 - 好主意?

拥有一系列稳定功能、硬件解决方案和应用合作伙伴关系的支持,手腕穿戴设备被许多公司预示为“人与技术关系的新篇章”。

它的到来,以及用户兴趣的提升,有可能意味着Ubuntu需要跟进一个为智能手表定制的Ubuntu版本。

大的方面还是成功的

苹果在正确的时间加入了快速发展的智能手表行列。手腕穿戴设备功能的界限并不是一成不变。失败的设计、简陋的用户界面以及主流用户使用穿戴技术功能的弱定制化,这些都见证了硬件类产品仍然很脆弱 - 这一因素使得Cupertino把时间花费在Apple Watch上。

‘分析师说:超过2200万的智能手表将在今年销售’

去年全球范围内可穿戴设备的销售数量(包括健身追踪器)仅仅1000万。今年,分析师希望设备的销量可以超过2200万 - 不包括苹果手表,因为其直到2015年初才开始零售。

其实,我们很容易就可以看出增长的来源。今年九月初柏林举办的IFA 2014展览会,展示了一系列来自主要制造商们的可穿戴设备,包括索尼和华硕。大多数搭载着Google最新发布的安卓穿戴平台。

更成熟的一个表现是:安卓穿戴设备打破了与形式因素保持一致的新奇争论,进而呈现出一致且令人信服的用户方案。和新的苹果手表一样,它紧密地连接在一个现存的智能手机生态系统上。

但Ubuntu手腕穿戴系统是否能与之匹配,成为一个实用案例,目前还不清楚。

目前还没有Ubuntu智能手表的计划

Ubuntu操作系统的通用性将多种设备的严格标准与统一的未来目标联合在一起,Canonical已经将目标指向了智能电视,平板电脑和智能手机。公司自家的显示服务Mir,甚至被用来为所有尺寸的屏幕提供驱动接口(虽然不是公认1.5"的)。

今年年初,Canonical社区负责人Jono Bacon被问到是否有制作Ubuntu智能手表的打算。Bacon提供了他对这个问题的看法:“为[Ubuntu触摸设备]路线增加额外的形式因素只会减缓现有的进度”。

在Ubuntu手机发布两周年之际,我们还是挺赞同他的想法的。

除了A面还有B面!

但是并不是没有希望的。在几个月之后的一次电话采访中,Ubuntu创始人Mark Shuttleworth提到,可穿戴技术和智能电视、平板电脑、智能手机一样,都在公司计划当中。

“Ubuntu因其在电话中的完美设计变得独一无二,但同时它的设计也能够满足其他生态系统,从穿戴设备到PC机。”

然而这还没得到具体的证实,它更像一个指针,在某个方向给我们提供一个乐观的指引。

不大可能 — 但这就是原因所在

Canonical并不反对利用牢固的专利进军市场。事实上,它恰恰是公司DNA基因的一部分 — 犹如服务器端的RHEL,桌面端的Windows,智能手机上的安卓...

设备上的Ubuntu系统被制作成可以在更小的屏幕上扩展和适配运行,甚至在小如手表一样的屏幕上。当普通的代码基础已经在手机、平板电脑、桌面和TV上准备就绪,在同样的方向上,如果看不到社区的努力是十分令人吃惊的。

但是我之所以不认为它会从Canonical发生,至少目前还没有,是基于今年早些时候Jono Bacon的个人思想得出的结论:时间和努力。

Tim Cook在他的主题演讲中说道:“我们并没有追随iPhone,也没有缩水用户界面,将其强硬捆绑在你的手腕上。”这是一个很明显的陈述。为如此小的屏幕设计UI和UX模型、通过交互原则工作、对硬件和输入模式的推崇,这些都不是容易的事。

可穿戴技术仍然是一个新兴的市场。在这个阶段,Canonical可能会在探寻的过程中浪费一些发展、设计和商业上的机会。如果在一些更为紧迫的领域落后了,造成的后果远比眼前利益的损失更严重。

打一场持久战,耐心等待,看哪些努力成功哪些会失败,这是一条更难的路线,但是却更适合Ubuntu,就如同今天它做的一样。在新产品出现之前,Canonical把力量用在现存的产品上是更好的选择(这是一些已经来迟的理论)

想更进一步了解什么是Ubuntu智能手表,点击下面的视频,里面展示了一个交互的Unity主题皮肤Tizen(它已经支持Samsung Galaxy Gear智能手表)。


via: http://www.omgubuntu.co.uk/2014/09/ubuntu-smartwatch-apple-iwatch

作者:Joey-Elijah Sneddon 译者:su-kaiyao 校对:Mr小眼儿

本文由LCTT 原创翻译,Linux中国 荣誉推出

一个好的备份最基本的目的就是为了能够从一些错误中恢复:

  • 人为的失误
  • 磁盘阵列或是硬盘故障
  • 文件系统崩溃
  • 数据中心被破坏等等。

所以,我为大家罗列了一些开源的软件备份工具。

当为一个企业选择备份工具的时候,你都考虑什么呢?

确定你正在部署的软件具有下面的特性

  1. 开源软件 - 你务必要选择那些源码可以免费获得,并且可以修改的软件。确信可以恢复你的数据,即使是软件供应商/项目停止继续维护这个软件,或者是拒绝继续为这个软件提供补丁。
  2. 跨平台支持 - 确定备份软件可以很好的运行各种需要部署的桌面操作系统和服务器系统。
  3. 数据格式 - 一种开放的数据格式可以让你能够恢复数据,即使是供应商或是项目停止对软件的支持。
  4. 自动转换 - 自动转换本来是没什么,除了对于各种备份设备,包括图书馆,近线存储和自动加载,自动转换可以自动完成一些任务,包括加载,挂载和标签备份像磁带这些媒体设备。
  5. 备份介质 - 确定你可以备份到磁带,硬盘,DVD 和像 AWS 这样的云存储。
  6. 加密数据流 - 确定所有客户端到服务器的传输都被加密,保证在 LAN/WAN/Internet 中传输的安全性。
  7. 数据库支持 - 确定备份软件可以备份到数据库,像MySQL 或是 Oracle。
  8. 备份可以跨越多个卷 - 备份软件(转储文件时)可以把每个备份文件分成几个部分,允许将每个部分存在于不同的卷。这样可以保证一些数据量很大的备份(像100TB的文件)可以被存储在一些单个容量较小的设备中,比如说像硬盘和磁盘卷。
  9. VSS (卷影复制) - 这是微软的卷影复制服务(VSS).aspx),通过创建数据的快照来备份。确定备份软件支持VSS的MS-Windows 客户端/服务器。
  10. 重复数据删除 - 这是一种数据压缩技术,用来消除重复数据的副本(比如,图片)。
  11. 许可证和成本 - 确定你对备份软件所用的许可证了解和明白其使用方式
  12. 商业支持 - 开源软件可以提供社区支持(像邮件列表和论坛)和专业的支持(如发行版提供额外的付费支持)。你可以使用付费的专业支持为你提供培训和咨询。
  13. 报告和警告 - 最后,你必须能够看到备份的报告,当前的工作状态,也能够在备份出错的时候提供警告。

Bacula - 一个应用于多元化异构网络的客户端服务器备份工具

我个人应用这个软件来管理备份和通过网络来恢复系统,包括Linux, OSX, 和Windows。你可以通过CLI, GUI, 或者Web界面来配置Bacula。

  • 操作系统:支持跨平台运行。
  • 备份级别:完全,差异,增量,合并。
  • 数据格式:支持自定义且完全开放。
  • 自动转换:支持。
  • 备份介质:支持磁带,磁盘和DVD。
  • 加密数据流:支持。
  • 数据库:支持MSSQL、PostgreSQL、Oracle 。
  • 跨卷备份:支持
  • VSS(卷影复制):支持。
  • 许可:Affero General Public License v3.0。
  • 下载链接:bacula.org

Amanda - 又一个客户端服务器备份工具

AMANDA 是 Advanced Maryland Automatic Network Disk Archiver 的缩写。它允许系统管理员创建一个单独的备份服务器来将网络上的其他主机的数据备份到磁带驱动器、硬盘或者是自动换盘器。

  • 操作系统:支持跨平台运行。
  • 备份级别:完全,差异,增量,合并。
  • 数据格式:开放(可以通过tar等工具恢复)。
  • 自动转换:支持。
  • 备份介质:支持磁带,磁盘和DVD。
  • 加密数据流:支持。
  • 数据库:支持MSSQL, Oracle。
  • 跨卷备份:支持。
  • VSS(卷影复制):支持。
  • 许可:GPL, LGPL, Apache, Amanda License。
  • 下载链接:amanda.org

Backupninja - 轻量级备份系统

Backupninja 是一个简单易用的备份系统。你可以简单的拖放一个配置文件到 /etc/backup.d/ 目录来备份到多个主机。

  • 操作系统:支持Linux,Unix。
  • 备份级别:支持完全,差异备份(rsync + hard 链接)
  • 数据格式:开放
  • 自动转换:N/A。(注:N/A = Not Applicable)。
  • 备份介质:磁盘,DVD,CD,ISO 镜像。
  • 加密数据流:支持(ssh)和通过duplicity远程加密备份
  • 数据库:支持MySQL,PostgreSQL,OpenLDAP 和subversion 或trac。
  • 跨卷备份:??
  • VSS(卷影复制):??
  • 许可:GPL
  • 下载链接:riseup.net

Backuppc - 高效的客户端服务器备份工具

Backuppc 可以用来备份基于Linux 和Windows 系统的主服务器硬盘。它配备了一个巧妙的池计划来最大限度的减少磁盘储存、磁盘 I/O 和网络I/O。

  • 操作系统:支持Linux,Unix 和Windows。
  • 备份级别:支持完全和增量备份(rsync +hard 链接和pooling 计划)
  • 数据格式:开放。
  • 自动转换:N/A。
  • 备份介质:磁盘和磁盘阵列。
  • 加密数据流:支持。
  • 数据库:支持(通过Shell 脚本)
  • 跨卷备份:??
  • VSS(卷影复制):??
  • 许可:GPL。
  • 下载链接:backuppc.sourceforge.net

UrBackup - 最容易配置的客户端服务器系统

UrBackup 是一个非常容易配置的开源客户端服务器备份系统,通过镜像 方式和文件备份的组合完成了数据安全性和快速的恢复。磁盘卷备份可以使用可引导 CD 或U盘,通过Web界面或Windows资源管理器来恢复你的文件(硬恢复)。一个 Web 界面使得配置你自己的备份服务变得非常简单。

  • 操作系统:支持Linux,FreeBSD,Unix,Windows 和少数基于NAS 的Linux操作系统,客户端只支持Linux 和Windows 操作系统。
  • 备份级别:支持完全和增量备份。
  • 数据格式:开放。
  • 自动转换:N/A。
  • 备份介质:磁盘,磁盘阵列和DVD。
  • 加密数据流:支持。
  • 数据库:??
  • 跨卷备份:??
  • VSS(卷影复制):??
  • 许可:GPL v3+
  • 下载链接:urbackup.org

其他供你考虑的一些极好用的开源备份软件

Amanda,Bacula 和上面所提到的这些软件功能都很丰富,但是对于一些小的网络或者是单独的服务器来说配置比较复杂。我建议你学习和使用一下的下面这些备份软件:

  1. Rsnapshot - 我建议用这个作为对本地和远程的文件系统快照工具。看看在Debian 和Ubuntu linux基于CentOS,RHEL 的操作系统怎么设置和使用这个工具。
  2. rdiff-backup - 另一个好用的类Unix 远程增量备份工具。
  3. Burp - Burp 是一个网络备份和恢复程序。它使用了librsync来节省网络流量和节省每个备份占用的空间。它也使用了VSS(卷影复制服务),在备份Windows计算机时进行快照。
  4. Duplicity - 伟大的加密和高效的备份类Unix操作系统。查看如何安装Duplicity来加密云备份来获取更多的信息。
  5. SafeKeep - SafeKeep是一个中心化的、易于使用的备份应用程序,结合了镜像和增量备份最佳功能的备份应用程序。
  6. DREBS - DREBS 是EBS定期快照的工具。它被设计成在EBS快照所连接的EC2主机上运行。
  7. 古老的unix 程序,像rsync, tar, cpio, mt 和dump。

结论

我希望你会发现这篇有用的文章来备份你的数据。不要忘了验证你的备份和创建多个数据备份。注意,磁盘阵列并不是一个备份解决方案!使用任何一个上面提到的程序来备份你的服务器、桌面和笔记本电脑和私人的移动设备。如果你知道其他任何开源的备份软件我没有提到的,请分享在评论里。


via: http://www.cyberciti.biz/open-source/awesome-backup-software-for-linux-unix-osx-windows-systems/

作者:nixCraft 译者:barney-ro 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

一个新的雷达系统已经被送回去升级了

一谈到稳定性和性能,没什么能真的比得过Linux。这就是为什么美国海军陆战队的领导们已经决定让Northrop Grumman Corp. Electronic Systems把新送到的地面/空中任务导向雷达(G/ATOR)的操作系统从Windows XP换成Linux。

地面/空中任务导向雷达(G/ATOR)系统已经研制了很多年。很可能在这项工程启动的时候Windows XP被认为是合理的选择。但在研制的这段时间,事情发生了变化。微软已经撤销了对Windows XP的支持而且只有极少的几个组织会使用它。操作系统要么升级要么被换掉。在这种情况下,Linux成了合理的选择。特别是当替换的费用很可能远远少于更新的费用。

有个很有趣的地方值得注意一下。地面/空中任务导向雷达(G/ATOR)才刚刚送到美国海军陆战队,但是制造它的公司却还是选择了保留这个过时的操作系统。一定有人注意到的这样一个事实。这是一个糟糕的决定,并且指挥系统已经被告知了可能出现的问题了。

G/ATOR雷达的软件将是基于Linux的

Unix类系统,比如基于BSD或者基于Linux的操作系统,通常会出现在条件苛刻的领域,或者任何情况下都不允许失败的的技术中。例如,这就是为什么大多数的服务器都运行着Linux。一个雷达系统配上一个几乎不可能崩溃的操作系统看起来非常相配。

“弗吉尼亚州Quantico海军基地海军陆战队系统司令部的官员,在周三宣布了一项与Northrop Grumman Corp. Electronic Systems在林西科姆高地的部分的总经理签订的价值1020万美元的修正合同。这个合同的修改将包括这样一项,把G/ATOR的控制电脑从微软的Windows XP操作系统换成与国防信息局(DISA)兼容的Linux操作系统。”

‘G/ATOR是一个远征三维中短距离多用途雷达系统。这个系统被设计成能够探测拥有低雷达截面的低可观测目标,比如火箭弹,火炮,迫击炮,巡航导弹以及无人机。”这些内容可以在militaryaerospace.com看到。

这项军用科技,即地面/空中任务导向雷达(G/ATOR),早在2005年就与Northrop Grumman签订了第一次合同。所以不难理解为什么美国海军可能想把这件事快点弄完。这次更换的时间限制还没有被提议。

视频链接:http://youtu.be/H2ppl4x-eu8


via: http://news.softpedia.com/news/U-S-Marine-Corps-Want-to-Change-OS-for-Radar-System-from-Windows-XP-to-Linux-466756.shtml

作者:Silviu Stahie 译者:H-mudcup 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Is something watching you?

译注:原文标题中Tuxpocalypse是作者造的词,由Tux和apocalypse组合而来。Tux是Linux的LOGO中那只企鹅的名字,apocalypse意为末世、大灾变,这里翻译成企鹅的末日。

你被监视了吗?

带上一箱罐头,挖一个深坑碉堡,准备进入一个完全不同的新世界吧:一个强大的木马已经在Linux中被发现

没错,迄今为止最牢不可破的计算机世外桃源已经被攻破了,安全专家们都已成惊弓之鸟。

关掉电脑,拔掉键盘,然后再买只猫(忘掉YouTube吧)。企鹅末日已经降临,我们的日子不多了。

我去?这是真的吗?依我看,不一定吧~

一次可怕的异常事件!

先声明,我并没有刻意轻视此次威胁(人们给这个木马起名为‘Turla’)的严重性,为了避免质疑,我要强调的是,作为Linux用户,我们不应该为此次事件过分担心。

此次发现的木马能够在人们毫无察觉的情况下感染Linux系统,这是非常可怕的。事实上,它的主要工作是搜寻并向外发送各种类型的敏感信息,这一点同样令人感到恐惧。据了解,它已经存在至少4年时间,而且无需root权限就能完成这些工作。呃,这是要把人吓尿的节奏吗?

But - 但是 - 新闻稿里常常这个时候该出现‘but’了 - 要说恐慌正在横扫桌面Linux的粉丝,那就有点断章取义、甚至不着边际了。

对我们中的有些人来说,计算机安全隐患的确是一种新鲜事物,然而我们应该对其审慎对待:对桌面用户来说,Linux仍然是一个天生安全的操作系统。一次瑕疵不应该否定它的一切,我们没有必要慌忙地割断网线。

国家资助,目标政府

Is a penguin snake a ‘Penguake’ or a ‘Snaguin’?

企鹅和蛇的组合该叫‘企蛇’还是‘蛇鹅’?

‘Turla’木马是一个复杂、高级的持续威胁,四年多来,它以政府、大使馆以及制药公司的系统为目标,其使用的攻击方式所基于的代码至少在14年前就已存在了。

在Windows系统中,安全研究领域来自赛门铁克和卡巴斯基实验室的超级英雄们首先发现了这条黏黏的蛇,他们发现Turla及其组件已经感染了45个国家的数百台个人电脑,其中许多都是通过未打补丁的0day漏洞感染的。

微软,干得漂亮。

经过卡巴斯基实验室的进一步努力,他们发现,同样的木马出现在了Linux上。

这款木马无需高权限就可以“拦截传入的数据包,在系统中执行传入的命令”,但是它的触角到底有多深,有多少Linux系统被感染,它的完整功能都有哪些,这些目前都暂时还不明朗。

根据它选定的目标,我们推断“Turla”(及其变种)是由某些民族的国家资助的。美国和英国的读者不要想当然以为这些国家就是“那些国家”。不要忘了我们自己的政府也很乐于趟这摊浑水。

观点 与 责任

这次的发现从情感上、技术上、伦理上,都是一次严重的失利,但它远没有达到说我们已经进入一个病毒和恶意软件针对桌面自由肆虐的时代。

Turla 并不是那种用户关注的“我想要你的信用卡”病毒,那些病毒往往绑定在一个伪造的软件下载链接中。Turla是一种复杂的、经过巧妙处理的、具有高度适应性的威胁,它时刻都具有着特定的目标(因此它绝不仅仅满足于搜集一些卖萌少女的网站账户密码,sorry 绿茶婊们!)。

卡巴斯基实验室是这样介绍的:

“Linux上的Turla模块是一个链接多个静态库的C/C++可执行文件,这大大增加了它的文件体积。但它并没有着重减小自身的文件体积,而是剥离了自身的符号信息,这样就增加了对它逆向分析的难度。它的功能主要包括隐藏网络通信、远程执行任意命令以及远程管理等等。它的大部分代码都基于公开源码。”

不管它的影响和感染率如何,它的技术优势都将不断给那些号称聪明的专家们留下一个又一个问题,就让他们花费大把时间去追踪、分析、解决这些问题吧。

我不是一个计算机安全专家,但我是一个理智的网络脑残粉,要我说,这次事件应该被看做是一个通(jing)报(gao),而并非有些网站所标榜的洪(shi)水(jie)猛(mo)兽(ri)。

在更多细节披露之前,我们都不必恐慌。只需继续计算机领域的安全实践,避免从不信任的网站或PPA源下载运行脚本、app或二进制文件,更不要冒险进入web网络的黑暗领域。

如果你仍然十分担心,你可以前往卡巴斯基的博客查看更多细节,以确定自己是否感染。


via: http://www.omgubuntu.co.uk/2014/12/government-spying-turla-linux-trojan-found

作者:Joey-Elijah Sneddon 译者:Mr小眼儿 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

之前的教程中,我对如何简单地使用Quagga把CentOS系统变成一个不折不扣地OSPF路由器做了一些介绍。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)或者域内路由协议,用于处理一个域内的路由.

测试方案

在这个教程中,让我们来使用以下拓扑。

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

  • 运营商 A: ASN (100), IP地址空间 (100.100.0.0/22), 分配给BGP路由器eth1网卡的IP地址(100.100.1.1)
  • 运营商 B: ASN (200), IP地址空间 (200.200.0.0/22), 分配给BGP路由器eth1网卡的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   #显示接口信息

Interface eth0 is up, line protocol detection is disabled
. . . . .
Interface eth1 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

继续配置eth1接口的参数:

site-A-RTR(config)# interface eth1
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 

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 eth1 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

Router-A# show interface description   #显示接口描述

Interface       Status  Protocol  Description
eth0            up      unknown   "to Router-B"
eth1            up      unknown   "test ip from provider A network"

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

Router-A# write

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

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

Router-A# ping 100.100.0.2 

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 

... ... ...
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 

从输出中,我们可以看到"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 

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

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

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

Router-A# show ip bgp neighbors 100.100.0.2 routes 

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

Router-A# show ip 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, eth1
B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:06:45

Router-A# show ip route bgp 

B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:08:13

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

[root@Router-A~]# ip route 

100.100.0.0/30 dev eth0  proto kernel  scope link  src 100.100.0.1
100.100.1.0/24 dev eth1  proto kernel  scope link  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属性调整、本地优先级和预先路径准备等,我将会在后续的教程中覆盖这些主题。

希望这篇教程能给大家一些帮助。


via: http://xmodulo.com/centos-bgp-router-quagga.html

作者:Sarmed Rahman 译者:disylee 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出