2009年04月11日

帰ってきた、おうちでBGP・・・quaggaとVMwareを使って、CCNA,CCNPを何気なく狙う人に(プロローグ)


以前、メルマガで「おうちでBGP」と題した
quaggaを使ってBGPを学ぶ、というコーナーを
やってた時期がありました。

あの当時は、タワー型PCや
ベアボーンPCに、LANカードを2枚,3枚挿して、
Red Hat LinuxやFedoraなどをインストールし、
quaggaを動かしました。

今は、VMwareがあります。

VMwareの仮想マシン・仮想アダプタで、
BGPやOSPFなどのルーティングを学べます。


以前書いていたように、
quaggaのコマンドは、Ciscoのルーターやスイッチの
コマンドと似ています。
(必然的に、Foundaryにも似てるな(^^) )


最近のPCは2GBメモリが当たり前。
ヨドバシなどの家電量販店では、
4GBメモリが当たり前、な時代です。


VMware上の仮想マシンにFedoraをインストールし、
ランレベル3で不要なデーモン類を
片っ端からSTOPさせておけば、
メモリ128MBくらいでも、
大量のBGPスピーカ(BGPを動かしているということ)が
作成できますね。



これは、すごい事です。

LinuxとquaggaとVMwareだけで、
BGPやOSPFを、実機操作しながら、
リアルにルーティングできます。

それも、仮想的とはいえ、
数台レベルで回せます。


まあ、VMwareのところで、少してこづりましたが(^^)。
いや、結構、てこづったな(^^)。

一度動かし始めると、
かなりのことができます。


もう1つのブログと連動させつつ、
ネットワークも学べるLinuxというテーマで、
再度、「おうちでBGP」をやりたいと思います。


しかし、quaggaとVMwareは、すごいな。





R1# show ip bgp
BGP table version is 0, local router ID is 192.168.1.20
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*>i10.10.10.0/24 172.16.1.20 0 100 0 55000 i
*>i172.16.1.0/24 192.168.1.200 0 100 0 i
*> 192.168.0.0 0.0.0.0 0 32768 i
* i192.168.1.0 192.168.1.200 0 100 0 i
*> 0.0.0.0 0 32768 i

Total number of prefixes 4



R1# show ip bgp neighbors
BGP neighbor is 192.168.0.200, remote AS 65000, local AS 60000, external link
BGP version 4, remote router ID 0.0.0.0
BGP state = Active
Last read 00:33:13, hold time is 180, keepalive interval is 60 seconds
Message statistics:
Inq depth is 0
Outq depth is 0
Sent Rcvd
Opens: 0 0
Notifications: 0 0
Updates: 0 0
Keepalives: 0 0
Route Refresh: 0 0
Capability: 0 0
Total: 0 0
Minimum time between advertisement runs is 30 seconds

For address family: IPv4 Unicast
Community attribute sent to this neighbor(both)
0 accepted prefixes

Connections established 0; dropped 0
Last reset never
Next connect timer due in 106 seconds
Read thread: off Write thread: off

BGP neighbor is 192.168.1.200, remote AS 60000, local AS 60000, internal link
BGP version 4, remote router ID 192.168.1.200
BGP state = Established, up for 00:19:21
Last read 00:00:20, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received(old & new)
Address family IPv4 Unicast: advertised and received
Message statistics:
Inq depth is 0
Outq depth is 0
Sent Rcvd
Opens: 1 0
Notifications: 0 0
Updates: 1 2
Keepalives: 21 20
Route Refresh: 0 0
Capability: 0 0
Total: 23 22
Minimum time between advertisement runs is 5 seconds

For address family: IPv4 Unicast
Community attribute sent to this neighbor(both)
3 accepted prefixes

Connections established 1; dropped 0
Last reset never
Local host: 192.168.1.20, Local port: 179
Foreign host: 192.168.1.200, Foreign port: 34905
Nexthop: 192.168.1.20
Nexthop global: fe80::20c:29ff:fee2:6a53
Nexthop local: ::
BGP connection: non shared network
Read thread: on Write thread: off


R1# show ip bgp scan
BGP scan is running
BGP scan interval is 60
Current BGP nexthop cache:
172.16.1.20 valid [IGP metric 0]
192.168.1.200 valid [IGP metric 1]
BGP connected route:
192.168.0.0/24
192.168.1.0/24



