ひょんなことから、オンプレミス上のFortiGateというファイアウォールとAWSをSite-toSite VPNで接続する必要があり、インフラチームに代わってAWS側の設定をすることになった(※FortiGate側の設定については当記事で記載しないので悪しからず)。通常の業務ではインフラ業務に関わることは少ないため貴重な機会を得られた。その設定方法を残しておく。

目次
ネットワーク構成図
ネットワーク構成図は、以下になる。

今回、社内ネットワークの一部のIPアドレスを払い出してもらい、AWSのVPCに割り当て、社内からのみ接続できるようにする。ただ、そうすると社外からAWS側の設定ができないため、AWS設定時に使うパブリックルートテーブルを別に用意し、設定時はInternet Gatewayからアクセスし(自IPアドレスのみアクセス可とすること!)設定を行い、設定後はプライベートルートテーブルに切り替える対応を行った。
前提条件
必要な情報
・AWS側で使う社内のIPアドレス:192.168.155.0/24
・カスタマーゲートウェイデバイスのWAN側のIPアドレス:210.206.188.3
VPCの作成
VPCサービス画面から「VPCを作成」ボタンをクリック。

後で見てわかるような名前をつける。「IPv4 CIDR」には先ほどのローカルIPアドレス、192.168.155.0/24 を入力する(複数のセグメントを作りたい場合は、192.168.0.0/16 などとする)。

タグにもわかりやすい名前をつけ、「VPCを作成」ボタンをクリックするとVPCが作られる。

サブネットの作成
左メニューのサブネットから、「サブネットを作成」ボタンをクリック。

「VPC ID」に先ほど作成したVPCを選択する。

サブネット名「Private-Subnet-a」などを入力。アベイラビリティゾーンを「アジアパシフィック(東京)/ ap-northeast-1a」を選択。「IPv4 CIDRブロック」に先ほどと同じローカルIPアドレス、「192.168.155.0/24」を入力。「サブネットを作成」ボタンクリックでサブネットが作成される。

ルートテーブル→サブネットの関連付け
左メニューの「ルートテーブル」からルートテーブルを表示し、作成したルートテーブル(右のほうに今回のVPCの名前があるもの)のNameをわかりやすい名前(Private Route Tableなど)をつけておく。

そのルートテーブルにチェックをつけ、下に表示される情報エリアの「サブネットの関連付け」タブをクリック。「サブネットの関連付けを編集」ボタンをクリック。

先ほど作成したサブネットにチェックをつけ、「関連付けを保存」ボタンをクリック。

先ほど作成したサブネットにチェックをつけ、「関連付けを保存」ボタンをクリック。VPN接続完了後、ルートテーブルを再度設定するが、それは後ほど。
仮想プライベートゲートウェイ(Virtual Private Gateway)の作成
左メニューの「仮想プライベートゲートウェイ」をクリックし、「仮想プライベートゲートウェイの作成」ボタンをクリック。

名前タグに仮想プライベートゲートウェイであることがわかり名前をつけ、「仮想プライベートゲートウェイの作成」ボタンをクリック。

仮想プライベートゲートウェイが作成される。

作成した仮想プライベートゲートウェイにチェックが入っていることを確認し、「アクション」から「VPCにアタッチ」をクリック。

作成したVPCを選択し、「はい、アタッチします」をクリック。これで仮想プライベートゲートウェイが作成される。

カスタマーゲートウェイ(Customer Gateway)の作成
左メニューの「カスタマーゲートウェイ」をクリック。「カスタマーゲートウェイの作成」ボタンをクリックする。

名前にカスタマーゲートウェイであることがわかる名前をつける。ルーティングは「動的」。BGP ASNはデフォルトの「65000」のままとする。IPアドレスに、カスタマーゲートウェイデバイスのWAN側のIPアドレスである「210.206.188.3」を入力し、「カスタマーゲートウェイの作成」ボタンをクリックする。これでカスタマーゲートウェイが作成される。


