HTTPS化したGitHubページのドメイン設定に於けるCNAME運用をCloudFlareで実施する

バージョン管理のクラウドサービスとして台頭し、 先日マイクロソフト社に買収されて話題になった GitHub では、リポジトリをホームページとして公開出来、 頃日にはHTTPS化もワンクリックで可能となったのを受け、 本ブログに記事をものしたのは2018年6月30日でした。

独自ドメインのgithubページをHTTPS化する

さて、此のホームページは GitHub のリポジトリですから Git に依るバージョン管理が可能なのは勿論にて、 むしろ其れでこそ此のサービスを利用する旨味があるのでした。 ローカルでホームページを編集し、 add して commit した上でリモートの GitHubリポジトリに push すればホームページはバージョン管理されながら更新される訳です。

処で2018年6月30日の記事の如き設定では問題が惹起されます、 と言うのも GitHubに pushする度に GitHubから Page build warning と題目された警告メールが届くのでした。 其の内容は以下のようなものです。

The page build completed successfully, but returned the following warning for the `gh-pages` branch:

Your site's DNS settings are using a custom subdomain, fuga.hoge.com, that's set up as an A record. We recommend you change this to a CNAME record pointing at [YOUR USERNAME].github.io. For more information, see Using a custom domain with GitHub Pages .

スポンサーリンク

大約、 ホームページのビルドには成功しているが、 独自ドメインの設定にAレコードを使っているから、 CNAMEレコードに設定変更してもらえまいか、と言う内容です。 詳細は以下参照との警告メールのリンク先の User Documentation を閲すれば項目名が並びなかなか要領を得難くもあるようですが、 兎にも角にも警告メールには custom subdomain なる文字列が見られますから、 項目の一つを開いてみます。

Setting up a custom subdomain

其処には然るべくDNSプロバイダーで処理すれば、 dig コマンドで以下の例文の如き出力を得られるあろう、とあります。

dig docs.example.com +nostats +nocomments +nocmd
;docs.example.com.  IN  A
docs.example.com.  3592  IN  CNAME  YOUR-USERNAME.github.io.
YOUR-USERNAME.github.io.  43192  IN  CNAME  < GITHUB-PAGES-SERVER >.
< GITHUB-PAGES-SERVER >.  22  IN  A  199.27.XX.XXX
  

此処で登場する不可思議な設定項目に < GITHUB-PAGES-SERVER > があります。 恐らくは GitHubページに利用するネームサーバーを指すのでしょうが、 当該ページには具体名の明示がありません。 其処でネットを繰ると該当すると思われる具体名が幾つか得られます。

< GITHUB-PAGES-SERVER > 部分に該当すると思われるサーバー名が両者には記述され、 其の違いは本体の github.map.fastly.net. 頭に sni. が付くか否かのみです。 では試しに2018年6月30日の記事で設定済の手元の環境を nslookup してみますと以下の様な出力が得られました。

名前: sni.github.map.fastly.net
Addresses: 185.199.110.153
      185.199.111.153
      185.199.108.153
      185.199.109.153
Aliases: hoge.github.io

もう少し突っ込めば記事の公開日付の新しい方に sni なる接頭辞が誂えられていると見られます。 前者が時期が新しく、後者が古く、サーバーはセキュア化されていません。 勿論、手元の環境はセキュアサーバー化済みで sni付きですので、 どうやらHTTPS化に関する事項だと予想が付くでしょう。 以下列挙するサイトなどを見れば SNIとは Server Name Indication の略で一つのグローバルIPアドレスで複数のSSLサーバ証明書を利用可能とする仕様であるのが分かります。

考えて見れば GitHubは多くの独自ドメインをセキュアに扱わなければならないので此れは当然の処置です。 従って此処で採用されるべきアドレスは sni.github.map.fastly.net. になるでしょう。 すると契約しているレジストラなどで DNS設定は以下の如くなされるべきだと考えられます。

fuga.hoge.com. 3600 IN CNAME fuga.github.io.
fuga.github.io. 3600 IN CNAME sni.github.map.fastly.net.
sni.github.map.fastly.net. 3600 IN A 185.199.108.153
sni.github.map.fastly.net. 3600 IN A 185.199.109.153
sni.github.map.fastly.net. 3600 IN A 185.199.110.153
sni.github.map.fastly.net. 3600 IN A 185.199.111.153

処が此処で一つ難儀な問題が惹起されます。 レジストラ等に付随の一般的なDNSプロバイダでは、 ゾーン設定のラベルへの記述に他ドメインは許可されないのです。 例えば お名前ドットコム では当該入力がエラーを招きますので、 若しかしたらとエクスポート、インポート機能を用いても結果は同じでした。 ムームードメイン でも同様です。 偶々ドメインを他社に移管して現在では実施テスト出来ない さくらインターネット にもメールで問い合わせて見ましたが、 明瞭に用意されていない旨の返答を受けました。 斯うなると不能が当たり前に思えて来ますが、 受け入れれば何時迄も GitHubからの警告メールも許容しなければなりませんし、 其の内当の名前解決すらしてくれなくなるかも知れず、 些か頼りないDNS環境を抱えて運用しなければなりません。

