非対称ルーティングとは何か?非対称ルーティングで通信ができなくなる原因と対処法を解説

非対称ルーティングとは

非対称ルーティングとは、以下のように行きと帰りのパケットが異なる経路を通る通信のことです。

  • 行きの通信:ルーター1 → ルートA → ルーター2
  • 帰りの通信:ルーター1 → ルートB → ルーター2

ルーターやスイッチ間でルーティングする分には問題ありませんが、ネットワーク上にファイアウォールなど通信のセッション管理を行う機器が存在する場合は、注意する必要があります。

ステートフルインスペクションが機能するファイアウォールでは、非対称ルーティングによって、通信ができなくなる問題が発生します。

今回は、この非対称ルーティングで通信ができなくなる原因と対処法を解説していきます。

ステートフルインスペクションとは

ステートフルインスペクションとは、通信のセッション管理によって、戻りの通信を動的に許可する仕組みのことです。

ファイアウォールは、LAN側から送信したデータをセッションログとして一時的に保存しておき、WAN側から受け取ったパケットがセッションログと整合性が合うかどうか確認し、整合性が合う場合だけ通信を許可します。
そのため、行きと帰りの通信の経路が異なると、セッションログの整合性が合わず、通信ができなくなります。

ステートフルインスペクションの機能があることで、送信元の偽造によるアクセスを遮断することが可能です。最近では、ルーターでも実装されている機器があります。

非対称ルーティングの確認方法

ルーティングが非対称になっているか確かめるには、双方向でトレースルートを実施し、ルートを確認します。
異なる経路を通っている場合、通信が非対称ルーティングになっています。

正常時のルートで問題がなくても、障害発生時に切り替わるルーティングが非対称ルーティングになっている場合もあるため、注意が必要です。

非対称ルーティングの解消法

以下では、非対称ルーティングの解消法をいくつか紹介します。

スタティックルートを設定する

スタティックルートを設定することによって、行きと帰りの経路を同じにすることが可能です。

スタティックルートとは、手動で設定したルートのことです。

ルーティングは、AD値と呼ばれる経路情報の信頼度を表す数字が定められています。AD値が小さいものほど信頼度が高くなります。同じ宛先へのルーティングが複数ある場合は、AD値の低い経路が優先されます。

最もAD値が小さいのが直接接続で、次に小さいのがスタティックルートです。
そのため、BGPやOSPFなど動的ルーティングを利用していても、同じ宛先へのルーティングにスタティックルートがある場合、スタティックルートが優先的に経路として利用されます。

ポリシーベースルーティングを設定する

通常ルーティングは、ルーティングプロトコルのメトリックを比較してネクストホップが決定します。

ポリシーベースルーティングを利用することで、意図した通りに次の経路を選択できます。同じ宛先宛ての通信で、経路を分けている場合に有効です。

宛先が同じでも、重要通信はルートA、それ以外はルートBを使っている場合など、スタティックルーティングだけではルートを適切に振り分けられません。

ここからは、いくつかの設定例をご紹介していきます。

設定前

重要通信
  • 行きの通信:ルーター1 →ルートA →ルーター2
  • 帰りの通信:ルーター1 →ルートB →ルーター2
それ以外の通信
  • 行きの通信:ルーター1 →ルートB →ルーター2
  • 帰りの通信:ルーター1 →ルートB →ルーター2

スタティックルートを設定した場合

重要通信
  • 行きの通信:ルーター1 →ルートA →ルーター2
  • 帰りの通信:ルーター1 →ルートA →ルーター2
それ以外の通信
  • 行きの通信:ルーター1 →ルートB →ルーター2
  • 帰りの通信:ルーター1 →ルートA →ルーター2

ポリシーベースルーティングでは、ルートマップを使用します。
ルートマップでは、ルーティングプロトコルの再送信時のルート情報をフィルターしたり、シードメトリックをルートごとに設定したりするなど、細かな設定が可能です。そのため、送信元IPアドレスやプロトコルを指定することで、重要通信とそれ以外の通信など、個別でルーティングを制御できます。

ファイアウォールで非対称ルーティングを許可する

非推奨ですが、ファイアウォールで非対称ルーティングを許可することも可能です。FortiGateの場合「set asymroute enable」コマンドで非対称ルーティングを許可できます。

参考