Help us understand the problem. What is going on with this article?

FortiGate の非対称ルーティング

FortiGate の非対称ルーティング

非対称ルーティングとは

行きのパケット帰りのパケットが異なる経路(L3機器)を通る通信のこと。
Firewall は通信のセッション管理を行っており、非対称ルーティングとは相性が悪い。
例えば行きのパケットが無いのに、帰りのパケットだけ来ても通信の整合性が合わなくなり許可すべき通信か判断できない。また通信の内容を見てセキュリティチェックを行うUTM機能も不能となる。
場合によっては、PINGは通るがTCP通信ができないこともある。これはTCPのほうがステートフルな通信を行っていることからチェックが厳しくなるためである。よって疎通確認はPINGだけに頼らず、できる限りTCPによる確認も行うべきである。

NG なケース

下図のように、「行き」はLANインターフェースからDMZインターフェースを通ってサーバーに到着するが、「帰り」はサーバーから直接LAN側のPCと通信をしてFortiGateを通らないパターン。

image.png

このようにFortiGateで異なるインターフェース間を通る通信で、「行き」または「帰り」のいずれかの通信がFortiGateを通らないとFortiGateは次に続くパケットをブロックし通信ができなくなります。

回避策

  • FortiGateのポリシーで LAN -> DMZ の通信をNATにする。送信元IPがFortiGateとなり、帰りのパケットもFortiGateに向かう。
  • Webサーバーへの通信はLAN側のIP宛で行う。
  • FortiGateで非対称ルーティングを許可する。(非推奨)set asymroute enable

OK なケース

非対称ルーティングでも通信ができる場合があります。
それはFortiGateのインターフェース間通信が発生しない場合です。
下図はLANインターフェースで受けたパケットが、同じLANインターフェースから出ていくだけなので、FortiGateとしてはセッション管理をする必要がないため、OK となります。

image.png

ICMP Redirectについて

FortiGateはデフォルトでICMP Redirectが有効になっており、本ケースでは最初のパケットのみFortiGateを経由し、以降のパケットは直接ルータを通るため、非対称ルーティングは最初のパケットのみとなります。
もしかするとICMP Redirectによって非対称ルーティングでもたまたま通信できているだけかもしれないので、FortiGateのICMP Redirectを無効にして検証してみました。
結果は変わらずTCPでも通信できていたので、ICMP Redirectの影響はないことがわかりました。

fukuchan-senpai
20年ぶりにWebプログラミングを再開した三流エンジニア。好きな言葉は「スモールスタート」
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away