R1# show ip bgp attribute-info
attr[2] nexthop 0.0.0.0
attr[2] nexthop 192.168.1.200
attr[2] nexthop 192.168.1.20
attr[1] nexthop 172.16.1.20



R4# show ip bgp summary
BGP router identifier 192.168.1.200, local AS number 60000
RIB entries 7, using 448 bytes of memory
Peers 2, using 5016 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.1.20 4 55000 31 33 0 0 0 00:28:16 2
192.168.1.20 4 60000 31 33 0 0 0 00:28:14 2

Total number of neighbors 2



# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

K>* 0.0.0.0/0 via 192.168.1.20, eth2
B>* 10.10.10.0/24 [20/0] via 172.16.1.20, eth3, 00:34:38
C>* 127.0.0.0/8 is directly connected, lo
K>* 169.254.0.0/16 is directly connected, eth3
C>* 172.16.1.0/24 is directly connected, eth3
B>* 192.168.0.0/24 [200/0] via 192.168.1.20, eth2, 00:34:37
C>* 192.168.1.0/24 is directly connected, eth2

アドミニストレーティブディスタンスの
20と200も表示されてますね。



関心のある方は、
yum -y install quagga ですぐにインストールできるので、
試してみて下さい。


ちなみに、bgpdを起動した場合と
zebraデーモンを起動した場合の接続ポートは、
違います。

zebra:2601番ポート
bgpd:2605番ポート

ゆえ、telnet 0 2601 とか telnet 0 2605で
アクセスすることになります。


show ip routeは、2601ポートへのアクセス時に
使用可能です。

show ip bgpとかshow ip bgp summaryなどは、
2605番ポートアクセスト時に、
使用可能です。

既に、Ciscoルーターを触っている人は、
違和感があるかもしれませんが、慣れれば
どうってことありません。



■設定ファイルを作成しておくと
 便利です。


/etc/quagga/zebra.conf や

/etc/quagga/bgpd.conf を見ると、
Ciscoを触っていた人は、
理解できると思います。

zebra.confはpassword設定行も書かれていないはずなので、
password zebraなどを記述しておくと
良いでしょう。



ccnpont.jpg
徹底攻略 Cisco CCNP ONT 問題集 [642-845J]
出版社:インプレスジャパン
価格:¥3,990(税込)


このリンクに「要点解説IPルーティング入門」がありますが、
ルーティング全般をわかりやすく
かつ、実機操作も含んでルーティングを学びたい人は、
まず、オススメです。

最初の1冊としても、長く使うにしても、
すばらしいコストパフォーマンスです。


posted by アンドレアス at 13:31| BGPを動かす | このブログの読者になる | 更新情報をチェックする

2007年05月17日

BGPピア

荒:帰る前に、BGPです。わーい(嬉しい顔)


  show ip bgp neighborsでピアの
  確認をしてみましょう。

奥:はい。手(パー)



bind1.example.com# show ip bgp neighbors

BGP neighbor is 192.168.1.101, remote AS 65101, local AS 65014, external link
BGP version 4, remote router ID 192.168.1.101
BGP state = Established, up for 00:21:41
Last read 00:00:41, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received(old & new)
Address family IPv4 Unicast: advertised and received
Received 24 messages, 0 notifications, 0 in queue
Sent 24 messages, 0 notifications, 0 in queue
Route refresh request: received 0, sent 0
Minimum time between advertisement runs is 30 seconds

For address family: IPv4 Unicast
Community attribute sent to this neighbor(both)
2 accepted prefixes

Connections established 1; dropped 0
Last reset never
Local host: 192.168.1.14, Local port: 56789
Foreign host: 192.168.1.101, Foreign port: 179
Nexthop: 192.168.1.14
Nexthop global: fe80::20c:29ff:feaf:c930
Nexthop local: ::
BGP connection: non shared network
Read thread: on Write thread: off




荒:太字部分に、まずは注目。

  Establishedは、これからもよく出る表現です。


  今は、ピアとして
  UPDATEメッセージの交換も完了してます。

  相手(ピア)が生きているかを確認するため、
  KEEPALIVEメッセージを送信してますよ、

  というのがわかります。

奥:はい。

  こっちは、難しそうですねぇー。



■参考

「要点解説 IPルーティング入門」(P458やP488など)
 http://homepage3.nifty.com/sysaho/ccnp.html


posted by アンドレアス at 22:16| Comment(0) | TrackBack(0) | BGPを動かす | このブログの読者になる | 更新情報をチェックする