サイト間のVPN接続 の作成
左メニューの「サイト間のVPN接続」をクリックし、「VPN接続の作成」ボタンをクリック。

名前にVPNであることがわかる名前をつける。Target Gateway Typeはデフォルトの「Virtual Private Gateway」。仮想プライベートゲートウェイは先ほど作成した仮想プライベートゲートウェイを選択する。カスタマーゲートウェイは「既存」とし、カスタマーゲートウェイIDは先ほど作成したカスタマーゲートウェイを選択する。その他はデフォルトのまま。


「VPN接続の作成」ボタンクリック。

VPN接続が作成される。

最後に、「設定のダウンロード」ボタンをクリックし、今回使用するカスタマーゲートウェイデバイスの製品を選択し、「ダウンロード」ボタンをクリックするとカスタマーゲートウェイ側で使う設定ファイルがダウンロードできる。カスタマーゲートウェイ設定担当者に送る。

カスタマーゲートウェイ側の設定
申し訳ないが、今回こちらの設定は実施していないので割愛する。
VPN接続の確認
左メニューの「サイト間のVPN接続」をクリックし、VPN接続の状況を確認する。画面下の「トンネルの詳細」タブをクリックすると、トンネルの状態を確認できる。ステータスが「Up」となっていれば成功。

ルートテーブルを切り替え可能に
今回、インターネットゲートウェイ経由で接続することも可能にしたいためパブリックルートテーブルも作成する。また、プレイベートルートテーブルを再設定する。
パブリックルートテーブルの作成
左メニューの「ルートテーブル」リンクをクリックし、「ルートテーブルを作成」ボタンをクリックする。

名前に「Public Route Table」と入力し、VPCに作成したVPCを選択し、「ルートテーブルを作成」ボタンをクリック。

「ルートを編集」ボタンをクリック。

「ルートを追加」ボタンをクリック。

送信先に「0.0.0.0/0」、ターゲットに作成したインターネットゲートウェイを選択する。その後、「変更を保存」ボタンをクリック。

プライベートルートテーブルの設定
ルートテーブルの一覧画面にて、「Private Route Table」にチェックをつけ、下画面の「ルート」タブをクリックし、「ルートを編集」ボタンをクリック。

「ルートを追加」ボタンクリック後、送信先に「0.0.0.0/0」、ターゲットに作成した仮想ゲートウェイを選択し、「変更を保存」ボタンをクリック。これで、パブリックルートテーブルとプライベートルートテーブルの2つが用意できた。

サブネットのルートテーブルの関連付け
サブネットがどのルートテーブルを見に行くのかを設定する。左メニューのサブネットから、作成したサブネットにチェックをつけ、下画面の「ルートテーブル」タブから「ルートテーブルの関連付けを編集」ボタンをクリック。

「ルートテーブルID」において、「Public Route Table」「Private Route Table」が選べるので、外部から接続したい場合は「Public Route Table」を、社内からのみの接続に限定したい場合は「Private Route Table」を選択する。

EC2インスタンスの作成
EC2インスタンスを作成する。EC2サービス画面の「インスタンスを起動」ボタンをクリックし、「インスタンスを起動」をクリック。

ステップ1:Amazon マシンイメージ(AMI)
無料利用枠の「Amazon Linux2 AMI(HVM) – Kernel 5.10, SSD Volume Type」を「選択」。

ステップ2:インスタンスタイプの選択
何もせずに「次のステップ:インスタンスの詳細の設定」ボタンをクリック。

ステップ3:インスタンスの詳細の設定
「ネットワーク」に先ほど作成したVPCを選択。「サブネット」も先ほど作成したサブネットを選択。「自動割り当てパブリックIP」を「有効」にする。

以下はデフォルトのまま。

以下もデフォルトのまま。

最後の「ユーザーデータ」に以下の初期実行スクリプトをコピペする。内容は、Apacheをインストールし、起動するというもの。「次のステップ:ストレージの追加」ボタンをクリック。
#!/bin/bash
yum -y update
yum -y install httpd
systemctl enable httpd.service
systemctl start httpd.service

