ここではSynologyのNASの中にある[Webサーバ]と[Cloudflare]を[V6プラス]のIPv6で接続する方法を解説しています。
別の言い方をするとポート番号443でIPv6通信で接続するという事です。
IPv4の時と違って、IPv6ルータにポート番号443の転送設定は不要です。
接続図は下図の様になります。
■CloudflareのDDNSにAAAAレコードを作成しSynologyNASのIPv6アドレスを設定します。
■その結果、このWebサーバはIPv4/IPv6網の利用者からアクセスする事ができる上にCloudflareのCDN機能が働いたサーバとなります。
CDNとは
CDNは[Contents Delivery Network]の略で、画像データがCloudflareのネットワークの中にキャッシュされるのでユーザから見たレスポンスが早くなる仕掛けになります。
■しかもこのサーバはWAFとDDoS対策されたサーバとなります。
Cloudflareを利用すると
CloudFlareメニュの[セキュリティ]を見てください。
下記のセキュリティ機能が無償版でもバンドルされている事が判ります。
・WAF
WAF(ワフ)とは「Web Application Firewall」の略で、Webアプリケーションの脆弱性を悪用した攻撃からWebサイトを守るツールです。
わざわざWAF対策ツールを購入しなくてもCloudflarを利用するだけで対策できる様になります。
・DDoS
DoS攻撃とは1つのIPアドレスからターゲットに大量のアクセスデータを送り負荷をかける攻撃です。
一方、DDoS攻撃は他のパソコンを踏み台にして複数のIPアドレスからDoS攻撃をかける攻撃になります。
SynologyではDoS攻撃に対する対策はありましたが、DDoSには対応できませんでした。
しかし、Cloudflareを利用する事によりDDoS攻撃にも対応できる様になります。
1.CloudflareにAAAAレコードを追加する
1.CloudflareのサイトのDNS画面に入ります。
■[レコードの追加]ボタンを挿入します。
2.下記画面に必要事項を入力します。
■タイプ:▼をクリックしてAAAAレコードを選択します・
■名前:任意のサブドメイン名を入力します。
例)ドメイン名が[mydomain.com]で、[nw]を指定した場合のURLは[nw.mydomain.com]になります。
■IPv6アドレス:仮のIPアドレスとして[111:1:1:1:1:1:1:1]を入力して下さい。
■コメント:このサブドメインを説明するコメントを入力します。
■保存ボタンを挿入します。
3.以上で下記の様なDNSレコードが作成されます。
注意
1.同じサブドメイン名でAレコード(IPv4アドレス)は作成しないでください。
AとAAAAレコードがあるとCloudflareはAレコードで接続を試みるので、IPv6でサーバと接続する事ができなくなります。
2.プロキシをOFFにしないで下さい。
プロキシをOFFにするとCloudflareはただのDNSサーバとなる為、通信はCloudflareを経由しないので、IPv4網からのアクセスできないうえに、CDNやセキュリティ機能も無効となります。
2.SynologyからAAAAレコードを更新する
次は、SynologyNASのIPv6アドレスでcloudflareのAAAAレコードを更新する処理になります。
1.[コントロールパネル→共有フォルダ]を実行
作成で[script]フォルダを作成します。
2.スクリプトファイルを作成します。
EmEditorを起動し、下記ファイル貼り付けて下さい。
#!/bin/bash # シェルスクリプトの実行パラメータ auth_email="xxxxxxxxxxxx" # アカウントのメールアドレス auth_key="xxxxxxxxxxxx" # ドメインの概要画面に表示されているAPIトークンを取得をクリックし、表示された画面のGlobal API Keyを取得します。 zone_id="xxxxxxxxxxxx" # ドメインの概要画面に表示されているゾーンIDを指定します。 sub_domain="xxxxxxxxxxxx" # 更新するAAAAレコードのサブドメイン名をフルで指定します。 # SCRIPT START echo "[Cloudflare API] START" # Synologyに設定されているIPv6アドレスを取得します ip6=$(curl -s https://ipv6.icanhazip.com/) echo "[Cloudflare API] Get_SynoIP=" $ip6 # cloudflareの指定サブドメインに設定されているAAAAレコードを取得します record6=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_id/dns_records?name=$sub_domain&type=AAAA" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json") # 指定サブドメインにAAAAレコードが見つからない時の処理 if [[ $record6 == *"\"count\":0"* ]]; then >&2 echo -e "[Cloudflare API] 対象のレコードが見つかりません。先にサブドメインAAAAレコードを作成して下さい。" exit 1 fi # cloudflareのAAAAレコードからIPアドレスを取り出す old_ip6=$(echo "$record6" | grep -Po '(?<="content":")[^"]*' | head -1) echo "[Cloudflare API] Cloudflare_IP=" $old_ip6 # cloudflareのAAAAレコードから設定コメントを取り出す old_comment=$(echo "$record6" | grep -Po '(?<="comment":")[^"]*' | head -1) echo "[Cloudflare API] comment=" $old_comment # IPv6アドレスの更新が不要な場合の処理 if [[ $ip6 == $old_ip6 ]]; then echo "[Cloudflare API] IPアドレスに変更がないので更新処理は行いません." exit 0 fi # AAAAレコードからレコード識別子を取り出す record6_identifier=$(echo "$record6" | grep -Po '(?<="id":")[^"]*' | head -1) # アップデートの実行 update6=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_id/dns_records/$record6_identifier" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"AAAA\",\"proxied\":true,\"name\":\"$sub_domain\",\"content\":\"$ip6\",\"comment\":\"$old_comment\"}") # 更新処理の結果のレポート if [[ $update6 == *"\"success\":false"* ]]; then >&2 echo -e "[Cloudflare API]更新に失敗しました. DUMPING RESULTS:\n$update4\n$update6" exit 1 else echo "[Cloudflare API] IPv6 address '$ip6' でCloudflareのレコードを更新しました." fi
■[ファイル → 名前を付けて保存]を実行します。
■scriptフォルダの下にファイル名が[cloudflare_ddns.sh]で、[BOM無し]、[LFのみ]で保存します。
3.上記のスクリプトファイルを修正します
上記スクリプトの実行パラメータにある[XXXXXXXXXX]の所を修正します。
①auth_email:Cloudflareのアカウント(メールアドレス)を入力します。
②auth_key、zone_idは下記画面から取得します
ドメインの概要画面を開くと右下の方にAPIに関する項目が表示されています。
■zone_idは、上記画面から直接取得できます。
■api_keyは[APIトークンを取得する]をクリックすると下記画面が開きます。
■上記の表示ボタンをクリックすると取得できます。
③sub_domain:更新するAAAAレコードのサブドメイン名をフルで指定します。
例)ドメイン名が[mydomain.com]で、[nw]を指定した場合のサブドメイン名は[nw.mydomain.com]になります。
以上でスクリプトファイルの修正が完了しました。
4.タスクスケジューラの設定
①コントールパネル→タスクスケジューラを起動します。
②作成→予約タスク→ユーザ指定のスクリプトを実行します。
タスク作成画面が表示されます。
③タスク設定タブを開きます
■電子メールアドレスを指定して、Eメール通知をONにします。
■コマンド欄に下記を入力します。
/volume1/script/cloudflare_ddns.sh
メモ
上記の設定はスクリプトが実行されるたびにメールが送られる設定になります。
デバッグが終わった後は、★の所に✓を付けると、異常終了しない限りはメールが送られない仕様となります。
④全般タブ、スケジュールの設定
・全般タブのタスク名は判り易い名称を付けてください。
・スケジュールは1回/1日で基本的には良いと思いますが、1時間ごとに走らせる事もできます。
・最後にOKボタンを挿入し、タスクを確定させます。
5.タスクスケジュールのマニュアル実行
タスクスケジューラの画面は下図の様になります。
■作成したタスクを選択し[実行]ボタンを挿入すると、マニュアルでタスクを実行させる事が出来ます。
■実行後、メールとCloudflareのDNSレコードを参照して、正常に更新されたかを確認して下さい。
IPv6アドレスがSynologyのNASのアドレスに更新された事が確認できます。
3.WordPressの実行
新規にWordPressを作成する場合は[日本語WordPressをインストールする]を参考に、ここで作成されたドメイン名でアクセスして作成します。
既存のWordPressをこのドメイン名で動かす場合は、旧のURLを新しいURLに変更してから、アクセスして下さい。
このサイトは下記の様なURL変更を行いました。
https://nw.myds.me → https://hnw.t-spirits.com/oldies/
メモ
本当は仮想ホスト機能を利用して[https://hnw.t-spirits.com]にしたかったのですが、この形式だと画像が表示されないという障害が発生します。
原因は不明です。
よって現在はフォルダ名指定のWordPressで運用しています。