其処で登場するのが Cloudflare です。 Webパフォーマンスとセキュリティを追求する企業、と自らを謳うのは、 CDN(Content Delivery Network)サービスや、 DDoS対策をコアコンピタンスとするからで、 頃日にはアドレス 1.1.1.1 のDNSプロキシサービスを発表して話題になりました通り、 インターネットトラフィックを捌くのに卓越している企業であるのが分かります。 此の米国を本拠とする Cloudflare社はまた、 DNSプロバイダーでもあり、無料で利用可能なプランも用意されています。 未だ GitHubがHTTPSサービスを提供する以前、 GitHubページに独自ドメインを実現するのに多く使われてもいました。

アカウントは Cloudflare のトップページからサインアップすれば簡単に取得可能です。 アカウントを取得し、 編集すべきドメイン名を加えればスキャンが始まり、 現レジストラの設定が其の儘写し取られるかも知れません。 但し手元の編集を望むドメインではサプドメイン wwwや MXレコードを利用していませんでしたので、 其れが影響してか、スキャンでは何も写し取られませんでした。 然うなっても少し手間は掛かりますが遷移したDNS設定ページで現設定を移し変えるだけです。 先ずは手始めに2018年6月30日の記事で設定した問題のあるGitHubページの為のDNS設定を移管して見ました。

A  fuga  points to 185.199.108.153  Automatic  DNS and HTTP Proxy (CDN)
A  fuga  points to 185.199.109.153  Automatic  DNS and HTTP Proxy (CDN)
A  fuga  points to 185.199.110.153  Automatic  DNS and HTTP Proxy (CDN)
A  fuga  points to 185.199.111.153  Automatic  DNS and HTTP Proxy (CDN)

サブドメインしか運用しないテスト的なドメインで、 メールサーバーも利用していませんからAレコードばかりですが、 他のIPアドレスに割り振るサブドメインも有り、其れは此処では略しています。 然る後、Continueをクリックすれば CloudFlare指定のネームサーバー名が得られるでしょう。 恐らくは何文字かの最初のピリオド迄の接頭辞に lina.ns.cloudflare.com の文字列の続く、異なる二つのネームサーバー名が得られるでしょう。 レジストラ等に設定されているネームサーバーから此の両者に変更します。 3つ以上のネームサーバーで運用されている場合は其れを削除するようにも CloudFlareには説明されています。 此の設定が浸透しているかはターミナル等で確認すれば良いでしょうし、 上手く出来ていなければ現運用のwebサイトは見られなくなっているでしょう。

浸透が確認出来て、オンラインでwebサイトが確認出来れば、 ネームサーバーはCloudFlare指定のものに確り移っていますので、 愈々、GitHubから警告された処の CNAME運用の設定を施します。 以下の如くなるでしょう。

del  A  fuga  points to 185.199.108.153  Automatic  DNS and HTTP Proxy (CDN)
del  A  fuga  points to 185.199.109.153  Automatic  DNS and HTTP Proxy (CDN)
del  A  fuga  points to 185.199.110.153  Automatic  DNS and HTTP Proxy (CDN)
del  A  fuga  points to 185.199.111.153  Automatic  DNS and HTTP Proxy (CDN)
add  CNAME  fuga  fuga.github.io.  Automatic  DNS and HTTP Proxy (CDN)
add  CNAME  fuga.github.io.  sni.github.map.fastly.net.  Automatic  DNS and HTTP Proxy (CDN)
add  A  sni.github.map.fastly.net.  points to 185.199.108.153  Automatic  DNS and HTTP Proxy (CDN)
add  A  sni.github.map.fastly.net.  points to 185.199.109.153  Automatic  DNS and HTTP Proxy (CDN)
add  A  sni.github.map.fastly.net.  points to 185.199.110.153  Automatic  DNS and HTTP Proxy (CDN)
add  A  sni.github.map.fastly.net.  points to 185.199.111.153  Automatic  DNS and HTTP Proxy (CDN)

最終的な設定は以下の如くなるでしょう。

CNAME  fuga  fuga.github.io.  Automatic  DNS and HTTP Proxy (CDN)
CNAME  fuga.github.io.  sni.github.map.fastly.net.  Automatic  DNS and HTTP Proxy (CDN)
A  sni.github.map.fastly.net.  points to 185.199.108.153  Automatic  DNS and HTTP Proxy (CDN)
A  sni.github.map.fastly.net.  points to 185.199.109.153  Automatic  DNS and HTTP Proxy (CDN)
A  sni.github.map.fastly.net.  points to 185.199.110.153  Automatic  DNS and HTTP Proxy (CDN)
A  sni.github.map.fastly.net.  points to 185.199.111.153  Automatic  DNS and HTTP Proxy (CDN)

設定終了したら ターミナル等で digなり nslookupで確認すれば良いのですが、 テスト的に Aレコードのみを先ず設定していれば先ず問題なく反映されるのではないかと思います。 全てが首尾良く運べば、 後は GitHubページを更新して pushの後に GitHubから警告メールが届かなければ作業終了です。 取り敢えず運用出来るものの更新の度に届く警告メールと言う引っ掛かりもなくなれば、 GitHubページの更新も捗る様に感じられるものです。

今回実施したCloudFlareのDNS設定
今回実施したCloudFlareのDNS設定

今回、CloudFlareのDNSサービスが頗る使い勝手の良く感じられましたので、 若し機会有れば、CDNサービスや、其の様な機会の有って欲しくはないものの、DDoS対応サービスも利用したく思います。 何よりも先ず、CloudFlareサービスの敷居が下がれば、 同社のレジストラとしての展開が有った時、其の利用も視野に入って来ますし、 従来のレジストラのお負けが如き DNSサービスは色を失うかも知れません。

スポンサーリンク