AWS Client VPN Endpointがアタッチ済みのVPCからInternet Gatewayをデタッチする際に苦労した話

記事タイトルとURLをコピーする

こんにちは。クラウドインテグレーション部(CI部)技術2課の山下です。

今回は、AWS Client VPN Endpoint(以下、VPNエンドポイント)がアタッチされているVPCから Internet Gateway(以下、IGW)をデタッチする際に少々苦労したため、 備忘のために記事にしたいと思います。

今回のユースケース

今回構築した環境は下図です。

f:id:swx-yuki-yamashita:20211122163926p:plain

Simple Active Directory(以下、Simple AD)+ Client VPNを利用し、管理者PCからプライベートサブネットのアクセス確認用サーバへアクセスできるようにします。 IGW+パブリックサブネットの踏み台サーバは、AD管理サーバの初期構築のために用意しました。

Client VPN構築完了後は、AD管理サーバにもVPN経由でアクセスするようにしました。完成形ではClient VPNアクセスのみが必要で、IGWおよび踏み台サーバはあくまで初期構築用だったため、これらのリソースは削除することにしました。

f:id:swx-yuki-yamashita:20211124172238p:plain

まとめると、以下のようなケースが対象となります。

  • VPCへのClient VPNアクセスが必要
  • VPCとインターネットの通信は不要
  • ただし、初期構築時に一時的に、VPCとインターネットの通信が必要

なお、Client VPN障害時のメンテナンス用としてIGW+踏み台経由のアクセス経路を残したい場合や、クライアントPCをClient VPN経由でインターネットアクセスさせたい場合は、IGW+パブリックサブネットは削除せずそのまま利用します。

IGWデタッチの失敗

事象

上述通り、不要になったパブリックサブネットのリソースを全て削除し、IGWのデタッチを試みましたが、 「Network vpc-xxxx has some mapped public address(es).Please unmap those public address(es) before detaching the gateway.」というエラーが出てデタッチできませんでした。

f:id:swx-yuki-yamashita:20211122155002p:plain
IGWデタッチのエラーメッセージ



f:id:swx-yuki-yamashita:20211122155015p:plain
IGWデタッチ失敗時の状態

考察

以下の記事の通り、IGWは、パブリック IP アドレスまたは Elastic IP アドレス(以下、EIP)が関連付けられているVPCからはデタッチできません。

docs.aws.amazon.com

しかし今回はパブリックIPアドレスを持つリソースは削除済みですし、EIPは使用していません。

また、VPNエンドポイントはプライベートサブネットに関連付けていたので、 ネットワークインタフェースにパブリックIPアドレスは付与されていません。

f:id:swx-yuki-yamashita:20211122160003p:plain
ネットワークインタフェースのステータス

  • (補足)VPNエンドポイントのネットワークインタフェースは、マネジメントコンソールの「EC2 > Network Interfaces」から確認可能です。「説明」欄に「ClientVPN Endpoint resource.」と記載されているものが対象です。

IGWをターゲットにしたルートテーブルも削除済みで、一見すると何も問題がなさそうでした。

解決方法

切り分けのために、VPNエンドポイントのサブネットの関連付けを解除したら、IGWをデタッチできました。

f:id:swx-yuki-yamashita:20211122161821p:plain
VPNエンドポイントからサブネットの関連付けを解除



f:id:swx-yuki-yamashita:20211122161903p:plain
IGWのデタッチ成功



f:id:swx-yuki-yamashita:20211122161933p:plain
デタッチ成功時の状態


たとえ関連付けているサブネットがプライベートサブネットであったとしても、 VPNエンドポイントのサブネットの関連付けを一時的に解除する必要がありました。

考えられる原因

VPNエンドポイントが保持しているパブリックIPアドレスが、IGWデタッチの制約に引っかかっていたようです。

マネジメントコンソール上からは確認できませんが、VPNエンドポイントは、VPNクライアントと通信するためのパブリックIPアドレスを保持しています。 クライアントPCからエンドポイントに対して名前解決を行うと、パブリックIPアドレスが返されます。

C:\Users\Yamashita>nslookup *.cvpn-endpoint-08xxxxxxxxxxxxd05.prod.clientvpn.ap-northeast-1.amazonaws.com
サーバー:  UnKnown
Address:  xxxx:xxxx:7f01:b::3

権限のない回答:
名前:    *.cvpn-endpoint-08xxxxxxxxxxxxd05.prod.clientvpn.ap-northeast-1.amazonaws.com
Addresses:  18.xxx.20.198
          52.xxx.15.28
          176.xxx.9.6



f:id:swx-yuki-yamashita:20211122165704p:plain
VPNエンドポイントが保持するパブリックIPアドレス

おわりに

ということで、VPNエンドポイントがアタッチされているVPCでは、IGWのデタッチに少々注意が必要でした。
この記事が同じような事象で悩んでいる方の参考になれば幸いです。