# IP / 経路制御

本製品は以下のIPユニキャスト経路制御方式に対応しています。

- スタティックルーティング

また、IPアドレスやTCP/UDPポートなどさまざまな情報に基づいてIPパケットの転送先を決定するポリシーベースルーティング機能も備えています。
ここでは、スタティックルーティングの設定手順について解説します。関連機能については以下のセクションをご覧ください。

- ポリシーベースルーティング

スタティックルーティング（静的経路制御）は、管理者が経路情報を手動で登録するもっとも基本的な経路制御方式です。静的経路には次の種類があります。

- インターフェース経路
- スタティック経路

Note

ICMP Redirect（IPv4/IPv6）の送受信は未サポートです。

## インターフェース経路

本製品に直接接続されているIPネットワークへの経路情報です。ip addressコマンドでインターフェースにIPアドレスを割り当てると、該当インターフェース配下のネットワークに対するインターフェース経路がIP経路表に自動登録されます。たとえば、次のコマンドを実行すると、

    awplus(config)# interface eth1
    awplus(config-if)# ip address 192.168.10.1/24

次のような経路情報が自動的に登録されます。

    awplus(config-if)# do show ip route database
    Codes: C - connected, S - static
           > - selected route, * - FIB route, p - stale info

    C    *> 192.168.10.0/24 is directly connected, eth1

ここで「192.168.10.0/24 is directly connected, eth1」は、「192.168.10.0/24がeth1インターフェースに直接接続されている」の意味になります。また、行頭の「C」も同じように「connected」、すなわち「（直接）接続されている」の省略記号です。「*>」は、該当経路が192.168.10.0/24への最適な経路であり、実際のパケット転送判断に使用されていることを示します。
インターフェース経路は「直接接続されているネットワークへの経路（route to directly connected network）」ですので、「connected経路」、「直結経路」、「ダイレクト経路」などと呼ぶこともあります。
ここでは例として、2つのインターフェースにIPアドレスを割り当て、インターフェース間でIPパケットが転送されるよう設定してみます。

1. 各インターフェースにIPアドレスを割り当てます。

       awplus(config)# interface eth1
       awplus(config-if)# ip address 192.168.10.1/24
       awplus(config-if)# exit
       awplus(config)# interface eth2
       awplus(config-if)# ip address 192.168.20.1/24
       awplus(config-if)# exit

以上で設定は完了です。IP経路表を確認してみましょう。

    awplus(config-if)# do show ip route database
    Codes: C - connected, S - static
           > - selected route, * - FIB route, p - stale info

    C    *> 192.168.10.0/24 is directly connected, eth1
    C    *> 192.168.20.0/24 is directly connected, eth2

eth1とeth2のインターフェース経路が登録されているのがわかります。

## スタティック経路

ネットワーク上に他のルーターが存在するような場合は、ip routeコマンドを使って、ルーターの先にあるネットワーク（直接接続されていないネットワーク）への経路を手動で登録することができます。このようにして手動登録した経路をスタティック経路と呼びます。
スタティック経路を登録するには、最低限次の情報が必要です。

- 宛先のネットワークアドレス（IPアドレスとマスク長で指定する）
- 宛先への経路上にある最初のルーター（ネクストホップルーター）のIPアドレス

### 通常のスタティック経路

ここでは例として、次のようなネットワークにおけるルーターAとBの設定を示します。

#### ルーターA

1. 各インターフェースにIPアドレスを割り当てます。これにより、直接接続されているネットワーク192.168.10.0/24と192.168.20.0/24へのインターフェース経路が自動登録されます。

       RouterA(config)# interface eth1
       RouterA(config-if)# ip address 192.168.10.1/24
       RouterA(config-if)# exit
       RouterA(config)# interface eth2
       RouterA(config-if)# ip address 192.168.20.1/24
       RouterA(config-if)# exit

2. 直接接続されていないネットワーク192.168.30.0/24へのスタティック経路を登録します。同ネットワーク宛てのパケットは、ルーターBのeth2インターフェース（192.168.20.2）に転送します。

       RouterA(config)# ip route 192.168.30.0/24 192.168.20.2

#### ルーターB

