Quaggaは、UNIX/Linuxプラットフォームで動くルーティングソフトウェアです。
OSPF、BGP、RIP等のプロトコルが実装されていて、GNU Zebraから派生したソフトウェアだとか。
某所の環境が、ロードバランサを設置(というかLBに仮想IPアドレスを配布)すると上位のルーターにそのLBへのルートが必要となるネットワーク構成だったので、ソフトウェアベースのLinuxロードバランサに、こいつを入れて、OSPFで動的な経路広報(ダイナミックルーティング)ができるか検証してみました。
インストール
今回、OSはCentOS 6系で動かしてみました。
CentOS 6系で、Quaggaはyumリポジトリに入っていますので、
# yum -y install quagga
でインストールできると思います。
僕は、最新版で動作検証してみたかったので、公式のダウンロードサイトから最新版(現在は、0.99.22.4)のソースパッケージを取ってきて、RPMファイルを作ってインストールしてみました。(specファイルも同梱されています。)
設定
設定ファイルは、"/etc/quagga"ディレクトリ配下にあります。(各種サンプルのファイルがおいてある)
# ll /etc/quagga/ 合計 44 -rw-r--r-- 1 root root 655 12月 4 18:54 2013 babeld.conf.sample -rw-r--r-- 1 root root 566 12月 4 18:54 2013 bgpd.conf.sample -rw-r--r-- 1 root root 2801 12月 4 18:54 2013 bgpd.conf.sample2 -rw-r--r-- 1 root root 789 12月 4 18:54 2013 isisd.conf.sample -rw-r--r-- 1 root root 1110 12月 4 18:54 2013 ospf6d.conf.sample -rw-r--r-- 1 root root 182 12月 4 18:54 2013 ospfd.conf.sample -rw-r--r-- 1 root root 406 12月 4 18:54 2013 ripd.conf.sample -rw-r--r-- 1 root root 390 12月 4 18:54 2013 ripngd.conf.sample -rw-r----- 1 root root 0 12月 5 10:43 2013 vtysh.conf -rwxr-x--- 1 quagga quaggavty 128 12月 4 18:54 2013 vtysh.conf.sample -rw-r----- 1 quagga quagga 24 12月 5 10:43 2013 zebra.conf -rw-r--r-- 1 root root 369 12月 4 18:54 2013 zebra.conf.sample
今回は、OSPFをしゃべらせたいので、/etc/quagga配下に"zebra.conf"と"ospfd.conf"を作成します。
とりあえず試しに、両ファイルとも以下の内容で作成します。
(とりあえず↓だけ書いておけばログインできるようになる。)
hostname test-router password zebra log stdout
で、次にzebraとospfdを起動させます。
# /etc/init.d/zebra start # /etc/init.d/ospfd start
ログインしてOSPFの設定
localhost(zebraやospfdを稼動させたマシン)のLISTENしている各ポートへtelnetでアクセスします。
公式ドキュメントによると、以下記載の通り。
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 isisd 2608/tcp # ISISd vty
今回は、OSPFの設定がしたいので、2604ポートへアクセスします。
# telnet localhost 2604 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Hello, this is Quagga (version 0.99.22.4). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: test-router>
"ospfd.conf"で設定したパスワードを使ってログインできました。
test-router> en test-router# sh run Current configuration: ! hostname test-router password zebra log stdout ! ! ! interface bond0 ! interface bond0.88 ! interface em1 ! interface em2 ! interface lo ! interface p2p1 ! interface p2p2 ! line vty ! end test-router#
enableして(必要に応じてenable passwordを設定してくだされ。)、"show running-config"とかで、現在の設定状況とかも確認できます。
さて、OSPFの設定をしてしまいましょう。以下のような感じでコマンドを打つだけです。
test-router> en test-router# conf t test-router(config)# router ospf test-router(config-router)# redistribute connected test-router(config-router)# network 10.255.255.24/29 area 0.0.0.0 test-router(config-router)# end test-router# write memory Configuration saved to /etc/quagga/ospfd.conf test-router#
今回は自身が持っている仮想IPアドレス(VIP)を経路広報したいので、"redistribute connected"をつけて設定しています。
最後に、"write memory"しておけば、設定ファイルに保存されます。
こんな感じで、QuaggaはCISCOのiOSライクなコマンドラインになっているので、普段ネットワーク機器に慣れている方はとっつきやすいと思います。
動作確認
さて、それでは経路が広報されているか確認しましょう。
既にOSPFでしゃべっているルータがあれば、そこで確認すれば良いですし、もう1台サーバを用意して、そこで↑と同じような内容でソフトウェアルータを構築して、確認してもOKです。
Before
another-router> show ip ospf route ============ OSPF network routing table ============ N 10.255.255.24/29 [10] area: 0.0.0.0 directly attached to bond0.88 N 10.255.255.30/32 [20] area: 0.0.0.0 via 10.255.255.28, bond0.88 ============ OSPF router routing table ============= ============ OSPF external routing table ===========
After
another-router> show ip ospf route ============ OSPF network routing table ============ N 10.255.255.24/29 [10] area: 0.0.0.0 directly attached to bond0.88 N 10.255.255.30/32 [20] area: 0.0.0.0 via 10.255.255.28, bond0.88 ============ OSPF router routing table ============= R 10.255.255.153 [10] area: 0.0.0.0, ASBR via 10.255.255.28, bond0.88 ============ OSPF external routing table =========== N E2 10.48.0.0/19 [10/20] tag: 0 via 10.255.255.28, bond0.88 N E2 10.50.1.60/32 [10/20] tag: 0 via 10.255.255.28, bond0.88 N E2 10.50.1.61/32 [10/20] tag: 0 via 10.255.255.28, bond0.88 N E2 10.50.1.62/32 [10/20] tag: 0 via 10.255.255.28, bond0.88 N E2 10.50.1.63/32 [10/20] tag: 0 via 10.255.255.28, bond0.88 N E2 10.255.255.152/30 [10/20] tag: 0 via 10.255.255.28, bond0.88
この通り、経路が広報されて、ルーティングテーブルに追加されていることが確認できます。
ちなみに
"write memory"して保存された設定ファイル(ospfd.conf)は以下の通りです。
! ! Zebra configuration saved from vty ! 2014/01/07 18:25:29 ! hostname test-router password zebra log stdout ! ! ! interface bond0 ! interface bond0.88 ! interface em1 ! interface em2 ! interface lo ! interface p2p1 ! interface p2p2 ! router ospf redistribute connected network 10.255.255.24/29 area 0.0.0.0 ! line vty !
最初から、こんな感じで内容を記載しておけば、設定時にコマンドを打つ必要もないのですが。そこは好みで。
今日はこの辺まで。それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́
- 作者: 山川秀人,水谷昭博,亀野英孝,森明治
- 出版社/メーカー: オーム社
- 発売日: 2007/02/24
- メディア: 大型本
- クリック: 28回
- この商品を含むブログ (6件) を見る
- 作者: 竹下隆史,村山公保,荒井透,苅田幸雄
- 出版社/メーカー: オーム社
- 発売日: 2012/02/25
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 34回
- この商品を含むブログ (37件) を見る