[AWS Client VPN] カスタムDNSサーバを使用する

AWS Client VPNを掘り下げるシリーズです。今回は、Client VPNで設定可能なパラメータの1つである、カスタムDNSサーバを検証してみました。
2019.05.30

こんにちは、菊池です。

まだまだ続く、AWS Client VPNを掘り下げるシリーズです。今回は、Client VPNで設定可能なパラメータの1つである、カスタムDNSサーバを検証してみました。

AWS Client VPN のカスタムDNSサーバ

カスタムDNSは、VPNクライアントが利用するDNSサーバを指定する機能です。クライアントがVPN接続した際、指定したDNSサーバのIPがDHCPでVPNインタフェースに設定されます。任意のDNSサーバを指定することで、クライアント側のオンプレミスや、接続先VPC内のプライベートな名前解決を可能にすることができます。なお、カスタムDNSサーバは、Client VPN エンドポイント作成時に設定可能です。また、作成済みのClient VPNエンドポイントに対しても後から設定・変更が可能です。

今回の検証では、VPC内のプライベートIPを解決するために、DNSサーバを設定してみます。VPC内で利用できるDNSサーバとしては、以下のいずれかが挙げられます。

  • EC2に起動したDNSサーバ
  • AWS Directory Service
  • Amazon DNS
  • Amazon Route53 Resolver

参考:

上記のDNSサーバから、今回はAWS Directory ServiceとAmazon DNSを試してみました。

カスタムDNSサーバを設定する

まずはClient VPNの設定から。デフォルトでは、カスタムDNSサーバーは設定されません。そのため、コンソール上のDNSサーバは空欄になっています。変更の際は、[アクション] の [クライアントVPNエンドポイントの変更]から可能です。

この状態でVPNを接続しても、クライアント側ではDNSサーバのIPは自動で設定されません。

AWS Directory ServiceをカスタムDNSサーバに指定する

まずはAWS Directory ServiceをカスタムDNSサーバに設定してみます。ClientVPNのAD認証のために同一VPC内に起動した、SimpleADを利用します。SimpleADの画面から、DNSのIPアドレスが確認できます。

このIPアドレスを、ClientVPNエンドポイントに設定します。

カスタムDNSサーバーとして、SimpleADが設定されました。

この状態で、クライアントからVPNを接続します。接続した上で、VPNインタフェースを確認すると、指定したIPがDNSサーバに設定されていることが確認できました。

DNSに問い合わせ、名前解決ができるか確認します。VPN内のプライベートIPが解決できていることを確認するため、SQSのVPNエンドポイント(インタフェースエンドポイント参考)を作成し、sqs.ap-northeast-1.amazonaws.comを名前解決してみます。

ちゃんとVPC内のCIDRで結果が取得できました!

Amazon DNSをカスタムDNSサーバに指定する

続いて、Amazon DNSを試してみます。Amazon DNSは、VPC内に存在するVPC専用のDNSで、VPC CIDRの2番目のIPアドレスが予約されています(例えば、CIDRが10.0.0.0/16のVPCでは、10.0.0.2)。

今回利用しているVPCのCIDRは172.31.0.0/16なので、172.31.0.2をClientVPNエンドポイントに設定します。

設定されました。

先ほどと同様、クライアントからVPNを接続します。接続した上で、VPNインタフェースを確認すると、指定したAmaozn DNSのIPがDNSサーバに設定されていることが確認できました。

同じくSQSのエンドポイントを名前解決してみると、プライベートIPが取得できました!

つまり、VPC内の名前解決には、特別な追加リソースを必要としないAmazon DNSが利用可能ということです。

まとめ

AWS Client VPNで利用可能なカスタムDNSサーバを試しました。

検証の結果わかった、Amazon DNSが利用できるというのが非常に大きいと思います。Amazon DNSは基本的にVPC内からの利用しかできませんでしたので、外部から利用するにはAmazon Route53 Resolverなどの追加リソースが必要でした。VPC内にENIを生成しNATするClient VPNでは、直接Amazon DNSが利用できますので、簡単にVPN内の名前解決や、Route53プライベートホステッドゾーンも利用できるということになります。