はじめに
去年の3月にも似たような記事を上げましたが、こちらの方法は
・(若干)お金が掛かる
・使用するポートが443/80番ポートではない
方法でした。
注意
以下の条件に当てはまる方でないと公開できません。
・グローバルなIPv6アドレスが降ってきている(IPv6で通信できる)
・ドメインのネームサーバーを変更できる
裏を返せばv6プラス以外でもIPv6アドレスさえ降ってきていれば公開できます。
v6プラスの仕様と解決策
これについては以前の記事で解説したので細かい説明は省きますが、ざっくり言うと「v6プラスではIPv4アドレスは共有だからウェルノウンポートは使えないよ~」という仕様です。
今回は「CloudflareにAAAAレコードを登録すると勝手にIPv4からのアクセスも捌いてくれる仕様」を使用します。
(仕組みについては記事の最後にあるおまけをご覧ください。)
Cloudflareに登録する
詳しい説明は省きますが、アカウントを作成してサイト(ドメイン)を追加できればOKです。
DNSを設定する
Cloudflareのダッシュボードから先程追加したドメインを選択し、DNSタブに移動します。
"レコードを追加"からタイプをAAAA、名前を@(ここは任意)とし、IPv6アドレスにサーバーのIPv6アドレスを入力します。
最後に保存できれば完了です。
アクセスしてみる
正常にサイトにアクセスできれば成功ですが、アクセスできない場合は以下を参考にしてみてください。
トラブルシューティング
アクセスできない (このサイトにアクセスできませんと出る)
CloudflareのプロキシがOFFになっていませんか
プロキシステータスがプロキシ済みになっていることを確認してください。
522エラーが出る
ファイアウォールか何かが悪さをしていませんか
大体の場合は
・ルーターのIPv6フィルターでTCP443/80番ポートの通信を許可する
・サーバー側のファイアウォールでTCP443/80番ポートの通信を許可する
で解決するはずですが、HGWがある環境ではHGW側の設定を変える必要があります。
自身の環境ではHGW(RT-500MI)がONU-ルーター間に存在しており、これのせいで躓いていました。
詳細設定→IPv6パケットフィルタ設定(IPoE)のIPv6ファイアウォール機能を無効化することで公開出来たので参考になれば幸いです。(ルーター側でのパケットフィルタをしっかり設定しておかないとヤバいですが)
おまけ (仕組みについて)
CloudflareはDNSに加え、プロキシを提供しています。
プロキシを使用するとCloudflareがクライアント/サーバー間の通信に介入して、サーバーのIPを隠蔽したり、コンテンツをキャッシュしてくれます。(こちらの記事が分かりやすいのでおすすめです)
このプロキシ(Cloudflare)がIPv4, IPv6のどちらにも対応しており、サーバー/Cloudflare間はIPv6で、クライアント/Cloudflare間はIPv4(IPv6に対応していればIPv6)で通信してくれる仕様を利用したのが今回の手法です。
コメント