CentOSでBGPルータを作成するチュートリアル
Quagaはオープンソースルーティングソフトウェアキットです。このチュートリアルでは、LinuxシステムをBGPルータにする方法と、Quagaを使用して、BGPを他のBGPルータと対等にする方法を説明します。
詳細に入る前に、BGPの背景知識が必要です。境界ゲートウェイプロトコル(すなわちBGP)は、インターネットのドメイン間ルーティングプロトコルの実際の基準である。BGP用語では、世界のインターネットは何千もの関連自治システム(AS)で構成されており、その中のASは特定の事業者が提供するネットワーク管理ドメインを代表している(ジョージ・ブッシュ元大統領は自分のAS番号を持っているという)。
ネットワークをグローバルにルーティングできるように、各ASは、インターネット上で他のASにどのように到達するかを知る必要がある。このときBGPが出てきてこの役を演じる必要があります。BGPはASが隣接するASとルーティング情報を交換する言語である.これらのルーティング情報は、通常、BGP回線またはBGPプレフィックスと呼ばれる。AS番号(ASN;グローバル一意番号)および関連するIPアドレスブロックを含む。すべてのBGP回線が現地のBGPルーティングテーブルによって学習され、記録されると、各ASはインターネットの任意のパブリックネットワークIPにどのように到達するかを知るだろう。シナリオのテスト
キャリアAは、キャリアBとピアツーピアにルーティングを交換するためにBGPを確立したいと仮定する。これらのAS番号とIPアドレス空間の詳細は以下の通りである。
キャリアA:ASN(100)、IPアドレス空間(100.100.0.0/22)、BGPルータeth 1 NICに割り当てられたIPアドレス(100.100.1.1)
キャリアB:ASN(200)、IPアドレス空間(200.200.0.0/22)、BGPルータeth 1 NICに割り当てられたIPアドレス(200.200.1.1)CentOSにQuaggaをインストールする
Quaggaがまだインストールされていない場合はyumを使用してQuaggaをインストールできます。# yum install quagga
CentOS 7システムを使用している場合は、SELinuxを設定するためにポリシーを適用する必要があります。それ以外の場合、SElinuxはZebraデーモンの構成ディレクトリへの書き込みを阻止します。CentOS 6を使用している場合は、このステップをスキップできます。# setsebool -P zebra_write_config 1
Quagaソフトウェアキットには、連携して作業できるいくつかのデーモンプロセスが含まれています。BGPルーティングについては,以下の2つのデーモンプロセスの構築に重点を置く.
Zebra:カーネルインタフェースと静的ルーティングのためのコアデーモンプロセス。
BGPd:BGPデーモン.
ログの設定コードのコピー
# cp /usr/share/doc/quagga-XXXXX/zebra.conf.sample /etc/quagga/zebra.confコードのコピー
# service zebra startCentOS 7システムでは、
コードのコピー
# systemctl start zebraQuaggaはvtysh特有のコマンドラインツールを提供しており、CiscoやJuniperなどのルータメーカーと互換性があり、サポートされているコマンドを入力することができます。vtysh shellを使用して、チュートリアルの残りの部分でBGPルーティングを構成します。
vtysh shellコマンドを起動し、次のように入力します。# vtysh
プロンプトはホスト名に変更され、vtysh shellにいることを示します。Router-A#
次のコマンドを使用して、Zebraのログファイルを構成します。Router-A(config)# log file /var/log/quagga/quagga.log
Router-A(config)# exitコードのコピー
Router-A# write
ピアIPアドレスの設定コードのコピー
Router-A#show interface#インタフェース情報を表示. . . . .
Interface eth1 is up, line protocol detection is disabledeth 0インタフェースのパラメータを設定するには、次の手順に従います。
コードのコピー
site-A-RTR# configure terminal
site-A-RTR(config)# interface eth0
site-A-RTR(config-if)# ip address 100.100.0.1/30site-A-RTR(config-if)# no shutdown
site-A-RTR(config-if)# exit
eth 1インタフェースのパラメータの構成を続行します。site-A-RTR(config)# interface eth1
site-A-RTR(config-if)# description "test ip from provider A network"
site-A-RTR(config-if)# no shutdown構成を確認します。
コードのコピーInterface eth0 is up, line protocol detection is disabled
Description: "to Router-B"Interface eth1 is up, line protocol detection is disabled
Description: "test ip from provider A network"Router-A#show interface description#表示インタフェースの説明
Interface Status Protocol Descriptioneth1 up unknown "test ip from provider A network"
すべてが正常に見える場合は、構成を保存することを忘れないでください。
コードのコピー同様に、ルータBでは一度構成を繰り返す。
私たちが次のステップに進む前に、お互いのIPがpingできることを確認します。Router-A# ping 100.100.0.2
PING 100.100.0.2 (100.100.0.2) 56(84) bytes of data.BGPピアの設定
QuagaデーモンプロセスがBGPを担当するサービスはbgpdと呼ばれています。まず、プロファイルを用意します。コードのコピー
# cp /usr/share/doc/quagga-XXXXXXX/bgpd.conf.sample /etc/quagga/bgpd.conf
CentOS 6システムでは、# service bgpd start
# chkconfig bgpd on# systemctl start bgpd
# systemctl enable bgpdコードのコピー
# vtyshコードのコピー
Router-A# show running-configrouter bgp 7675
bgp router-id 200.200.1.1事前に構成されたBGPセッションを削除し、代わりに必要なセッションを確立します。
コードのコピー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)# exit
Router-A# write
ルータBは同様に構成され、以下の構成が参考となる。Router-B# configure terminal
Router-B(config)# no router bgp 7675