1. 各インターフェースにIPアドレスを割り当てます。これにより、直接接続されているネットワーク192.168.20.0/24と192.168.30.0/24へのインターフェース経路が自動登録されます。

       RouterB(config)# interface eth2
       RouterB(config-if)# ip address 192.168.20.2/24
       RouterB(config-if)# exit
       RouterB(config)# interface vap1.0
       RouterB(config-if)# ip address 192.168.30.1/24
       RouterB(config-if)# exit

2. 直接接続されていないネットワーク192.168.10.0/24へのスタティック経路を登録します。同ネットワーク宛てのパケットは、ルーターAのeth2インターフェース（192.168.20.1）に転送します。

       RouterB(config)# ip route 192.168.10.0/24 192.168.20.1

以上で設定は完了です。IP経路表を確認してみましょう。

    RouterA(config)# do show ip route database
    Codes: C - connected, S - static
           > - selected route, * - FIB route, p - stale info

    C    *> 192.168.10.0/24 is directly connected, eth1
    C    *> 192.168.20.0/24 is directly connected, eth2
    S    *> 192.168.30.0/24 [1/0] via 192.168.20.2, eth2

ここで「192.168.30.0/24 [1/0] via 192.168.20.2, eth2」は、「192.168.30.0/24へは、eth2インターフェース上のルーター192.168.20.2（ルーターB）経由で到達できる」の意味になります。スクエアブラケット（[]）で囲まれた2つの数値は、それぞれ管理距離（Administrative Distance）とメトリックを表します（スタティック経路ではメトリックは使用されないためつねに「0」と表示されます）。また、行頭の「S」は「static」、すなわち「スタティック経路」の省略記号です。「*>」は、該当経路が192.168.30.0/24への最適な経路であり、実際のパケット転送判断に使用されていることを示します。

    RouterB(config)# do show ip route database
    Codes: C - connected, S - static
           > - selected route, * - FIB route, p - stale info

    S    *> 192.168.10.0/24 [1/0] via 192.168.20.1, eth2
    C    *> 192.168.20.0/24 is directly connected, eth2
    C    *> 192.168.30.0/24 is directly connected, vap1.0

ここで「192.168.10.0/24 [1/0] via 192.168.20.1, eth1」は、「192.168.10.0/24へは、eth1インターフェース上のルーター192.168.20.1（ルーターA）経由で到達できる」の意味になります。スクエアブラケット（[]）で囲まれた2つの数値は、それぞれ管理距離（Administrative Distance）とメトリックを表します（スタティック経路ではメトリックは使用されないためつねに「0」と表示されます）。また、行頭の「S」は「static」、すなわち「スタティック経路」の省略記号です。「*>」は、該当経路が192.168.10.0/24への最適な経路であり、実際のパケット転送判断に使用されていることを示します。

## デフォルト経路

ネットワークの末端に位置するルーターでは、経路表にないネットワーク宛てのパケットをすべて特定のルーターに転送するよう設定することにより、経路設定を簡素化することができます。このような経路をデフォルト経路と呼びます。
デフォルト経路を手動登録するには、ip routeコマンドで宛先ネットワークを0.0.0.0/0と指定します。
ここでは例として、次のようなネットワークにおけるルーターAの設定を示します。

1. 各インターフェースにIPアドレスを割り当てます。これにより、直接接続されているネットワーク192.168.10.0/24と192.168.20.0/24へのインターフェース経路が自動登録されます。

       RouterA(config)# interface eth1
       RouterA(config-if)# ip address 192.168.10.1/24
       RouterA(config-if)# exit
       RouterA(config)# interface eth2
       RouterA(config-if)# ip address 192.168.20.1/24
       RouterA(config-if)# exit

2. それ以外のネットワーク宛てのパケットはすべてルーターB（192.168.20.2）に転送します。「0.0.0.0/0」はすべてのIPアドレスにマッチする特殊な指定方法で、デフォルト経路を意味します。

       RouterA(config)# ip route 0.0.0.0/0 192.168.20.2

以上で設定は完了です。IP経路表を確認してみましょう。

    RouterA(config)# do show ip route database
    Codes: C - connected, S - static
           > - selected route, * - FIB route, p - stale info

    S    *> 0.0.0.0/0 [1/0] via 192.168.20.2, eth2
    C    *> 192.168.10.0/24 is directly connected, eth1
    C    *> 192.168.20.0/24 is directly connected, eth2