2007年05月12日

BGPの基本設定1

(RIPが正常動作せず、頭を抱える2人)


荒:うーん。

奥:うーーん、何でしょうねぇー。

  Webとか見ると、バージョンアップで
  RIPの認証を不可にさせたりして
  成功した、という人もいますね。

荒:さっき、
  version 1コマンドを入れても、
  うまくいかなかったしなー

奥:先にBGPいきますか?

荒:そうだね。




・・・ということで、BGPを動かすことに。



荒:では、いつも通り準備をしましょう。

奥:こんな感じですね。


■BGPを動作させる準備

1.設定ファイル

  /etc/quagga/bgpd.conf


  いつものように、
  サンプルファイル(bgpd.conf.sample)を
  コピーして、作成します。


2.bgpd(BGPデーモンの起動)

  /etc/rc.d/init.d/bgpd start


今後、ずっと動作させても良いならば、
  
  chkconfig --level 2345 zebra on
  chkconfig --level 2345 bgpd on


  こうしておくと、便利です。


3.zebraデーモンの起動

  既に、皆さん動かされていますよね?


荒:じゃあ、始めます。

  今回も構成図は、これです。



■構成図(同じです)

ホスト名:bind1
eth0: 192.168.1.14/24
|
|
スイッチングハブ
|
 |
eth0: 192.168.1.101/24
ホスト名:redhat eth2:192.168.3.101/24
eth1: 192.168.2.101/24
|
|



奥:いつもと同じく、telnetで。

  bgpd(BGPデーモン)のポートは、
  2605番ポートになります。


[root@bind1 quagga]# telnet 127.0.0.1 2605
Trying 127.0.0.1...
Connected to bind1.example.com (127.0.0.1).
Escape character is '^]'.

Hello, this is Quagga (version 0.98.6).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password: <--123 と入力
bind1.example.com> en
Password: <--123 と入力
bind1.example.com# conf t


奥:ここからですね。

荒:ホスト名:bind1側は、AS 65014 でいきます。

  IPアドレスの14を使って、わかりやすいように。

  ホスト名:redhat側は、AS 65101 でいきましょう。

  OSPFやRIPと大きく違う点です。


  BGPの場合、「ネイバーを指定する」

  いるかいないかわからないけど、
  ブロードキャストを吐いたり、
  マルチキャストを叫んでみたりはしない。


  これが大きな特徴ですね。



奥:フムフム・・・。

  では、設定します。


bind1.example.com(config)# router bgp 65014


bind1.example.com(config-router)# neighbor 192.168.1.101 remote-as 101

bind1.example.com(config-router)# network 192.168.1.0


荒:配信したい(伝えたい)ネットワークを
  指定する点もOSPFなんかと違うところです。


今回は、192.168.1.0は、
  なしでもよいと思うけど・・。


  networkコマンドの意味の違いは、
  後で、竹内君や大崎さんがいる時に、
  もう少し、具体的にやりますね。


奥:はーーい。

  では、同じ感じで、redhat側も設定します。


redhat.example.com(config)# router bgp 65101


redhat.example.com(config-router)# neighbor 192.168.1.14 remote-as 14

redhat.example.com(config-router)# network 192.168.1.0
redhat.example.com(config-router)# network 192.168.2.0
redhat.example.com(config-router)# network 192.168.3.0



奥:できました。


荒:じゃあ、show ip bgp してみますか。

奥:はい。

  おーーっ、192.168.2.0と192.168.3.0の情報が
  もう来てますね。

  192.168.1.101へ行けって、ことですよね?

荒:うん。



bind1.example.com# show ip bgp
BGP table version is 0, local router ID is 192.168.1.14
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 192.168.2.0 192.168.1.101 0 0 101 i
*> 192.168.3.0 192.168.1.101 0 0 101 i

Total number of prefixes 2



奥:redhatの方は、どんな感じかしら。。


redhat.example.com# show ip bgp
BGP table version is 0, local router ID is 192.168.1.101
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 192.168.2.0 0.0.0.0 0 32768 i
*> 192.168.3.0 0.0.0.0 0 32768 i

Total number of prefixes 2




荒:次は、

  show ip bgp summaryとかも、うってみようか。


奥:はい。

  順調ですねぇー。わーい(嬉しい顔)

posted by アンドレアス at 15:16| Comment(0) | TrackBack(0) | BGPを動かす | このブログの読者になる | 更新情報をチェックする