Amazon Route 53でSORACOM Air for セルラーにプライベートDNSサービスを提供する

ども、ゲストの大瀧です。
この記事はSORACOM Advent Calendar 2018の5日目です。

SORACOM Air for セルラーは、IoT向けの3G/LTE通信を提供するサービスです。SORACOM AirのSIMをセットするデバイスからendpoint.mycloud.internalといった独自のDNS名でクラウドやサーバーにアクセスしたいときには、SORACOM AirのカスタムDNS機能でDNSサーバーを指定し、DNSサーバーでそのDNS名に対応するレコードをサービスする方法があります。そこで本ブログでは、DNSサーバーとしてAWSのマネージドなDNSサービスAmazon Route 53を利用する構成をご紹介します。

構成の概要

すぐに思いつく構成としてはDNSサーバーをインターネットに公開するPublic DNSがありますが、Public DNSは不特定多数のユーザーから問い合わせを受けるのでそれなりのサーバーリソースが求められ、独自のDNS名を秘匿したい場合は用途として向いていません。そこで、SORACOMおよびAWSの以下のサービスを組み合わせて、デバイス専用のプライベートなDNSサービス構成としてみました。

  • インターネットに公開しない閉域ネットワークを提供するSORACOM CanalでAmazon VPCとピアリング接続で結ぶ
  • Amazon VPCにDNSサービスを提供するAmazon Route 53 Private Hosted Zoneに独自DNS名を登録する
  • VPCピアリング接続経由でAmazon Route 53 Private Hosted ZoneにアクセスするためにAmazon Route 53 Resolverを追加する

いずれもマネージドサービスとして提供されるのでサーバー自体の管理は不要、シンプルに運用できるのが特徴です。構成図にすると以下になります。

では、構成図の右側から順番に設定していきます。

動作確認環境

  • AWS : 東京リージョン
    • あらかじめVPCは作成済み
  • SORACOMカバレッジタイプ : 日本
    • SORACOM Air SIMは開通済み

Route 53 Private Hosted Zoneのセットアップ

まずはAmazon Route 53のManagement Consoleから、Private Hosted Zoneを作成します。作成時にタイプ(Private Hosted Zone for Amazon VPC)を選択、紐付けるVPCとしてCanalでピアリング接続するVPCを選択しましょう。今回はserver.yakiniku.localを設定したいので、Hosted Zone名はyakiniku.localです。

作成したHosted Zoneにリソースレコードを追加します。今回はserver.yakiniku.localにIPアドレス172.30.1.100を返すAレコードを設定しました。

これでOKです。

Route 53 Resolverのセットアップ

Private Hosted Zoneを提供するのはAmazon DNSというVPC内向けのDNSサービスですが、これをピアリング接続経由で利用できるようにするのがRoute 53 Inbound Resolverです *1

まずは、エンドポイント用のセキュリティグループを作成します。今回はグループ名dnsで、53/TCPおよび53/UDPを許可しました。SORACOM Canal向けに厳密にアクセス制限を設定するのであれば、0.0.0.0/0の代わりに100.64.0.0/16(CanalのVPG側CIDR)を設定しても良いでしょう。

Route 53のManagement Consoleのメニューにある[リゾルバー] - [インバウンドエンドポイント]の画面から[インバウンドエンドポイントの作成]ボタンをクリックして作成画面を表示します。

[インバウンドエンドポイントの全般設定]では、エンドポイント名は任意の名称、VPCとセキュリティグループを選択します。

続いて[IPアドレス #1]および[IPアドレス #2]で、Inbound Resolverを提供するサブネットを選択しIPアドレスを採番します。今回はは特に要件が無かったので自動採番にしました。

[送信]ボタンをクリックしてInbound Resolverが作成されたら、採番されたIPアドレス2つをメモしておきましょう。

これでOKです。

SORACOM CanalおよびカスタムDNSのセットアップ

ここからは、SORACOMユーザーコンソールでSORACOM側の設定を進めます。Canalで利用するVPG(仮想プライベートゲートウェイ)を任意の名前、と既定の設定で作成し、[実行中]になるまで待ってから[VPC ピア接続]を追加してVPCの各項目を入力します。

一旦AWS Management Consoleに戻り、VPCのピアリング接続の画面で接続申請を承認します。

合わせて、Canal側CIDR向けのルーティングもルーティングテーブルの画面から追加しておきます。これでCanalのセットアップはOKです。

最後に、SORACOM Air SIMのグループ設定からCanalとカスタムDNSを有効化します。SORACOMユーザーコンソールから任意のグループ名でSIMグループを作成し、SORACOM Air SIMをグループに追加します。

グループ設定では、SORACOM Air for Cellularの[カスタムDNS設定]をONにし、DNSサーバーにRoute 53 Inbound ResolverのIPアドレス2つを入力します。

VPG(Virtual Private Gateway)設定をオンにし、作成したVPG IDを選択します。

画面下部の[保存]をクリックすればグループ設定は完了です。既にデバイスの通信がアクティブな場合は、Canalへの接続を有効にするために一度セッションを再接続することに注意しましょう。

動作確認

では、デバイスから動作を確認してみます。今回はデバイスとしてRaspberry Piを利用しているのでRaspbian(Linux)のコマンドラインで試しました。

$ dig server.yakiniku.local

; <<>> DiG 9.10.6 <<>> server.yakiniku.local
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17651
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;server.yakiniku.local.		IN	A

;; ANSWER SECTION:
server.yakiniku.local.	300	IN	A	172.30.1.100

;; AUTHORITY SECTION:
yakiniku.local.		172800	IN	NS	ns-1536.awsdns-00.co.uk.
yakiniku.local.		172800	IN	NS	ns-512.awsdns-00.net.
yakiniku.local.		172800	IN	NS	ns-0.awsdns-00.com.
yakiniku.local.		172800	IN	NS	ns-1024.awsdns-00.org.

;; Query time: 65 msec
;; SERVER: 192.168.100.1#53(192.168.100.1)
;; WHEN: Sat Dec 01 00:10:24 JST 2018
;; MSG SIZE  rcvd: 193

ただしくDNSレコードが引けていますね!

まとめ

SORACOM AirのSIMをセットするデバイスから独自のDNS名を利用するために、SORACOM CanalとAmazon Route 53を組み合わせた構成をご紹介しました。いろいろな機能を組み合わせるので初期設定は少し複雑ですが、一度設定すればRoute 53の画面から手軽にDNS設定ができる、運用しやすい構成かなと思います。

参考URL

脚注

  1. Route 53 ResolverはVPN経由のオンプレミスネットワーク向けで紹介されることが多いですが、VPC内部やVPCピアリング経由で利用することもできます。