はじめに
よくよく考えれば簡単なことですが、ず~~~っと同じ問題に苦しんでいたのでもし同じような事をしようとしてる人の助けになれば幸いです。
何が起きた?
AWS Client VPN Endpointを使用して、AWSとオンプレのリソースに加えて固定IPによる認証があるサービスへのアクセスを行うためのVPNを構成していました。
上記のように
- Client VPN Endpointに10.255.0.0/22のネットワークを割り当て
- 2つのターゲットネットワークを関連付け
- AWSとオンプレのリソースはMainサブネットへルーティング
- その他はclient-vpn-tunnel-subnetへ向け、client-vpn-subnetにNATを設置しIGWへ出る
といった構成にしていました。
この構成で
10.255.0.0/24(10.255.0.0~10.255.0.255)のクライアントはインターネットへ出られる
(NAT Gatewayを通過出来る)
それ以外の範囲(10.255.1.0~10.255.3.255)のクライアントはインターネットへ出られない
(NAT Gatewayを通過できない)
という症状が発生しました。
また、実験を進めると、関連付けするネットワークの順番を反対にすることで症状が反転することが判明しました。
さらに、Mainサブネットに対しても0.0.0.0/0のルーティングを切った所、グローバルに出られるようになりましたが、グローバルIPアドレスはNATゲートウェイのものではなく、特定不能なIPアドレスになりました。
これはNATせずInternet Gatewayを直接通過する場合はClient VPN Endpointに紐づけられるNICに設定されるパブリックIPアドレスになるためかと思われます。
解決方法
最終的にMainサブネットへの関連付けを解除し、client-vpn-tunnel-subnetへ0.0.0.0/0でルートを切りました。
そして、client-vpn-tunnel-subnetのルーティングはMainルーティングを丸写しし、0.0.0.0/0はNATゲートウェイへ向けることで解決しました。
AWS・DirectConnectの先のオンプレリソースへの接続や、IP固定アクセスもOKです。
なお、Mainサブネットの設定変更が発生した場合は同じく変更が必要になります。