ここで「0.0.0.0/0 [1/0] via 192.168.20.2, eth2」は、「0.0.0.0/0、すなわち、経路表内の他のエントリーにマッチしなかったすべての宛先には、eth2インターフェース上のルーター192.168.20.2（ルーターB）経由で到達できる」の意味になります。スクエアブラケット（[]）で囲まれた2つの数値は、それぞれ管理距離（Administrative Distance）とメトリックを表します（スタティック経路ではメトリックは使用されないためつねに「0」と表示されます）。また、行頭の「S」は「static」、すなわち「スタティック経路」の省略記号です。「*>」は、該当経路が0.0.0.0/0への最適な経路であり、実際のパケット転送判断に使用されていることを示します。

## 経路表と経路選択

ここまでの説明では、単に「IP経路表」という言葉を用いましたが、実際には本製品は次に示す2種類のIP経路表を使い分けています。

- RIB（Routing Information Base：IP経路表）
- FIB（Forwarding Information Base：IP転送表）

それぞれの役割は次のとおりです。

### RIB

RIB（Routing Information Base：IP経路表）は、各種情報源から得た経路情報を蓄積するデータベースです。RIBには、管理者の手動設定や経路制御プロトコルによって学習された経路が原則としてすべて登録されます。RIBに経路が登録されるのは、次のときです。

- インターフェースにIPアドレスを割り当てたとき
- スタティック経路を登録したとき
- DHCPメッセージによって経路を学習したとき

このようにしてRIBに登録された経路のうち、「最適」と判断されたものだけが次に述べるFIBに登録されます。
RIBの内容は、show ip route databaseコマンドで確認できます。

### FIB

FIB（Forwarding Information Base：IP転送表）は、IPパケットの転送判断時に参照するデータベースです。FIBには、RIBに登録されている経路のうち、「最適」と判断されたもの、すなわち、実際にパケット転送に使用される経路だけが登録されます。最適と判断する基準は次に述べる管理距離です。
FIBの内容は、show ip routeコマンドで確認できます。

### 管理距離

RIBに同一宛先への経路が複数登録されている場合は、管理距離（Administrative Distance: AD）と呼ばれる経路エントリーの属性値によって最適な経路を選択します。
管理距離は1～255の整数値で、小さいほど優先度が高くなります。初期状態では、次のように経路種別ごとに値が決まっています。
Note

管理距離255は「信頼できない経路」を表します。「信頼できない経路」は、FIBに登録されず、IPパケットの転送には使われません。

表 1
経路種別 | 管理距離の初期値 | 管理距離の変更方法
直結経路（connected） | - | 設定不可。直結経路は他の経路よりもつねに優先される
スタティック経路（static） | 1 | 経路ごとに、ip routeコマンドの最終パラメーターで任意指定可能。また、DHCPに由来するデフォルト経路の管理距離はip dhcp-client default-route distanceコマンドでインターフェースごとに変更可能

管理距離は、同じサブネット長のスタティック経路を複数登録する場合に、それらの間で優先順位を付けたい場合に使用できます（フローティングスタティックルートの利用）。

### ECMP

FIBには、RIBに登録されている経路のうち「最適」なものだけが登録されますが、RIBに同一宛先への最適経路が複数登録されている場合は、FIBにも複数の経路を登録することができます。
FIBに同一宛先への複数経路が登録されている場合、これらの経路はECMP（等コストマルチパス）グループと呼ばれ、該当宛先へのIPv4パケットはフロー単位でグループ内の各経路にロードバランスされます。
Note

IPv6パケットは終点IPv6アドレスだけにもとづいてロードバランスされます。

FIBに同一宛先への経路をいくつ登録できるかは、maximum-pathsコマンドの設定によって決まります。有効な設定値は1～8。初期設定は4です。

## その他

スタティック経路、デフォルト経路を削除するにはip routeコマンドをno形式で実行します。たとえば、デフォルト経路を削除するには次のようにします。

    awplus(config)# no ip route 0.0.0.0/0 192.168.20.2