歡迎光臨
每天分享高質量文章

使用 Quagga 實現 Linux 動態路由 | Linux 中國

學習如何使用 Quagga 套件的路由協議去管理動態路由。
— Carla Schroder


致謝
編譯自 | https://www.linux.com/learn/intro-to-linux/2018/3/dynamic-linux-routing-quagga 
 作者 | Carla Schroder
 譯者 | qhwdw ? ? ? ? ? 共計翻譯:117 篇 貢獻時間:212 天

學習如何使用 Quagga 套件的路由協議去管理動態路由。

迄今為止,本系列文章中,我們已經在 Linux 區域網路由新手指南:第 1 部分[1] 中學習了複雜的 IPv4 地址,在  Linux 區域網路由新手指南:第 2 部分[2] 中學習瞭如何去手工建立靜態路由。

今天,我們繼續使用 Quagga[3] 去管理動態路由,這是一個安裝完後就不用理它的的軟體。Quagga 是一個支援 OSPFv2、OSPFv3、RIP v1 和 v2、RIPng、以及 BGP-4 的路由協議套件,並全部由 zebra 守護程式管理。

OSPF 的意思是最短路徑優先Open Shortest Path First。OSPF 是一個內部閘道器協議(IGP);它可以用在區域網和跨因特網的區域網互聯中。在你的網路中的每個 OSPF 路由器都包含整個網路的拓撲,並計算透過該網路的最短路徑。OSPF 會透過多播的方式自動對外傳播它檢測到的網路變化。你可以將你的網路分割為區域,以保持路由表的可管理性;每個區域的路由器只需要知道離開它的區域的下一跳介面地址,而不用記錄你的網路的整個路由表。

RIP,即路由資訊協議,是一個很老的協議,RIP 路由器向網路中週期性多播它的整個路由表,而不是像 OSPF 那樣只多播網路的變化。RIP 透過跳數來測量路由,任何超過 15 跳的路由它均視為不可到達。RIP 設定很簡單,但是 OSPF 在速度、效率以及彈性方面更佳。

BGP-4 是邊界閘道器協議版本 4。這是用於因特網流量路由的外部閘道器協議(EGP)。你不會用到 BGP 協議的,除非你是因特網服務提供商。

準備使用 OSPF

在我們的小型 KVM 測試實驗室中,用兩臺虛擬機器表示兩個不同的網路,然後將另一臺虛擬機器配置為路由器。建立兩個網路:net1 是 192.168.110.0/24 ,而 net2 是 192.168.120.0/24。啟用 DHCP 是明智的,否則你要分別進入這三個虛擬機器,去為它們設定靜態地址。Host 1 在 net1 中,Host 2 在 net2 中,而路由器同時與這兩個網路連線。設定 Host 1 的閘道器地址為 192.168.110.126,Host 2 的閘道器地址為 192.168.120.136。

◈ Host 1: 192.168.110.125
◈ Host 2:192.168.120.135
◈ Router:192.168.110.126 和 192.168.120.136

在路由器上安裝 Quagga。在大多數 Linux 中它是 quagga 軟體包。在 Debian 上還有一個單獨的檔案包 quagga-doc。取消 /etc/sysctl.conf 配置檔案中如下這一行的註釋去啟用包轉發功能:

  1. net.ipv4.ip_forward=1

然後,執行 sysctl -p 命令讓變化生效。

配置 Quagga

檢視你的 Quagga 包中的示例配置檔案,比如,/usr/share/doc/quagga/examples/ospfd.conf.sample。除非你的 Linux 版本按你的喜好做了創新,否則,一般情況下配置檔案應該在 /etc/quagga 目錄中。大多數 Linux 版本在這個目錄下有兩個檔案,vtysh.conf  和 zebra.conf。它們提供了守護程式執行所需要的最小配置。除非你的發行版做了一些特殊的配置,否則,zebra 總是首先執行,當你啟動 ospfd 的時候,它將自動啟動。Debian/Ubuntu 是一個特例,稍後我們將會說到它。

每個路由器守護程式將讀取它自己的配置檔案,因此,我們必須建立 /etc/quagga/ospfd.conf,並輸入如下內容:

  1. !/etc/quagga/ospfd.conf

  2. hostname router1

  3. log file /var/log/quagga/ospfd.log

  4. router ospf

  5.  ospf router-id 192.168.110.15

  6.  network 192.168.110.0/0 area 0.0.0.0

  7.  network 192.168.120.0/0 area 0.0.0.0

  8. access-list localhost permit 127.0.0.1/32

  9. access-list localhost deny any

  10. line vty

  11.  access-class localhost

你可以使用感嘆號(!)或者井號(#)去註釋掉這些行。我們來快速瀏覽一下這些選項。

◈ hostname 可以是你希望的任何內容。這裡不是一般意義上的 Linux 主機名,但是,當你使用 vtysh 或者 telnet 登入時,你將看到它們。
◈ log file 是你希望用於儲存日誌的任意檔案。
◈ router 指定路由協議。
◈ ospf router-id 是任意的 32 位數字。使用路由器的一個 IP 地址就是很好的選擇。
◈ network 定義你的路由器要通告的網路。
◈ access-list 限制 vtysh 登入,它是 Quagga 命令列 shell,它允許本地機器登入,並拒絕任何遠端管理。

Debian/Ubuntu

在你啟動守護程式之前,Debian/Ubuntu 相對其它的 Debian 衍生版可能多需要一步到多步。編輯 /etc/quagga/daemons ,除了 zebra=yes 和 ospfd=yes 外,使其它所有的行的值為 no

然後,在 Debian 上執行 ospfd 去啟動 Quagga:

  1. # systemctl start quagga

在大多數的其它 Linux 上,包括 Fedora 和 openSUSE,用如下命令啟動 ospfd

  1. # systemctl start ospfd

現在,Host 1 和 Host 2 將可以互相 ping 通對方和路由器。

這裡用了許多篇幅去描述非常簡單的設定。在現實中,路由器將連線兩個交換機,然後為連線到這個交換機上的所有電腦提供一個閘道器。你也可以在你的路由器上新增更多的網路介面,這樣你的路由器就可以為更多的網路提供路由服務,或者也可以直接連線到其它路由器上,或者連線到連線其它路由器的骨幹網路上。

你或許不願意如此麻煩地手工配置網路介面。最簡單的方法是使用你的 DHCP 伺服器去宣告你的路由器。如果你使用了 Dnsmasq,那麼你就有了一個 DHCP 和 DNS 的一體化解決方案。

還有更多的配置選項,比如,加密的密碼保護。更多內容請檢視 Quagga 路由套件[3] 的官方檔案。


via: https://www.linux.com/learn/intro-to-linux/2018/3/dynamic-linux-routing-quagga

作者:CARLA SCHRODER[5] 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