OSPFの設定 - Catalyst
CatalystでOSPFを設定するコマンドの使い方について説明したページです。OSPFの動作や意味については「OSPF」をご参照下さい。
OSPFの基本設定
以下の図を例に設定を説明します。
スイッチA〜B間でOSPFにより経路情報をやりとりできるように設定を行います。
最初にスイッチAの設定ですが、OSPFの設定をする前にVLANにアドレスを設定したり、インターフェースにVLANを割り当てたり、ルーティングを有効にする必要があります。
Switch# configure terminal Switch(config)# interface vlan 10 Switch(config-if)# ip address 172.16.1.1 255.255.255.0 Switch(config-if)# no shutdown Switch(config-if)# exit Switch(config)# interface vlan 20 Switch(config-if)# ip address 172.16.2.1 255.255.255.0 Switch(config-if)# no shutdown Switch(config-if)# exit Switch(config)# interface gigabitethernet1/0/1 Switch(config-if)# switchport Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 10 Switch(config-if)# no shutdown Switch(config-if)# exit Switch(config)# interface gigabitethernet1/0/2 Switch(config-if)# switchport Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 20 Switch(config-if)# no shutdown Switch(config-if)# exit Switch(config)# ip routing
上記は「スタティックルーティングの設定」で示した通り、VLAN間でルーティング出来るようにする設定です。
スイッチAのOSPFの設定は以下の通りです。
Switch(config)# router ospf 1 Switch(config-rouer)# network 172.16.0.0 0.0.255.255 area 0 Switch(config-rouer)# exit
router ospfの後の1はプロセス番号です。OSPFを複数動作させる場合はrouter ospf 2等複数指定出来ますが、企業や研究所のネットワークでは通常は1つだけ動作させると思います。
networkはOSPFを使うネットワークを指定します。例えば192.168.1.0のネットワークでも使う場合は別途network 192.168.1.0 0.0.0.255 area 0を指定します。エリアを分ける場合は異なるエリア番号を設定するとABRになります。指定は複数可能です。
スイッチBでも設定は同様です。
ルーティングテーブルの確認
ルーティングテーブルはshow ip routeコマンドで確認出来ます。
Switch# show ip route
Codes:L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF external type 2
E1 -OSPF external type 1, E2 - OSPF external type 2
i IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, + - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H -NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
172.16.0.0 is variably subnetted, 3 subnets, 2 masks
C 172.16.1.0/24 is directly connected, Vlan10
L 172.16.1.1/32 is directly connected, Vlan10
C 172.16.2.0/24 is directly connected, Vlan20
L 172.16.2.1/32 is directly connected, Vlan20
O 172.16.3.0/24 [110/2] via 192.168.2.2, 00:00:20 Vlan20
上記で赤字部分のOがOSPFで受信した経路を示しています。OSPFを設定した後は、このOの経路が表示されている事を確認します。
因みに、Cは自身が接続されているサブネット、Lは自身に設定されたIPアドレスを示します。
ルーティングテーブルに表示されない場合、原因は様々ですが、フィルタリングによりOSPFの制御パケットが遮断されている可能性もあります。大丈夫と思っても一旦フィルタリングを外してみると反映される事も多い気がします。
コストの設定
以下の図のようにスイッチAからスイッチDに至る経路が2通りあり、スイッチBの経路を優先したい場合を例にコストを追加する設定を示します。
インターフェースやVLAN、OSPFの設定はこれまでと同じです。スイッチAではコストを追加するために以下の設定を追加します。
Switch(config)# interface vlan20 Switch(config-if)# ip ospf cost 100 Switch(config-if)# exit
インターフェースがギガビットイーサネットだった場合、コストのデフォルトは1ですが、上記の設定で100に設定されます。このため、スイッチAはスイッチCの経路が遠いと判断します。
スイッチDでも同様の設定をすればスイッチA〜D間は行きも帰りもスイッチBの経路が優先されます。
尚、Catalystでは100Mbpsでも1000Mbpsでもデフォルトでコストが1になります。これは以下の式で計算しているためです。
コスト=100Mbps/帯域 ※小数点以下繰り上げ
コストはインターフェース単位で設定しても大丈夫ですが、1000Base-LXをActive、100Base-FXをStandbyと一括して設定したい場合は以下のようにします。
Switch(config)# router ospf 1 Switch(config-router)# auto-cost reference-bandwidth 1000 Switch(config-router)# exit
この設定で計算式はコスト=1000Mbps/帯域になるため、1000Base-LXはコスト1、100Base-FXはコスト10になり、1000Base-LXの方の経路が優先されます。10GBase-SR等10Gbps以上のインターフェースを使う場合は10000等に設定が必要です。
スタティックルートやRIPの経路を反映する設定
以下の図のようにスイッチBで172.16.1.0/24への経路をスタティックルートで設定しているとします。
スイッチBはスイッチAとの間ではOSPFでやりとりしているため、このスタティックルートもOSPFで配信したい場合はスイッチBで以下の設定を追加します。
Switch(config)# ip route 172.16.1.0 255.255.255.0 172.16.2.1 Switch(config)# router ospf 1 Switch(config-router)# redistribute static metric 10 subnets Switch(config-router)# exit
上記ではスタティックルート172.16.1.0をコスト10でOSPFの送信を行う設定をしています。metricの後の数字を変える事でコストを変更出来ます。
デフォルトルートを再配布する時は設定を追加する必要があります。
Switch(config)# ip route 0.0.0.0 0.0.0.0 172.16.2.1 Switch(config)# router ospf 1 Switch(config-router)# default-information originate Switch(config-router)# exit
redistribute staticではデフォルトルートはOSPFに再配布されないため、赤字部分の設定が必要です。
又、スタティックルートではなくRIPを再配布する場合は以下のように設定します。
Switch(config)# router rip
Switch(config-router)# network 172.16.0.0
Switch(config)# router ospf 1
Switch(config-router)# redistribute rip metric 10 subnets
Switch(config-router)# exit
スタティックルートの時と設定の仕方は同じで赤字部分の指定がripに変わります。
RIPで受信した経路をOSPFで流す際にフィルタリングしたい場合は以下のように設定します。
Switch(config)# access-list 1 permit 172.16.3.0 0.0.0.255 Switch(config)# route-map rip-to-ospf deny 10 Switch(config-route-map)# match ip address 1 Switch(config-route-map)# exit Switch(config)# route-map rip-to-ospf permit 20 Switch(config-route-map)# exit Switch(config)# router ospf 1 Switch(config-router)# redistribute rip metric 1 route-map rip-to-ospf subnets Switch(config-router)# exit
上記の設定でRIPで受信した内、172.16.3.0/24の経路を除きOSPFで送信するようになります。
留意点としてはaccess-listでpermitになっていてroute-mapでdenyになっている点です。access-listでは172.16.3.0/24をpermitして限定し、route-mapではそれを拒否する事でその経路を除く設定になっています。
これはスタティックルートに対しても設定可能で以下のようになります。
Switch(config)# access-list 2 permit 172.16.4.0 0.0.0.255 Switch(config)# route-map static-ospf deny 10 Switch(config-route-map)# match ip address 2 Switch(config-route-map)# exit Switch(config)# route-map static-ospf permit 20 Switch(config-route-map)# exit Switch(config)# router ospf 1 Switch(config-router)# redistribute static metric 10 route-map static-ospf subnets Switch(config-router)# exit
上記の設定でスタティックルートからの再配布は172.16.4.0/24を除き再配送されます。
尚、OSPFでは再配布された経路はデフォルトではOSPFエリア内でコストが加算されません。これはデフォルトでメトリックタイプが2に設定されているためです。
エリア内でコストを加算するためには以下のようにメトリックタイプを1に設定する必要があります。
Switch(config)# router ospf 1 Switch(config-router)# redistribute rip metric 1 metric-type 1 subnets Switch(config-router)# exit
上記でripからの再配布はエリア内でコストが加算されるようになります。又、route-mapとも併用可能です。
デフォルトルートを常に送信
ルーティングテーブルにデフォルトルートがあればOSPFで送信しますが、デフォルトルートがない場合でも送信したい場合があります。
例えば以下の図のようにスイッチBのデフォルトルートはスタティックルーティングやRIP等でスイッチAに向いており、スイッチCへはスイッチBから再配送によりOSPFでデフォルトルートだけを送信しているとします。
この場合、スイッチCからスイッチDへの通信でもデフォルトルートを使っていて、スイッチAがダウンするとスイッチBのデフォルトルートがルーティングテーブルからなくなり、スイッチCのデフォルトルートも消えてしまう可能性があります。スイッチCのデフォルトルートが消えるとスイッチDとの間で通信不可になってしまいますが、これを防ぐ為にスイッチBからスイッチCに常にデフォルトルートを配信する事が出来ます。
スイッチBの設定は以下の通りです。インターフェースやVLAN、OSPFの初期設定は省略しています。
Switch(config)# router ospf 1 Switch(config-router)# default-information originate always Switch(config-router)# exit
この設定でスイッチAがダウンしてスイッチBのデフォルトルートがルーティングテーブルからなくなっても、スイッチBからスイッチCに対してデフォルトルートが送信されます。
default-information originateはRIPでデフォルトルートを送信する際にも使われますが、OSPFの時と若干意味合いが異なります。以下にRIPとOSPFでの違いをまとめます。
項 | コマンド | 説明 |
---|---|---|
RIP | default-information originate | デフォルトルートがない場合でも常に送信 |
OSPF | default-information originate | デフォルトルートがない場合は送信しない |
default-information originate always | デフォルトルートがない場合でも常に送信 |
つまり、OSPFではdefault-information originateがないとデフォルトルートを再配布しませんが、RIPではredistributeの設定でデフォルトルートを含めたスタティックルート全体を再配布出来ます。
デフォルトルートがない場合でも配布したい場合はRIPではdefault-information originateになりますが、OSPFではdefault-information originate alwaysになります。
再配布された経路の確認
再配布された経路はルーティングテーブルで確認出来ます。
Switch# show ip route Codes:L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF external type 2 E1 -OSPF external type 1, E2 - OSPF external type 2 i IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, + - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H -NHRP, l - LISP + - replicated route, % - next hop override Gateway of last resort is not set 172.16.0.0 is variably subnetted, 3 subnets, 2 masks C 172.16.1.0/24 is directly connected, Vlan10 L 172.16.1.1/32 is directly connected, Vlan10 C 172.16.2.0/24 is directly connected, Vlan20 L 172.16.2.1/32 is directly connected, Vlan20 O E1 172.16.3.0/24 [110/21] via 192.168.2.2, 00:00:20 Vlan20 O E2 172.16.4.0/24 [110/20] via 192.168.1.1, 00:00:20 Vlan30
上記で赤字部分はOの横にE1と付いています。これはメトリックタイプ1で再配布された経路です。緑の部分はOの横にE2が付いており、これがメトリックタイプ2で配布された経路です。
OSPFでHelloパケットを送信しないインターフェースの設定
OSPFでHelloパケットを送信したくないインターフェースがある場合は以下のコマンドを追加します。
Switch(config)# router ospf 1 Switch(config-router)# passive-interface vlan10 Switch(config-router)# exit
上記はvlan10にHelloパケットを流さない設定ですがOSPF自体は有効になっています。RIPでやりとりするインターフェース等、OSPFが不要なインターフェースに対してフィルタリングの設定をする事なく簡単にOSPFを事実上停止出来ます。
尚、passive-interface defaultと設定するとデフォルトでHelloパケットを流さないように出来ます。OSPFのやりとりが必要なVLANに対してはno passive interface vlan10等とする事で指定したVLANだけ有効になります。
これはVLANインターフェースが多いエッジスイッチでコアスイッチと接続するVLANだけOSPFでやりとりしたい場合等、一部だけ有効にしたい時に便利です。
アドレスの集約
エリア間は再配布のような設定をしなくてもルーティング情報のやりとりが行われますが、サブネット単位で経路が渡されます。
以下の図のようにエリア0と1がある場合でエリア0のアドレスを集約してエリア1に流したいとします。
この場合、スイッチCで以下の設定を追加します。
Switch(config)# router ospf 1 Switch(config-router)# area 0 range 172.16.32.0 255.255.224.0 Switch(config-router)# exit
この設定によりエリア1では172.16.32.0/19の経路に集約してルーティングテーブルに反映されます。
又、RIP等から経路の再配布を行った時にアドレスの集約を行う場合は、経路の再配布の設定と共にASBRのスイッチで以下の設定を追加します。
Switch(config)# router ospf 1 Switch(config-router)# summary-address 172.16.32.0 255.255.224.0 Switch(config-router)# exit
この設定により経路の再配布時に172.16.32.0〜172.16.63.0/24というサブネット単位ではなく、172.16.32.0/19という集約されたネットワーク範囲で経路が再配布されます。
OSPF設定時の考慮点
OSPFを動作させるだけであれば、最初に示した基本設定を行えば動作します。
ある程度の規模になると、コアスイッチを2台でアクティブ、スタンバイにするためコストの変更が必要であったり、RIPやスタティックルーティングと併用している場合もあり、上記で説明したオプション設定のどれか、又は複数が必要になります。
- 応用編「OSPF」