AWS Site-to-Site VPNのサンプル設定を読み解いてみる(Fortigate、FortiOS6.4.4+GUI、IKEv2、静的ルーティング) - ぶろとよ

ぶろとよ

ネットワーク系クラウドエンジニア(AWS)の技術ブログ。自動化に興味があるためAWS CLIを勉強&アウトプット中。

AWS Site-to-Site VPNのサンプル設定を読み解いてみる(Fortigate、FortiOS6.4.4+GUI、IKEv2、静的ルーティング)

AWS Site-to-Site VPNを設定した際、AWS側からVPNサンプル設定をダウンロードできます。
AWSと対向するネットワーク機器用に出力するサンプル設定なのですが、中身が英語だし所々修正が必要だし、っと英語が苦手な自分にとってはあまり親切なファイルではありません(汗

本記事では、VPNサンプル設定の日本語化 & ネットワーク機器の表記に合わせて修正をしてみたいと思います。
・・・日本語化とか翻訳とか言ってますが、Google翻訳様に頼りきっています(汗

目次

検証環境

  • 検証日: 2022/09/25
  • 実行環境
    • PC
      • Windows10 Home Ver21H1
        • Google Chrome: バージョン: 105.0.5195.127(Official Build) (64 ビット)
    • VPNネットワーク機器
      • Fortigate50E: FortiOS6.2.11

注意事項

  • 本記事の内容はFortigate50E: FortiOS6.2.11で検証しています。
  • 翻訳はGoogle翻訳を利用し、所々実機を元に修正しています。
  • コマンド内の変数やパラメータやは検証で使用したものを記載しています。ご自身の環境に合わせ、書き換えて使用してください。
  • 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。


1. AWS側のVPN設定

今回の目的はVPNサンプル設定の翻訳のため、AWS側の設定については省略します。
別の記事でVPN接続を書いたものがあるので参考として貼ります。

blog.toyokky.com


■ VPNサンプル設定の内容に関わる部分だけAWS設定を記載します。

AWSリソース 項目 設定値 備考
ルートテーブル ルート 宛先: 192.168.0.0/16、ターゲット: VGW Fortigate配下ネットワークCIDR含む、広い範囲で記載
カスタマーゲートウェイ IPアドレス ※FortigateのグローバルIPアドレス
カスタマーゲートウェイ BGP ASN 65000 BGP不使用のためデフォルト値
Site-to-Site VPN接続 ルーティング 静的(Static)
Site-to-Site VPN接続 ローカル IPv4 ネットワーク CIDR 0.0.0.0/0 制限しない
Site-to-Site VPN接続 リモート IPv4 ネットワーク CIDR 0.0.0.0/0 制限しない
Site-to-Site VPN接続 静的 IP プレフィックス 0.0.0.0/0 WEBで見ると0.0.0.0/0使わない人が多数(汗
Site-to-Site VPN接続 トンネル 1 オプション デフォルトを使用
Site-to-Site VPN接続 トンネル 1 オプション デフォルトを使用


2. VPNサンプル設定

2.1. VPNサンプル設定のダウンロード

以下の内容で出力しました。

項目 設定値 備考
ベンダー Fortinet
プラットフォーム Fortigate 40+ Series 検証機は Fortigate50E
ソフトウェア FortiOS 6.4.4.+ (GUI) 検証機は 6.2.11 で 6.4未満
IKEバージョン ikev2


2.2. 読み替え/置換が必要な箇所

出力したVPNサンプル設定を実際に使用する際、「読み替え/置換」が必要な箇所です。
本記事中の以下パラメータの部分で、本記事では参考値を使用しています。

■ IPsecトンネル のパラメータ

トンネル番号 項目 パラメータ 原文内の検索ワード
Tunnel 1 外部IP AWS側 1.1.1.1 「c. IP address: 」で検索の1つ目
 〃  内部IP AWS側 169.254.1.1 「b. Remote IP」で検索の1つ目
「set server」で検索の1つ目
 〃  内部IP 機器側 169.254.1.2 「a. IP :」で検索の1つ目
 〃  事前共有鍵 xxxxSharedKeyxxxTunnel_1xxxxxxxx 「h. Pre-Shared Key:」で検索の1つ目
Tunnel 2 外部IP AWS側 2.2.2.2 「c. IP address: 」で検索の2つ目
 〃  内部IP AWS側 169.254.2.1 「b. Remote IP」で検索の2つ目
「set server」で検索の2つ目
 〃  内部IP 機器側 169.254.2.2 「a. IP :」で検索の1つ目
 〃  事前共有鍵 xxxxSharedKeyxxxTunnel_2xxxxxxxx 「h. Pre-Shared Key:」で検索の1つ目

※「原文内の検索ワード」は、原文のどこに記載されているか探すための検索ワードです。原文は先にTunnel 1、次にTunnel 2と記載されているため、検索HITの1つ目がTunnel 1、2つ目がTunnel 2のパラメータです。


■ インターフェース番号

原文内でAWSとVPNを張るインターフェースが「wan1」となっています。環境によって異なる場合は読み替え/置換が必要です。


■ AWSリソース ID

AWSリソース種別 ID 原文内の検索ワード 備考
VPN接続 ID vpn-fffffffffffffffff Your VPN Connection ID 項番 2.3. 参照
仮想プライベートゲートウェイ ID vgw-01234567890abcdef Your Virtual Private Gateway ID 使用していないので無視
カスタマーゲートウェイ ID cgw-01234567890abcdef Your Customer Gateway ID 使用していないので無視


2.3. そのまま入力できず注意/修正が必要な箇所

VPNトンネルインターフェースの名前にVPN接続 IDを指定する箇所がありますが、長すぎてFortigateで設定不可です。
そのため、以下の修正が必要です。 ※所々赤字で書いてる箇所です。

VPN接続 ID 本記事での仮名前 備考
vpn-fffffffffffffffff-0 vpn-to-aws-1 環境に合わせて変更
vpn-fffffffffffffffff-1 vpn-to-aws-2 環境に合わせて変更


また、2箇所 CLI操作が出てくるのですが、どちらも設定不可(コマンドが無い)でした。
検証機が「Fortigate50E: FortiOS6.2.11」だからというのもあるようですが、CLIを実行しなくてもVPN接続はできるので、実行できないなら無視しても良いかもしれません。


3. VPNサンプル設定の原文

原文は長いので折りたたんでいます、クリックで展開。

! Amazon Web Services
! Virtual Private Cloud

! AWS utilizes unique identifiers to manipulate the configuration of
! a VPN Connection. Each VPN Connection is assigned an identifier and is
! associated with two other identifiers, namely the
! Customer Gateway Identifier and Virtual Private Gateway Identifier.
!
! Your VPN Connection ID                      : vpn-fffffffffffffffff
! Your Virtual Private Gateway ID         : vgw-01234567890abcdef
! Your Customer Gateway ID                  : cgw-01234567890abcdef
!
!
! This configuration consists of two tunnels. Both tunnels must be
! configured on your Customer Gateway.
!
! --------------------------------------------------------------------------------
! IPSec Tunnel #1
! --------------------------------------------------------------------------------
! #1: Internet Key Exchange (IKE) Configuration

Go to  VPN --> IPSEC Tunnels --> Create New (drop down) --> Select IPSEC Tunnel

VPN Creation Wizard Window appears

Select Template Type as “Custom”

Provide a Name for the VPN connection (Name must be shorter than 15 chars, best if shorter than 12): vpn-fffffffffffffffff-0

New VPN Tunnel Window Appears (Here we configure the VPN settings):

Under “Network” Section:
a. IP Version:     IPv4
b. Remote Gateway: Static IP Address
c. IP address: 1.1.1.1
d. Local Interface: wan1
e. Local Gateway: Select Specify and enter WAN port IP (Public IP)
f. Dead Peer Detection: Enable by selecting On Idle/ On Demand
g. Authentication Method: Pre-shared Key
h. Pre-Shared Key: xxxxSharedKeyxxxTunnel_1xxxxxxxx
i. IKE Version: 2
Phase 1 Proposal:
j.  Encryption: aes128
k. Authentication: sha1
l. DH group: 2     ! and deselect 5
m. Keylife: 28800 seconds

! NAT Traversal is enabled by default but if your FortiGate device is not behind a NAT/PAT device, please deselect NAT Traversal.

! --------------------------------------------------------------------------------
! #2: IPSec Configuration

Under Phase 2 Selectors --> New Phase 2
a.  Name:  vpn-fffffffffffffffff-0
b.  Local Address: LAN subnet behind Fortigate/0.0.0.0/0
c.  Remote Address: AWS Private Subnet/0.0.0.0/0

Under Advanced
d.  Encryption: aes128
e.  Authentication: sha1
f.  Select Enable Replay Detection
g.  Select Perfect Forward Secrecy
h.  DH Group: 2 ! and deselect 5
i.  Keylife: 3600 seconds
j.  Enable Auto-negotiate   ! Autokey Keep Alive is enabled automatically when Auto-negotiate is enabled
k.  Click Ok

! --------------------------------------------------------------------------------
! #3: Tunnel Interface Configuration

! A tunnel interface is configured to be the logical interface associated
! with the tunnel. All traffic routed to the tunnel interface will be
! encrypted and transmitted to the VPC. Similarly, traffic from the VPC
! will be logically received on this interface.
!
!
! The address of the interface is configured with the setup for your
! Customer Gateway.  If the address changes, the Customer Gateway and VPN
! Connection must be recreated with Amazon VPC.
!
! This is required in order for tunnel failover via gwdetect to function
!
! Perform this from the Global VDOM.

Go to Network Tab --> Interface --> wan1 and edit vpn-fffffffffffffffff-0

a. IP : 169.254.1.2
b. Remote IP: 169.254.1.1/30
c. Select Ping
d. Administrative Status: Up
e. Select Ok.

!You can set MTU and MSS on the tunnel by performing this from the CLI:
 config global
 config system interface
  edit "vpn-fffffffffffffffff-0" ! This name will be the same as the VPN tunnel name
    set mtu-override enable
    set mtu 1427
    set tcp-mss 1379
   next
end

! --------------------------------------------------------------------------------
! #4 Static Route Configuration
Your Customer Gateway needs to set a static route for the prefix corresponding to your
! VPC to send traffic over the tunnel interface.
! An example for a VPC with the prefix 10.0.0.0/16 is provided below:
!
! This is configured from the root VDOM


Go to Network Tab --> Static Routes --> Create New

a. Destination: Subnet (10.0.0.0/16)
b. Interface: vpn-fffffffffffffffff-0 ! This is the VPN tunnel interface
c. Click Ok

! Static routing does not allow for failover of traffic between tunnels. If there is a problem with one of the
! tunnels, we would want to failover the traffic to the second tunnel. This is done by using "gwdetect" in fortigate.
! The gwdetect command will ping the other end of the tunnel, and check if the tunnel is up. If the pings fail, it will
! remove the static route from the routing table, and the second route in the table will become active.
!
! This can be done only using the CLI.
!
! The following config will tell the Fortigate device, what IP it should ping to test the tunnel. This IP should be
! the inside IP address of the virtual private gateway.
! This is required in order for tunnel failover via gwtect to function. Additionally, this is required to keep the tunnel up, since
! traffic must be sent from your side of the VPN tunnel to prevent the tunnel from being taken down.

config vdom
    edit root
        config router gwdetect
        edit 1
        set interface "vpn-fffffffffffffffff-0" ! This is the VPN tunnel interface
        set server "169.254.1.1"

! server IP is the AWS inside IP

! Using the following command, you can set the interval and failtime for gwdetect. Interval is number of seconds
! between pings. Failtime is the number of lost consecutive pings.Using the respective values of 2 and 5, your tunnel
! will failover in 10 seconds.

        set interval 2
        set failtime 5
    next
end

! --------------------------------------------------------------------------------
! #5: Firewall Policy Configuration
! Create a firewall policy permitting traffic from your local subnet to the VPC subnet and vice versa
! This example policy permits all traffic from the local subnet to the VPC.
!
!This is configured from the root VDOM


Go to Policy & Object tab --> Firewall Policy --> Create New

   a. Provide a Name for the Policy
   b. Incoming Interface/Zone = internal ! This is the interface out which your local LAN resides
   c. Source Address = all
   d. Outgoing Interface/Zone = "vpn-fffffffffffffffff-0" ! This is the VPN tunnel interface
   e. Destination Address = all
   f. Schedule = always
   g. Service = ALL
   h. Action = ACCEPT
   i. Click OK

! NAT is enabled for the policy by default, you can disable it.

! Now create a policy to permit traffic going the other way

   a. Create New
   b. Provide a Name for the Policy
   c. Incoming Interface/Zone = "vpn-fffffffffffffffff-0" ! This is the VPN tunnel interface
   d. Source Address = all
   e. Outgoing Interface/Zone = internal  ! This is the interface out which your local LAN resides
   f. Destination Address = all
   g. Schedule = always
   h. Service = ALL
   i. Action = ACCEPT
   j. Click OK


! --------------------------------------------------------------------------------
! IPSec Tunnel #2
! --------------------------------------------------------------------------------
! #1: Internet Key Exchange (IKE) Configuration

Go to  VPN --> IPSEC Tunnels --> Create New (drop down) --> Select IPSEC Tunnel

VPN Creation Wizard Window appears

Select Template Type as “Custom”

Provide a Name for the VPN connection (Name must be shorter than 15 chars, best if shorter than 12): vpn-fffffffffffffffff-1

New VPN Tunnel Window Appears (Here we configure the VPN settings):

Under “Network” Section:
a. IP Version:     IPv4
b. Remote Gateway: Static IP Address
c. IP address: 2.2.2.2
d. Local Interface: wan1
e. Local Gateway: Select Specify and enter WAN port IP (Public IP)
f. Dead Peer Detection: Enable by selecting On Idle/ On Demand
g. Authentication Method: Pre-shared Key
h. Pre-Shared Key: xxxxSharedKeyxxxTunnel_2xxxxxxxx
i. IKE Version: 2
Phase 1 Proposal:
j.  Encryption: aes128
k. Authentication: sha1
l. DH group: 2     ! and deselect 5
m. Keylife: 28800 seconds

! NAT Traversal is enabled by default but if your FortiGate device is not behind a NAT/PAT device, please deselect NAT Traversal.

! --------------------------------------------------------------------------------
! #2: IPSec Configuration

Under Phase 2 Selectors --> New Phase 2
a.  Name:  vpn-fffffffffffffffff-1
b.  Local Address: LAN subnet behind Fortigate/0.0.0.0/0
c.  Remote Address: AWS Private Subnet/0.0.0.0/0

Under Advanced
d.  Encryption: aes128
e.  Authentication: sha1
f.  Select Enable Replay Detection
g.  Select Perfect Forward Secrecy
h.  DH Group: 2 ! and deselect 5
i.  Keylife: 3600 seconds
j.  Enable Auto-negotiate   ! Autokey Keep Alive is enabled automatically when Auto-negotiate is enabled
k.  Click Ok

! --------------------------------------------------------------------------------
! #3: Tunnel Interface Configuration

! A tunnel interface is configured to be the logical interface associated
! with the tunnel. All traffic routed to the tunnel interface will be
! encrypted and transmitted to the VPC. Similarly, traffic from the VPC
! will be logically received on this interface.
!
!
! The address of the interface is configured with the setup for your
! Customer Gateway.  If the address changes, the Customer Gateway and VPN
! Connection must be recreated with Amazon VPC.
!
! This is required in order for tunnel failover via gwdetect to function
!
! Perform this from the Global VDOM.

Go to Network Tab --> Interface --> wan1 and edit vpn-fffffffffffffffff-1

a. IP : 169.254.2.2
b. Remote IP: 169.254.2.1/30
c. Select Ping
d. Administrative Status: Up
e. Select Ok.

!You can set MTU and MSS on the tunnel by performing this from the CLI:
 config global
 config system interface
  edit "vpn-fffffffffffffffff-1" ! This name will be the same as the VPN tunnel name
    set mtu-override enable
    set mtu 1427
    set tcp-mss 1379
   next
end

! --------------------------------------------------------------------------------
! #4 Static Route Configuration
Your Customer Gateway needs to set a static route for the prefix corresponding to your
! VPC to send traffic over the tunnel interface.
! An example for a VPC with the prefix 10.0.0.0/16 is provided below:
!
! This is configured from the root VDOM


Go to Network Tab --> Static Routes --> Create New

a. Destination: Subnet (10.0.0.0/16)
b. Interface: vpn-fffffffffffffffff-1 ! This is the VPN tunnel interface
c. Click Ok

! Static routing does not allow for failover of traffic between tunnels. If there is a problem with one of the
! tunnels, we would want to failover the traffic to the second tunnel. This is done by using "gwdetect" in fortigate.
! The gwdetect command will ping the other end of the tunnel, and check if the tunnel is up. If the pings fail, it will
! remove the static route from the routing table, and the second route in the table will become active.
!
! This can be done only using the CLI.
!
! The following config will tell the Fortigate device, what IP it should ping to test the tunnel. This IP should be
! the inside IP address of the virtual private gateway.
! This is required in order for tunnel failover via gwtect to function. Additionally, this is required to keep the tunnel up, since
! traffic must be sent from your side of the VPN tunnel to prevent the tunnel from being taken down.

config vdom
    edit root
        config router gwdetect
        edit 2
        set interface "vpn-fffffffffffffffff-1" ! This is the VPN tunnel interface
        set server "169.254.2.1"

! server IP is the AWS inside IP

! Using the following command, you can set the interval and failtime for gwdetect. Interval is number of seconds
! between pings. Failtime is the number of lost consecutive pings.Using the respective values of 2 and 5, your tunnel
! will failover in 10 seconds.

        set interval 2
        set failtime 5
    next
end

! --------------------------------------------------------------------------------
! #5: Firewall Policy Configuration
! Create a firewall policy permitting traffic from your local subnet to the VPC subnet and vice versa
! This example policy permits all traffic from the local subnet to the VPC.
!
!This is configured from the root VDOM


Go to Policy & Object tab --> Firewall Policy --> Create New

   a. Provide a Name for the Policy
   b. Incoming Interface/Zone = internal ! This is the interface out which your local LAN resides
   c. Source Address = all
   d. Outgoing Interface/Zone = "vpn-fffffffffffffffff-1" ! This is the VPN tunnel interface
   e. Destination Address = all
   f. Schedule = always
   g. Service = ALL
   h. Action = ACCEPT
   i. Click OK

! NAT is enabled for the policy by default, you can disable it.

! Now create a policy to permit traffic going the other way

   a. Create New
   b. Provide a Name for the Policy
   c. Incoming Interface/Zone = "vpn-fffffffffffffffff-1" ! This is the VPN tunnel interface
   d. Source Address = all
   e. Outgoing Interface/Zone = internal  ! This is the interface out which your local LAN resides
   f. Destination Address = all
   g. Schedule = always
   h. Service = ALL
   i. Action = ACCEPT
   j. Click OK




! Additional Notes and Questions
!  - Amazon Virtual Private Cloud Getting Started Guide:
!       http://docs.amazonwebservices.com/AmazonVPC/latest/GettingStartedGuide
!  - Amazon Virtual Private Cloud Network Administrator Guide:
!       http://docs.amazonwebservices.com/AmazonVPC/latest/NetworkAdminGuide


4. Google翻訳と修正してみた

文中色分けの意味
通常文字色 = 設定操作する箇所
Green = 原文でコメントアウトの箇所
Blue = 記事を書いてて気づいた箇所やコメント
Red = 注意事項(そのまま設定しちゃダメな箇所)



! Amazon Web Services
! Virtual Private Cloud

! AWSは一意の識別子を使用して、VPN接続の構成を操作します。
! 各VPN接続には識別子が割り当てられ、他の2つの識別子、つまりカスタマーゲートウェイ識別子と仮想プライベートゲートウェイ識別子に関連付けられます。
!
! VPN接続 ID : vpn-fffffffffffffffff
! 仮想プライベートゲートウェイ ID : vgw-01234567890abcdef
! カスタマーゲートウェイ ID : cgw-01234567890abcdef
!
!
! この構成は、2 つのトンネルで構成されています。 カスタマー ゲートウェイで両方のトンネルを設定する必要があります。
!


4.1. トンネル 1本目

! --------------------------------------------------------------------------------
! IPSec Tunnel #1
! --------------------------------------------------------------------------------
! #1: IKE 設定

サイドメニュ- > VPN > IPsecトンネル > 新規作成のドロップダウン > IPsecトンネルを選択
※または、サイドメニュ- > VPN > IPsecウィザード

[VPN作成ウィザード] が表示されます

[テンプレートタイプ] から [カスタム] を選択します

VPNトンネルインターフェースの [名前] を入力します (名前は15文字以内であり、12文字以内がベストです): vpn-fffffffffffffffff-0
【注意】サンプル名としてなのか「vpn-fffffffffffffffff-0」が記載されていますが長すぎて設定不可、ここでは「vpn-to-aws-1」としておきます。所々で出てくるので、都度読み替えてください。

[新規VPNトンネル] ウィンドウが表示されます (ここでVPN設定を構成します)。

セクション 項目 設定値 備考
ネットワーク IPバージョン IPv4
 〃  リモートゲートウェイ スタティックIPアドレス
 〃  IPアドレス 1.1.1.1 外部IP AWS側
 〃  インターフェース wan1 AWSカスタマーゲートウェイで指定した固定グローバルIPを持つインターフェース
 〃  ローカルゲートウェイ ON > [指定]を選択 > wan1の固定グローバルIPを入力
 〃  NATトラバーサル ON or OFF OFF=固定グローバルIP使用
ON=NAT/PAT デバイスの背後にFortigateが居る
 〃  デッドピア検知 オンアイドル or オンデマンド デフォルト値:オンデマンド
認証 方式 事前共有鍵
 〃  事前共有鍵 xxxxSharedKeyxxxTunnel_1xxxxxxxx
 〃  IKE バージョン 2
フェーズ1 プロポーザル 暗号化 AES128 「暗号化/認証」のセットが複数ある場合、使わないセットは「×」で閉じる
 〃  認証 SHA1
 〃  Diffie-Hellmanグループ 2 のみにする
 〃  鍵の有効時間(秒) 28800

! NAT トラバーサルはデフォルトで有効になっていますが、FortiGate デバイスが NAT/PAT デバイスの背後にない場合は、NAT トラバーサルの選択を解除してください。

! --------------------------------------------------------------------------------
! #2: IPSec 設定

フェーズ2 セレクタ > 新規フェーズ2

セクション 項目 設定値 備考
新規フェーズ2 名前 vpn-fffffffffffffffff-0 【注意】設定したVPNトンネルインターフェース名が自動入力されます。本記事では「vpn-to-aws-1」。
 〃  ローカルアドレス サブネット、0.0.0.0/0.0.0.0 FortigateのLAN サブネット
VPNを通る通信に制限を掛けない場合は「0.0.0.0/0.0.0.0」で良い。
 〃  リモートアドレス サブネット、0.0.0.0/0.0.0.0 AWS側サブネット
VPNを通る通信に制限を掛けない場合は「0.0.0.0/0.0.0.0」で良い。

高度な設定

セクション 項目 設定値 備考
フェーズ2 プロポーザル 暗号化 AES128 「暗号化/認証」のセットが複数ある場合、使わないセットは「×」で閉じる
 〃  認証 SHA1
 〃  Replay Detectionを有効化 ON
 〃  Perfect Forward Secrecy (PFS)を有効化 ON
 〃  Diffie-Hellmanグループ 2 のみにする
 〃  鍵の有効時間 秒、3600
 〃  オートネゴシエーション ON オートネゴシエーションが有効な場合、自動鍵キープアライブは自動的に有効になります

[OK] をクリックする。

! --------------------------------------------------------------------------------
! #3: Tunnel Interface 設定

! トンネル インターフェイスは、トンネルに関連付けられた論理インターフェイスになるように構成されます。
! トンネル インターフェイスにルーティングされるすべてのトラフィックは暗号化され、VPC に送信されます。
! 同様に、VPC からのトラフィックは、このインターフェイスで論理的に受信されます。
!
!
! インターフェイスのアドレスは、カスタマー ゲートウェイのセットアップで構成されます。
! アドレスが変更された場合、カスタマー ゲートウェイと VPN 接続を Amazon VPC で再作成する必要があります。
!
! これは、gwdetect によるトンネル フェイルオーバーが機能するために必要です。
!
! これは、グローバル VDOM から実行します。

サイドメニュ- > ネットワーク > インターフェース > 物理インターフェース > wan1 を展開 > 作成したトンネルインターフェース を選択 > 編集

セクション 項目 設定値 備考
アドレス IP 169.254.1.2 内部IP 機器側
 〃  リモートIP/ネットマスク 169.254.1.1/30 内部IP AWS側
管理者アクセス IPv4 PING=ON
その他 ステータス 有効化済み

[OK] をクリックする。

! CLI からこれを実行して、トンネルに MTU と MSS を設定できます。

【注意】このCLIコマンドが弾かれて、トンネルインターフェースのMTU変更が出来ないから調べたら、FortiOS 6.4.0 以降ならできるらしいです(・・・このコマンドFortiOS 5.0版のVPNサンプル設定にも書いてるんだけどな)。

FortigateのVPNトンネルインターフェイスの MTUは、デフォルトで動的に計算されるようですし、いったん無視で良いかもしれません。※機会があればAWSへ問い合わせたい。

community.fortinet.com

#--- Fortigate CLI ---#
# config global  # 【追記】不要コマンドなのでコメントアウトしました。
config system interface
#  edit "vpn-fffffffffffffffff-0" # この名前は、VPN トンネル名と同じになります
  edit "vpn-to-aws-1"  # 【追記】設定したVPNトンネルインターフェース名を指定。
    set mtu-override enable  # 【追記】 FortiOS 6.4.0 未満は設定不可
    set mtu 1427             # 【追記】 FortiOS 6.4.0 未満は設定不可
    set tcp-mss 1379
  next
end

show system interface vpn-to-aws-1  # 【追記】確認コマンド

! --------------------------------------------------------------------------------
! #4 Static Route 設定
カスタマー ゲートウェイは、対応するプレフィックスの静的ルートを設定する必要があります。
! トンネル インターフェイス経由でトラフィックを送信する VPC。
! プレフィックスが 10.0.0.0/16 の VPC の例を以下に示します。
!
! これはルート VDOM から構成されます。
【注意】ここは実際のVPC CIDRが記載されずに参考のCIDR [10.0.0.0/16] が書かれています。実際のVPC CIDRに書き換えてください。
また、実環境の構成によっては別途ルーティング設計が必要となります。

サイドメニュ- > ネットワーク > スタティックルート > 新規作成

セクション 項目 設定値 備考
新規スタティックルート 宛先 サブネット > VPC CIDRを記入 【注意】「10.0.0.0/16」は参考です。実際のVPC CIDRに書き換えてください。
 〃  インターフェース vpn-to-aws-1 作成したVPNトンネル インターフェイスを指定

[OK] をクリックする。

! スタティック ルーティングでは、トンネル間のトラフィックのフェイルオーバーは許可されません。
! トンネルの 1 つに問題がある場合は、トラフィックを 2 番目のトンネルにフェイルオーバーします。 これは、fortigate で「gwdetect」を使用して行われます。
! gwdetect コマンドは、トンネルの反対側に ping を実行し、トンネルが稼働しているかどうかを確認します。
! ping が失敗すると、ルーティング テーブルからスタティック ルートが削除され、テーブルの 2 番目のルートがアクティブになります。
!
! これは、CLI を使用してのみ実行できます。
!
! 次の構成は、トンネルをテストするためにどの IP を ping する必要があるかを Fortigate デバイスに通知します。 この IP は、仮想プライベート ゲートウェイの内部 IP アドレスである必要があります。
!
! これは、gwtect を介したトンネル フェイルオーバーが機能するために必要です。
! さらに、トンネルがダウンするのを防ぐために VPN トンネルの側からトラフィックを送信する必要があるため、これはトンネルを維持するために必要です。

【注意】このCLIコマンドも弾かれて入力出来ませんでした。
VDOM(バーチャルドメイン)モード設定を変えてないと「config vdom」が打てないようですが、この設定をしなくても通信はできるので、私は無視しました。
将来、ここが詳しくなったら、、、、挑戦するかも(汗)

このCLIコマンドを使用しない代替案として、スタティックルートの優先度を変えれば良いと思います。
・Tunnel 1側のアドミニストレーティブ・ディスタンス = 10(優先、通常利用)
・Tunnel 2側のアドミニストレーティブ・ディスタンス = 11(非優先、Tunnel 1側Down時に利用)

config vdom
    edit root
        config router gwdetect
        edit 1
        set interface "vpn-fffffffffffffffff-0" ! これは VPN トンネル インターフェイスです。
        set server "169.254.1.1"

# 「set server 」は 内部IP AWS側 です。  

# 次のコマンドを使用して、gwdetect の間隔と失敗時間を設定できます。 
# 間隔は、ping 間の秒数です。 
# Failtime は、連続して失われた ping の数です。
# 2 と 5 のそれぞれの値を使用すると、トンネルは 10 秒でフェールオーバーします。

        set interval 2
        set failtime 5
    next
end

! --------------------------------------------------------------------------------
! #5: Firewall Policy 設定
! ローカル サブネットから VPC サブネットへのトラフィック、およびその逆のトラフィックを許可するファイアウォール ポリシーを作成する。
! このポリシー例では、ローカル サブネットから VPC へのすべてのトラフィックを許可します。
!
! これはルート VDOM から構成されます。

サイドメニュ- > ポリシー&オブジェクト > IPv4ポリシー > 新規作成

項目 設定値 備考
名前 任意の名前 例)lan-to-aws-1
着信インターフェイス internal や LAN等 LAN側インターフェイス
発信インターフェイス vpn-to-aws-1 作成したVPN トンネル インターフェイス
送信元 all
宛先 all
スケジュール always
サービス ALL
アクション ACCEPT
NAT ON or OFF NATはデフォルト有効になっていますが、無効にすることができます。

[OK] をクリックする。

! ここで、逆方向のトラフィックを許可するポリシーを作成します

項目 設定値 備考
名前 任意の名前 例)aws-to-lan-1
着信インターフェイス vpn-to-aws-1 作成したVPN トンネル インターフェイス
発信インターフェイス internal や LAN等 LAN側インターフェイス
送信元 all
宛先 all
スケジュール always
サービス ALL
アクション ACCEPT
NAT ON or OFF NATはデフォルト有効になっていますが、無効にすることができます。


3.2. トンネル 2本目

! --------------------------------------------------------------------------------
! IPSec Tunnel #2
! --------------------------------------------------------------------------------
! #1: IKE 設定

サイドメニュ- > VPN > IPsecトンネル > 新規作成のドロップダウン > IPsecトンネルを選択
※または、サイドメニュ- > VPN > IPsecウィザード

[VPN作成ウィザード] が表示されます

[テンプレートタイプ] から [カスタム] を選択します

VPNトンネルインターフェースの [名前] を入力します (名前は15文字以内であり、12文字以内がベストです): vpn-fffffffffffffffff-1
【注意】サンプル名としてなのか「vpn-fffffffffffffffff-1」が記載されていますが長すぎて設定不可、ここでは「vpn-to-aws-2」としておきます。所々で出てくるので、都度読み替えてください。

[新規VPNトンネル] ウィンドウが表示されます (ここでVPN設定を構成します)。

セクション 項目 設定値 備考
ネットワーク IPバージョン IPv4
 〃  リモートゲートウェイ スタティックIPアドレス
 〃  IPアドレス 2.2.2.2 外部IP AWS側
 〃  インターフェース wan1 AWSカスタマーゲートウェイで指定した固定グローバルIPを持つインターフェース
 〃  ローカルゲートウェイ ON > [指定]を選択 > wan1の固定グローバルIPを入力
 〃  NATトラバーサル ON or OFF OFF=固定グローバルIP使用
ON=NAT/PAT デバイスの背後にFortigateが居る
 〃  デッドピア検知 オンアイドル or オンデマンド デフォルト値:オンデマンド
認証 方式 事前共有鍵
 〃  事前共有鍵 xxxxSharedKeyxxxTunnel_2xxxxxxxx
 〃  IKE バージョン 2
フェーズ1 プロポーザル 暗号化 AES128 「暗号化/認証」のセットが複数ある場合、使わないセットは「×」で閉じる
 〃  認証 SHA1
 〃  Diffie-Hellmanグループ 2 のみにする
 〃  鍵の有効時間(秒) 28800

! NAT トラバーサルはデフォルトで有効になっていますが、FortiGate デバイスが NAT/PAT デバイスの背後にない場合は、NAT トラバーサルの選択を解除してください。

! --------------------------------------------------------------------------------
! #2: IPSec 設定

フェーズ2 セレクタ > 新規フェーズ2

セクション 項目 設定値 備考
新規フェーズ2 名前 vpn-fffffffffffffffff-1 【注意】設定したVPNトンネルインターフェース名が自動入力されます。本記事では「vpn-to-aws-2」。
 〃  ローカルアドレス サブネット、0.0.0.0/0.0.0.0 FortigateのLAN サブネット
VPNを通る通信に制限を掛けない場合は「0.0.0.0/0.0.0.0」で良い。
 〃  リモートアドレス サブネット、0.0.0.0/0.0.0.0 AWS側サブネット
VPNを通る通信に制限を掛けない場合は「0.0.0.0/0.0.0.0」で良い。

高度な設定

セクション 項目 設定値 備考
フェーズ2 プロポーザル 暗号化 AES128 「暗号化/認証」のセットが複数ある場合、使わないセットは「×」で閉じる
 〃  認証 SHA1
 〃  Replay Detectionを有効化 ON
 〃  Perfect Forward Secrecy (PFS)を有効化 ON
 〃  Diffie-Hellmanグループ 2 のみにする
 〃  鍵の有効時間 秒、3600
 〃  オートネゴシエーション ON オートネゴシエーションが有効な場合、自動鍵キープアライブは自動的に有効になります

[OK] をクリックする。

! --------------------------------------------------------------------------------
! #3: Tunnel Interface 設定

! トンネル インターフェイスは、トンネルに関連付けられた論理インターフェイスになるように構成されます。
! トンネル インターフェイスにルーティングされるすべてのトラフィックは暗号化され、VPC に送信されます。
! 同様に、VPC からのトラフィックは、このインターフェイスで論理的に受信されます。
!
!
! インターフェイスのアドレスは、カスタマー ゲートウェイのセットアップで構成されます。
! アドレスが変更された場合、カスタマー ゲートウェイと VPN 接続を Amazon VPC で再作成する必要があります。
!
! これは、gwdetect によるトンネル フェイルオーバーが機能するために必要です。
!
! これは、グローバル VDOM から実行します。

サイドメニュ- > ネットワーク > インターフェース > 物理インターフェース > wan1 を展開 > 作成したトンネルインターフェース を選択 > 編集

セクション 項目 設定値 備考
アドレス IP 169.254.2.2 内部IP 機器側
 〃  リモートIP/ネットマスク 169.254.2.1/30 内部IP AWS側
管理者アクセス IPv4 PING=ON
その他 ステータス 有効化済み

[OK] をクリックする。

! CLI からこれを実行して、トンネルに MTU と MSS を設定できます。

【注意】このCLIコマンドが弾かれて、トンネルインターフェースのMTU変更が出来ないから調べたら、FortiOS 6.4.0 以降ならできるらしいです(・・・このコマンドFortiOS 5.0版のVPNサンプル設定にも書いてるんだけどな)。

FortigateのVPNトンネルインターフェイスの MTUは、デフォルトで動的に計算されるようですし、いったん無視で良いかもしれません。※機会があればAWSへ問い合わせたい。

community.fortinet.com

#--- Fortigate CLI ---#
# config global  # 【追記】不要コマンドなのでコメントアウトしました。
config system interface
#  edit "vpn-fffffffffffffffff-1" # この名前は、VPN トンネル名と同じになります
  edit "vpn-to-aws-2"  # 【追記】設定したVPNトンネルインターフェース名を指定。
    set mtu-override enable  # 【追記】 FortiOS 6.4.0 未満は設定不可
    set mtu 1427             # 【追記】 FortiOS 6.4.0 未満は設定不可
    set tcp-mss 1379
  next
end

show system interface vpn-to-aws-2  # 【追記】確認コマンド

! --------------------------------------------------------------------------------
! #4 Static Route 設定
カスタマー ゲートウェイは、対応するプレフィックスの静的ルートを設定する必要があります。
! トンネル インターフェイス経由でトラフィックを送信する VPC。
! プレフィックスが 10.0.0.0/16 の VPC の例を以下に示します。
!
! これはルート VDOM から構成されます。
【注意】ここは実際のVPC CIDRが記載されずに参考のCIDR [10.0.0.0/16] が書かれています。実際のVPC CIDRに書き換えてください。
また、実環境の構成によっては別途ルーティング設計が必要となります。

サイドメニュ- > ネットワーク > スタティックルート > 新規作成

セクション 項目 設定値 備考
新規スタティックルート 宛先 サブネット > VPC CIDRを記入 【注意】「10.0.0.0/16」は参考です。実際のVPC CIDRに書き換えてください。
 〃  インターフェース vpn-to-aws-2 作成したVPNトンネル インターフェイスを指定

[OK] をクリックする。

! スタティック ルーティングでは、トンネル間のトラフィックのフェイルオーバーは許可されません。
! トンネルの 1 つに問題がある場合は、トラフィックを 2 番目のトンネルにフェイルオーバーします。 これは、fortigate で「gwdetect」を使用して行われます。
! gwdetect コマンドは、トンネルの反対側に ping を実行し、トンネルが稼働しているかどうかを確認します。
! ping が失敗すると、ルーティング テーブルからスタティック ルートが削除され、テーブルの 2 番目のルートがアクティブになります。
!
! これは、CLI を使用してのみ実行できます。
!
! 次の構成は、トンネルをテストするためにどの IP を ping する必要があるかを Fortigate デバイスに通知します。 この IP は、仮想プライベート ゲートウェイの内部 IP アドレスである必要があります。
!
! これは、gwtect を介したトンネル フェイルオーバーが機能するために必要です。
! さらに、トンネルがダウンするのを防ぐために VPN トンネルの側からトラフィックを送信する必要があるため、これはトンネルを維持するために必要です。

【注意】このCLIコマンドも弾かれて入力出来ませんでした。
VDOM(バーチャルドメイン)モード設定を変えてないと「config vdom」が打てないようですが、この設定をしなくても通信はできるので、私は無視しました。
将来、ここが詳しくなったら、、、、挑戦するかも(汗)

このCLIコマンドを使用しない代替案として、スタティックルートの優先度を変えれば良いと思います。
・Tunnel 1側のアドミニストレーティブ・ディスタンス = 10(優先、通常利用)
・Tunnel 2側のアドミニストレーティブ・ディスタンス = 11(非優先、Tunnel 1側Down時に利用)

config vdom
    edit root
        config router gwdetect
        edit 2
        set interface "vpn-fffffffffffffffff-1" ! これは VPN トンネル インターフェイスです。
        set server "169.254.2.1"

# 「set server 」は 内部IP AWS側 です。  

# 次のコマンドを使用して、gwdetect の間隔と失敗時間を設定できます。 
# 間隔は、ping 間の秒数です。 
# Failtime は、連続して失われた ping の数です。
# 2 と 5 のそれぞれの値を使用すると、トンネルは 10 秒でフェールオーバーします。

        set interval 2
        set failtime 5
    next
end

! --------------------------------------------------------------------------------
! #5: Firewall Policy 設定
! ローカル サブネットから VPC サブネットへのトラフィック、およびその逆のトラフィックを許可するファイアウォール ポリシーを作成する。
! このポリシー例では、ローカル サブネットから VPC へのすべてのトラフィックを許可します。
!
! これはルート VDOM から構成されます。

サイドメニュ- > ポリシー&オブジェクト > IPv4ポリシー > 新規作成

項目 設定値 備考
名前 任意の名前 例)lan-to-aws-2
着信インターフェイス internal や LAN等 LAN側インターフェイス
発信インターフェイス vpn-to-aws-2 作成したVPN トンネル インターフェイス
送信元 all
宛先 all
スケジュール always
サービス ALL
アクション ACCEPT
NAT ON or OFF NATはデフォルト有効になっていますが、無効にすることができます。

[OK] をクリックする。

! ここで、逆方向のトラフィックを許可するポリシーを作成します

項目 設定値 備考
名前 任意の名前 例)aws-to-lan-2
着信インターフェイス vpn-to-aws-2 作成したVPN トンネル インターフェイス
発信インターフェイス internal や LAN等 LAN側インターフェイス
送信元 all
宛先 all
スケジュール always
サービス ALL
アクション ACCEPT
NAT ON or OFF NATはデフォルト有効になっていますが、無効にすることができます。


! 追加の注意事項と質問
! - Amazon Virtual Private Cloud Getting Started Guide:
http://docs.amazonwebservices.com/AmazonVPC/latest/GettingStartedGuide

! - Amazon Virtual Private Cloud Network Administrator Guide:
http://docs.amazonwebservices.com/AmazonVPC/latest/NetworkAdminGuide