DNS

記事作成の背景

ポートフォリオをherokuにデプロイした際にDNSの設定をしたため。
設定時はQittaやブログの記事をそのまま参考にしたため、どういった仕組みで動作しているか理解しきれていなかった。
そのため、DNSの仕組みを再確認した上で、herokuのデプロイ作業で何をやっていたか自分の理解のために記事をまとめる。

DNSとは

IPアドレスドメインを変換するサービス

IPアドレスはインターネット上で通信先のコンピュータを特定するための番号。
ex)192.168.10.1

ドメインIPアドレスを人間が見て理解しやすい名前にしたもの。
ex)google.com

DNSIPアドレスドメインの相互変換するサービス。 (この変換を名前解決と呼ぶ)
ブラウザからwebページにアクセスする際は、ドメイン名を元にIPアドレスを特定している。

  1. クライアントからDNSサーバーに「google.com」のIPアドレスを問い合わせる
  2. DNSサーバーが「google.com」に紐づくIPアドレスをクライアントに返す
  3. クライアントは返されたIPアドレスのサーバーにアクセスする

もう少し細かく書くと、クライアントからの問い合わせはDNSサーバーを複数経由している。
(世界中の全てのドメインを1つのDNSサーバーで管理しきれないため、.comのDNSサーバー→google.comのDNSサーバーのように名前解決できるDNSサーバーに問い合わせている)

また直接DNSサーバーにアクセスせず、名前解決のデータを一時保存するDNSキャッシュサーバーが応答していることが多い。 (DNSサーバーの処理負荷軽減・応答速度の向上のため)

デプロイ作業

デプロイまでに行なった作業は以下の通りです。
- ドメインの取得
- herokuの設定
- ドメイン追加
- PointDNSの設定
- ネームサーバーの設定

これらの作業で何をやっていたいのか書いていきます。

  1. ドメインの取得
    IPアドレスと紐付けるドメインを取得します。
    お名前.comで取得しました。取得が簡単で利用者が多い分、参考となる記事も多いため。

  2. herokuの設定

    1. ドメイン追加
      お名前.comで追加したドメインをherokuに登録しました。

    2. PointDNSの設定
      PointDNSとは追加したドメインDNSサーバーに登録されることで、アプリをデプロイしたherokuのサーバーにリダイレクトされる機能です。

      Adding PointDNS to your app will properly configure your custom domain for Heroku and gives you the ability to add and customize your DNS with A, AAAA, CNAME, MX, SRV or TXT records. You can setup permanent HTTP redirects directly from the web interface. Replicate your records to your own DNS servers using zone transfers. PointDnsから抜粋

      この機能により、追加したドメインDNSサーバーにより名前解決され、herokuのサーバーにアクセスすることが出来ます。

  3. ネームサーバーの設定
    ネームサーバーとはドメイン名をIPアドレスに変換するサーバー、つまりDNSサーバーです。
    お名前.comからherokuのDNSサーバーを登録します。
    上記設定により取得したドメインの名前解決を行うDNSサーバーからアプリをデプロイしたサーバーにリダイレクトされます。

    1. クライアントからherokuのDNSサーバーに問い合わせ
    2. DNSサーバーがアプリをデプロイしたサーバーにリダイレクト
    3. クライアントがデプロイしたサーバーにアクセス

参照