前提
MTU と MSS の基礎知識は以下で手に入れて下さい。
FortiGate と Cisco の MTU 設定と MSS 調整設定
FortiGate には Cisco と同様にインタフェースに対して MTU や MSS 調整設定をすることができます。
MTU については両機器に差異はありません。出力インタフェースの最大転送ユニットを指定します。以下では、MTU=1480 の設定例を示しています。
[Cisco の MTU 設定]
(config)# interface giga 0/0 (config-if)# ip mtu 1480
[FortiGate の MTU 設定]
# config system interface # edit wan1 # set mtu-override enable # set mtu 1480
ですが MSS 調整については細かい挙動が異なります。
Cisco の MSS 調整設定
Cisco の "ip tcp adjust-mss" 設定を入れたインタフェースは、TCP syn および TCP syn/ack のいずれにおいても、TCP のオプション#2 [MSS] を書き換える動作をします。
MSS はネゴシエーションではなく単一方向でそれぞれ通知しあうものなので、クライアントはサーバに自分の MSS(パケット当たりで受信できる TCP ペイロードの大きさ)を伝えますし、その値が何であるかを考慮せず、サーバはクライアントに自分の MSS を伝えます。
"ip tcp adjust-mss 1440" を設定することで、クライアント⇒サーバの TCP syn の MSS も書き換わるし、サーバ⇒クライアントの TCP syn/ack の MSS も書き換わります。
FortiGate の set tcp-mss 設定
FortiGate の場合は set tcp-mss 1440 を設定したインタフェースに入ってくる TCP syn および TCP syn/ack の MSS を書き換えますが、インタフェースから出力されるパケットについては MSS の書き換えを行いません。
なので Cisco と同様の挙動にするには、通過するインタフェース両方に set tcp-mss を設定する必要があります。
ただ、ここにも 1 つ問題があります。現状の FortiOS (5.6 や 6.) では PPPoE 設定をしているインタフェースには set tcp-mss が効かないそうです。
この問題を回避するには、インタフェースレベルでの MSS 調整設定を諦め、ポリシーレベルでの MSS 調整設定を入れる必要があります。
# config firewall policy # edit 1 # set tcp-mss-sender 1440 # set tcp-mss-receiver 1440
このように両方設定することで Cisco と同様、クライアントにもサーバにも書き換えた MSS を通知することができます。
コメント