どんな記事か
AWS公式の『AWS Client VPN Basic ハンズオン』(こちら)で躓いたところをまとめた記事です。引っかかった部分のみにフォーカスして記事にしているため、ハンズオンの構築から疎通テストまでの全手順が知りたい方は、こちらをご参照ください。
構築したシステムは以下の通りです。図はハンズオンから引用しました。
どこで躓いたのか
ハンズオン終盤でVPN接続が完了して、実際にAWSリソース(EC2)にアクセスできるかどうかpingを飛ばしてみたのですが、うまくいきませんでした。コンソールで以下は確認済みです。
- Client VPNエンドポイントの接続はAvailable
- VPN接続が確立した時点で、クライアント VPN エンドポイント IDのステータスもActive
- リソースの値や設定は間違っていない(ハンズオン通り)
- セキュリティグループ、NACLのルールも問題ない
結論
原因はクライアントVPNエンドポイントの承認ルールの記載内容にありました。承認ルールとは何なのか、公式ドキュメント(こちら)から説明文を引用します。
承認ルールは、ネットワークへのアクセス許可を与えるファイアウォールルールとして機能します。承認ルールを追加することで、特定のクライアントに対し、特定のネットワークへのアクセス許可を与えます。アクセス許可の対象となるネットワークそれぞれに、承認ルールが必要となります。コンソールと AWS CLI を使用して、クライアント VPN エンドポイントに承認ルールを追加できます。
クライアントVPNエンドポイントにはセキュリティグループを付与できるのですが、それとはまた別でこんな仕組みがあったのですね。ハンズオンを通して初めて知りました。
承認ルールの設定
では具体的に承認ルールをどう記載したかを述べます。クライアントVPNエンドポイント作成後、「承認ルール」タブから、「認証ルールを追加」を選択すると承認ルールを設定できます。
その後、下のような画面が出てきます。このとき、ハンズオンでは「アクセスを有効にする送信ネットワーク」の項目に「198.19.0.0/16」と入力するように記載されていますが、これだとVPCから外に出る通信のアクセス許可が無いため、EC2からpingが返ってきません。なので代わりに「0.0.0.0/0」と入力します。
※ちなみにハンズオンと内容が似ている、AWS Skill Builderの「Configure and Deploy AWS Client VPN」(こちら)の方でもここの値は「0.0.0.0/0」に設定するように指示されています。
最終的な設定は以下のようになりました。再度pingをうったところ、今度はうまくいきました!
終わりに
今回は、AWS公式のハンズオンで詰まった部分とその解決策について述べました。最初は「公式ハンズオン一つできない自分ってなんなんだ…」とへこみましたが、何とか解決まで至ってよかったです。他にいい方法等あれば、コメント等いただけますと幸いです。ここまでお読みいただきありがとうございました。