ステップ4:ストレージの追加
「次のステップ:タグの追加」ボタンをクリック。

ステップ5:タグの追加
キーに「Name」値に「Web」などを入力しておくとインスタンス起動の際、わかりやすい。「次のステップ:セキュリティグループの設定」ボタンをクリック。

ステップ6:セキュリティグループの設定
いわゆるファイアウォールの設定を行う。「セキュリティグループの割り当て」は、「新しいセキュリティグループを作成する」を選択。「ルールの追加」ボタンでSSHやHTTPを追加し、ソースは「マイ IP」とし、自分のPCからのみアクセス可とする。「確認と作成」ボタンをクリック。

ステップ7:インスタンス作成の確認
確認画面が表示される。「起動」ボタンをクリックする。

後ほどSSHで接続するため、「新しいキーペアの作成」を選択し、キーペア名に適当なファイル名を入力し、「キーペアのダウンロード」ボタンをクリック。ダウンロードしたファイルは後ほどSSH接続する際に使うので大事にとっておく。

インスタンス作成が開始する。インスタンスが実行中になるまで待つ。

セキュリティグループの切り替えを可能に
ルートテーブルの切り替えと共に、セキュリティグループにおけるインバウンドルールの切り替えもできるようにする。EC2の左メニューから「インスタンス」をクリックし、対象となるEC2のチェックボックスをつけ、下画面に表示される「セキュリティ」タブをクリックし、セキュリティグループのリンクをクリックする。

「インバウンドのルールを編集」ボタンをクリック。

サブネットのルートテーブルが「Public Route Table」の時は、ソースを「マイ IP」を設定する。自分のPCのみを許可する。

サブネットのルートテーブルが「Private Route Table」の時は、ソースを「Anyware-IPv4」を設定する。社内からのアクセスを全て許可する。

おまけ:プロキシの設定
社内のプロキシを通す必要があったのでその手順を残しておく。
sudo vi /etc/profile
以下を追記する。
PROXY='http://10.11.101.79:8080'
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
設定内容を反映し、設定内容を確認する。
source /etc/profile
printenv
■参考にしたページ:【Linux】Proxy適用 – Qiita
https://qiita.com/dan-go/items/5d6b58766bf4d918450e
参考サイト
▼Amazonの基本となるドキュメント。ただし初心者には理解が難しい・・。
■開始方法 – AWS Site-to-Site VPN
https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/SetUpVPNConnections.html#vpn-create-cgw
▼今回最も参考になったページ。非常に親切に丁寧に記載されており感謝しかない。
■FortigateとAWS VPCとVPN(IPsec)で接続する | いくらは神の食べ物
https://www.ikura-oisii.com/191/
▼江口智さんの解説がとてもわかりやすい。しっかりと理解するため何度も見る。
■AWS Hands-on for Beginners – Network#1 | AWS
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Network1-2020-reg-event-LP.html
▼以下は高度だがイメージを掴むために確認。
■AWS Hands-on for Beginners – Network編#2 Amazon VPC間およびAmazon VPCとオンプレミスのプライベートネットワーク接続 | AWS
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Network2-202009-reg-event-LP.html
■[AWS Black Belt Online Seminar] AWS Site-to-Site VPN | Amazon Web Services ブログ
https://aws.amazon.com/jp/blogs/news/webinar-bb-site-to-site-vpn-2021/
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Network2-202009-reg-event-LP.html
まとめ
AWSの管理コンソールを使って比較的簡単にインフラの設定ができるのは非常にありがたい。従来のようにOSの設定ファイルを触ったり特殊なコマンドを使ったりすることなく、GUIで操作できるため、インフラ設定に対する敷居は格段に下がったように感じた。クラウドの恩恵を十分に感じることができた数日間だった。
今回想定の検索ワード
”AWS FortiGate200E Site-to-Site”