パケットの送信元に適切なルーティング経路を通知するICMP Redirectの動きについて記載します。
下記のネットワーク構成を考えます。異なるセグメント間をルータを挟んでPing疎通します。(Mac→Ubuntu)
検証の結果、ICMP redirectはYamahaルータからMac端末に発信されていましたが、非対称ルーティングは矯正されませんでした。
パケットの流れ
MACアドレスの向き
- echo-request(Mac > Yamaha)1回目
- ICMP-redirect(Yamaha > Mac)
- echo-request(Yamaha > Cisco)
- echo-reply(Cisco > Mac)
- echo-request(Mac > Yamaha)2回目
- echo-request(Yamaha > Cisco)
- echo-reply(Cisco > Mac)
ICMP echo request(Mac > Yamaha)
Mac端末のデフォルトゲートウェイはYamahaルータになっています。
ICMP Redirect(Yamaha > Mac)
Yamahaルータは適切なネクストホップであるCiscoルータのIPを通知します。
ICMP echo request(Yamaha > Cisco)
Yamahaルータには192.168.8.0/24へのStatic routeを設定しています
ICMP echo reply(Cisco > Mac)
Ubuntu端末からMac端末にreplyが返されます。行きと帰りで異経路になり、非対称ルーティングが発生します
ICMP echo request
適したルートがMac端末に追加されて、下図のように直接Ciscoルータへパケットを送り、非対称ルーティングが解消されると思いましたが、変わらずMacからYamahaへICMP echoが投げられていました。送信元やルータを変えても同じ挙動か検証してみます
Fortigateの非対称ルーティング拒否設定
Fortigateのデフォルト設定では、非対称ルーティングにより行きまたは帰りのパケットのどちらかがFortigateを通らない場合にブロックします(set asymroute disable)。今回のようにICMP Redirectでルートの矯正が行われる場合はFortigateがブロックすることはありませんが、そうならない場合はブロックされることになります。通信できない際に切り分けした結果、この機能が原因の場合があるようです。
FGT60C3G12028266 (vdom) # edit root
current vf=root:0
FGT60C3G12028266 (root) #
FGT60C3G12028266 (root) # config system settings
FGT60C3G12028266 (settings) #
FGT60C3G12028266 (settings) # show
config system settings
set opmode transparent
set manageip 192.168.9.7/255.255.255.0
end
FGT60C3G12028266 (settings) #
FGT60C3G12028266 (settings) #
FGT60C3G12028266 (settings) # set asymroute
enable Enable asymmetric route.
disable Disable asymmetric route.
FGT60C3G12028266 (settings) #
|
|
|
|
|
|
|
|
|
|
|