FortiGateを構築してSSL-VPNを設定した後、接続検証を行った際に3分程度で切断されてしまう事象が発生しました。クライアント側のFortiClient VPNには下記のログが記録されています。
YYYY/MM/DD hh:mm:ss error sslvpn FortiSslvpn: 9000: error: poll_recv_ssl -> SSL_get_error(): 6
YYYY/MM/DD hh:mm:ss error sslvpn FortiSslvpn: 9000: error: poll_recv_ssl -> WSAGetLastError():0
これはセグメンテーションエラー(Segmentation Error)の時に記録されるエラーです。
クライアント側の設定を見ると、VPNオプションの「DTLSトンネル優先」にはチェックが入っておらず、UDPで通信したために断片化されてしまったというわけではなさそうでした。
そのためFortiGate側が通信するときに断片化していると思われるため、MTUを変更してみたところ改善しました。
実際にはpppoe1だけ、MTUではなくMSS長の値を変更しています。MSS値とは、MSS (Maximum Segment Size)の略で一度に伝送できるTCPの最大セグメントサイズになります。各インタフェースからパケットが送信されるとき、一番小さい値に変更されるためすべてのインターフェースに対する変更は不要です。
変更はFortiGateのコンソールへ接続するか、SSH接続、もしくはWebインターフェースからコンソールを開いて、下記のようなコマンドを実行することで実施できます。
FWF30E3U1700XXXX # config system interface
FWF30E3U1700XXXX (interface) # edit pppoe1
FWF30E3U1700XXXX (pppoe1) # set tcp-mss 1400
FWF30E3U1700XXXX (pppoe1) # next
FWF30E3U1700XXXX (interface) # end