<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 8.3 動態路由器架設:quagga (zebra + ripd) 在一般的靜態路由器上面,我們可以透過修改路由配置文件 (route-ethN) 來設定好既定的路由規則,讓你的路由器運作順利。不過, 這樣的方法總是覺得很討厭!如果某天因為組織的再造導致需要重新規劃子網網段,如此一來,你就得要在[圖 8.2-1](#fig8.2-1) 的 Router A 與 Linux Router 再次的處理與檢查路由規則,真是有夠麻煩的~ 那能不能讓路由器自己學習新的路由,來達成自動增加該筆路由的信息呢? 上述的功能就是所謂的動態路由。動態路由通常是用在路由器與路由器之間的溝通,所以要讓你的路由器具有動態路由的功能, 你必須要了解到對方路由器上面所提供的動態路由協議才行,這樣兩部路由器才能夠透過該協議來溝通彼此的路由規則。 目前常見的動態路由協議有:RIPv1, RIPv2, OSPF, BGP 等。 想要在 CentOS 上面搞定這些動態路由的相關機制,那就得要使用 quagga 這個軟件啦!這個軟件是 zebra 計劃的延伸, 相關的官網說明可以參考文后的參考數據([注3](#ps3))。既然要玩 quagga ,自然就得要先安裝他啰!趕緊處理吧! ``` [root@www ~]# yum install quagga [root@www ~]# ls -l /etc/quagga -rw-r--r--. 1 root root 406 Jun 25 20:19 ripd.conf.sample -rw-r-----. 1 quagga quagga 26 Jul 22 11:11 zebra.conf -rw-r--r--. 1 root root 369 Jun 25 20:19 zebra.conf.sample .....(其他省略)..... ``` 這個軟件所提供的各項動態路由協議都放置到 /etc/quagga/ 目錄內,底下我們以較為簡單的 RIPv2 協議來處理動態路由, 不過你得要注意的是,不論你要啟動什么動態路由協議,那個 zebra 都必須要先啟動才行!這是因為: * zebra 這個 daemon 的功能在更新核心的路由規則; * RIP 這個 daemon 則是在向附近的其他 Router 溝通協調路由規則的傳送與否。 而各個路由服務的配置文件都必須要以 /etc/quagga/*.conf 的檔名來儲存才行,如上表我們可以發現 zebra 這個服務是有設定好了,不過 ripd 的檔名卻不是 .conf 結尾。所以我們必須要額外作些設定才行。 為了練習一下我們的 quagga ,當然得要設計一下可能的網絡聯機啰~假設網絡聯機的圖標如下,共有三個區網的網段, 其中最大的是 192.168.1.0/24 這個外部區網,另有兩個內部區網分別是 192.168.100.0/24 及 192.168.200.0/24 。 ![](https://box.kancloud.cn/2016-05-13_5735da4fce2cb.gif) 圖 8.3-1、練習動態路由所設定的網絡聯機示意圖 上圖的兩部 Linux Router 分別負責不同的網域,其中 Router Z1 是上個小節設定好之后就保留的,左邊的 Router Z2 則是需要額外設定的路由器喔!兩部 Router 可以透過 192.168.1.0/24 這個網域來溝通。在沒有設定額外路由規則的情況下,那個 PC Z1 與 PC Z2 是無法溝通的!另外,quagga 必須要同時安裝在兩部 Linux Router 上頭才行, 而且我們只要設定好這兩部主機的網絡接口 (eth0, eth1) 后,不需要手動輸入額外的路由設定喔!可以透過 RIP 這個路由協議來搞定的! * 1\. 將所有主機的 IP 設定妥當: 這是最重要的吧?請將這四部主機 (Router Z1, Router Z2, PC Z1, PC Z2) 的網絡參數,按照圖 8.3-1 的模樣設置妥當。 設置的方式請參考本章上一小節,或者是依據第四章的 4.2.1 來設定啰,這里不再重復說明了。 另外,在 Router Z1, Z2 的部分還得要加上修改 ip_forwrad 參數!亦即是 /etc/sysctl.conf 的設定值喔! 這個鳥哥也常常忘記 @_@。 * 2\. 在兩部 Router 上面設定 zebra : 我們先設定圖 8.3-1 右手邊那一部 Router Z1,關于 zebra.conf 你可以這樣設定的: ``` # 1\. 先設定會影響動態路由服務的 zebra 并且啟動 zebra [root@www ~]# vim /etc/quagga/zebra.conf hostname www.centos.vbird &lt;==給予這個路由器一個主機名,隨便取! password linuxz1 &lt;==給予一個密碼! enable password linuxz1 &lt;==將這個密碼生效! log file /var/log/quagga/zebra.log &lt;==將所有 zebra 產生的信息存到登錄文件中 [root@www ~]# /etc/init.d/zebra start [root@www ~]# chkconfig zebra on [root@www ~]# netstat -tunlp &#124; grep zebra Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:2601 0.0.0.0:* LISTEN 4409/zebra ``` 仔細看,由于 zebra 這個服務的任務主要是在修改 Linux 系統核心內的路由, 所以他僅監聽本機接口而已,并不會監聽外部的接口才對!另外,在 zebra.conf 這個檔案當中, 我們所設定的那個密碼是有作用的喔!可以讓我們登入 zebra 這套軟件呢! 好了,我們來查一查這個 2601 的 port 是否正確的啟動的呢? ``` [root@www ~]# telnet localhost 2601 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. Hello, this is Quagga (version 0.99.15). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: &lt;==在這里輸入剛剛你設定的密碼啊! www.centos.vbird&gt; ? &lt;==在這邊輸入『 ? 』就能夠知道有多少指令可使用 echo Echo a message back to the vty enable Turn on privileged mode command exit Exit current mode and down to previous mode help Description of the interactive help system list Print command list quit Exit current mode and down to previous mode show Show running system information terminal Set terminal line parameters who Display who is on vty www.centos.vbird&gt; list &lt;==列出所有可用指令 echo .MESSAGE ....(中間省略).... show debugging zebra show history show interface [IFNAME] ....(中間省略).... show ip protocol show ip route ....(其他省略).... www.centos.vbird&gt; show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, &gt; - selected route, * - FIB route K&gt;* 0.0.0.0/0 via 192.168.1.254, eth0 &lt;==核心直接設定的 C&gt;* 127.0.0.0/8 is directly connected, lo &lt;==接口產生的路由 K&gt;* 169.254.0.0/16 is directly connected, eth1 &lt;==核心直接設定的 C&gt;* 192.168.1.0/24 is directly connected, eth0 &lt;==接口產生的路由 C&gt;* 192.168.100.0/24 is directly connected, eth1 &lt;==接口產生的路由 www.centos.vbird&gt; exit Connection closed by foreign host. ``` 仔細看到,我們登入這個 zebra 的服務之后,可以輸入『help』或問號『?』, zebra 就會顯示出你能夠執行的指令有哪些,比較常用的當然是查詢路由規則啰!以『 show ip route 』來查閱,結果可以發現目前的接口與默認路由都被顯示出來了,顯示的結果當中: * K :代表以類似 route 指令加入核心的路由規則,包括 route-ethN 所產生的規則; * C :代表由你的網絡接口所設定的 IP 而產生的相關的路由規則 * S :以 zebra 功能所設定的靜態路由信息; * R :就是透過 RIP 協議所增加的路由規則啰! 事實上,如果你還想要增加額外的靜態路由的話,也可以透過 zebra 而不必使用 route 指令呢! 例如想要增加 10.0.0.0/24 給 eth0 來處理的話,可以這樣做: ``` [root@www ~]# vim /etc/quagga/zebra.conf # 新增底下這一行喔! ip route 10.0.0.0/24 eth0 [root@www ~]# /etc/init.d/zebra restart [root@www ~]# telnet localhost 2601 Password: &lt;==這里輸入密碼 www.centos.vbird&gt; show ip route K&gt;* 0.0.0.0/0 via 192.168.1.254, eth0 &lt;u&gt;S&gt;* 10.0.0.0/24 [1/0] is directly connected, eth0&lt;/u&gt; C&gt;* 127.0.0.0/8 is directly connected, lo K&gt;* 169.254.0.0/16 is directly connected, eth1 C&gt;* 192.168.1.0/24 is directly connected, eth0 C&gt;* 192.168.100.0/24 is directly connected, eth1 ``` 嘿嘿!立刻就會多出一筆路由的規則,而且最右邊會顯示 S,亦即是靜態路由 (Static route) 的意思。 如此一來,我們系統管理員可就輕松多了!設定完右邊 Router Z1 的 zebra 之后,不要忘記設定你的 Router Z2 呦! 同樣的設定再來一遍啦!只是主機名與密碼應該給予不同才是呦!因為過程都一樣,鳥哥就不再重復設定。 接下來我們可以開始看看 ripd 這個服務啰! * 3\. 在兩部 Router 上面設定 ripd 服務: ripd 這個服務可以在兩部 Router 之間進行路由規則的交換與溝通,當然啦,如果你的環境里面有類似 Cisco 或者是其他有提供 RIP 協議的路由器的話,那么你當然也是可以透過這個 RIP 讓你的 Linux Router 與其他硬件路由器互相溝通的吶! 只不過 CentOS 6.x 的 quagga 所提供的 ripd 服務使用的是 RIPv2 版本,這個版本預設就要求得要進行身份驗證的動作, 但是我們是個小型網絡,并不想要加入這個身份驗證的功能,因此就得要增加某些設定值才能夠順利的啟動 ripd 呦! 先來設定 Router Z1 吧!在 Router Z1 當中,我們主要是透過 eth0 發送所有的網域路由信息,同時,我們管理的網域有 192.168.1.0/24, 192.168.100.0/24。再加上取消身份驗證的設定值后,我們的 ripd 就會變成這樣: ``` [root@www ~]# vim /etc/quagga/ripd.conf hostname www.centos.vbird &lt;==這里是設定 Router 的主機名而已 password linuxz1 &lt;==設定好你自己的密碼喔! debug rip events &lt;==可以記錄較多的錯誤訊息! debug rip packet &lt;==鳥哥透過這個訊息解決很多問題 router rip &lt;==啟動 Router 的 rip 功能 version 2 &lt;==啟動的是 RIPv2 的服務 (默認值) network 192.168.1.0/24 &lt;==這兩個就是我們管理的接口啰! network 192.168.100.0/24 &lt;u&gt;interface eth0&lt;/u&gt; &lt;==針對外部的那個接口,要略過身份驗證的方式 &lt;u&gt;no ip rip authentication mode&lt;/u&gt; &lt;==就是這個項目!不要驗證身份! log file /var/log/quagga/zebra.log &lt;==登錄檔設定與 zebra 相同即可 [root@www ~]# /etc/init.d/ripd start [root@www ~]# chkconfig ripd on [root@www ~]# netstat -tulnp &#124; grep ripd Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:2602 0.0.0.0:* LISTEN 4456/ripd udp 0 0 0.0.0.0:520 0.0.0.0:* 4456/ripd # 新版的 quagga 啟動的 2602 僅在 127.0.0.1,是透過 port 520 來傳遞信息! ``` 基本上,這樣就設定完成一部路由器的 RIP 動態路由協議了!在上頭 ripd.conf 的設定當中, 他會主動以 eth0 及 192.168.1.0/24 這個網域的功能來進行搜索,如此一來,未來你進行任何路由規則的變動, 或者是整個網域的主機 IP 進行更動,你將不需要重新到每部 Router 上更動! 因為這些路由器會自動的更新他們自己的規則喔!嘿嘿!接下來,同樣的動作請你到 [圖 8.3-1](#fig8.3-1) 左邊那部 Router Z2 上面設定一下! 因為整個設定的流程都一樣,所以這里鳥哥就省略啦! * 4\. 檢查 RIP 協議的溝通結果: 在兩部 Linux Router 都設定妥當之后,你可以登入 zebra 去看這兩部主機的路由更新結果喔! 舉例來說,鳥哥登入[圖 8.3-1](#fig8.3-1) 右邊那部 Router Z1 后,并且登入 zebra , 觀察路由會是這樣的情況: ``` [root@www ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.200.0 192.168.1.200 255.255.255.0 UG 2 0 0 eth0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0 # 其實看路由就知道啦!那條有點線的就是新增的路由規則!很清楚! [root@www ~]# telnet localhost 2601 Password: &lt;==不要忘記了密碼啊! www.centos.vbird&gt; show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, &gt; - selected route, * - FIB route K&gt;* 0.0.0.0/0 via 192.168.1.254, eth0 S&gt;* 10.0.0.0/24 [1/0] is directly connected, eth0 C&gt;* 127.0.0.0/8 is directly connected, lo K&gt;* 169.254.0.0/16 is directly connected, eth1 C&gt;* 192.168.1.0/24 is directly connected, eth0 C&gt;* 192.168.100.0/24 is directly connected, eth1 R&gt;* 192.168.200.0/24 [120/2] via 192.168.1.200, eth0, 00:02:43 ``` 如果你有看到上述的字體,嘿嘿!那就是成功啦!那個最左邊的 R 代表的是透過 RIP 通訊協議所設定的路由規則啦! 如此一來,咱們的路由器設定就搞定啰~如果一切都沒有問題,你也想要開機就啟動 zebra, ripd,那么還得要這樣: ``` [root@www ~]# chkconfig zebra on [root@www ~]# chkconfig ripd on ``` 透過這個 quagga 以及 RIPv2 的路由協議的輔助,我們可以輕松的就將路由規則分享到附近區網的其他路由器上頭, 比起單純使用 route 去修改 Linux 的核心路由表,這個動作當然要快速很多!不過,如果是很小型的網絡環境,那么不要使用這個 quagga 啊!因為有點多此一舉的感覺。如果你的企業環境真的有夠大,那么玩一玩這個 quagga 配合一些動態路由協議,嘿嘿!也是可行的啦! **Tips:** 鳥哥差一點被這一版的 ripd.conf 設定內容搞死~因為 CentOS 5.x 以后的版本預設的 RIPv2 會去進行身份驗證,所以原先在 CentOS 4.x 的設定是不能用的,偏偏登錄檔又看不出個所以然..后來查到可以透過 ripd.conf 內的 debug 參數去設定除錯登錄, 才發現 RIPv2 的認證問題!最終 google 一下才解決問題~好累啊! ![](https://box.kancloud.cn/2016-05-13_5735736501917.gif) * * *
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看