HOME  /Cloudflare
 /SynologyのWebサーバをCloudflareのDNSにIPv6で接続する方法
2024年08月22日

SynologyのWebサーバをCloudflareのDNSにIPv6で接続する方法


CloudflareとWebサーバの接続方法は3種類あり、特徴は[概論]を参照して下さい。

 

ここではSynologyのNASの中にある[Webサーバ]と[Cloudflare]をIPv6で接続する方法を解説します。

別の言い方をするとポート番号443でIPv6通信で接続するという事です。

尚、IPv6アドレスはサーバアドレスを持っているのでルータに443の転送先を設定する必要はありません。

接続図は下図の様になります。

■CloudflareのDNSにAAAAレコードを作成しSynologyNASのIPv6アドレスを設定します。

■その結果、このWebサーバはIPv4/IPv6網の利用者からアクセスする事ができる上にCloudflareのCDN機能が働いたサーバとなります。

 

構築の手順は下記になります。

1.Cloudflare側にAAAAレコードを追加する

2.Synology側からAAAAレコードを更新する

3.WordPressのインストール

4.WebサイトにCloudflareのWordPressプラグインを導入する

1.Cloudflare側にAAAAレコードを追加する

1.DNSレコードの追加コマンドの起動

メニュからDNSを選択し、画面にある[レコードの追加]ボタンを挿入します。

 

2.AAAAレコードの作成

下記画面に下記を設定します。

■タイプ欄:▼をクリックしてAAAAレコードを選択します・

■名前欄:任意のサブドメイン名を入力します。例)nw

※上記の場合、Webサーバのドメイン名は[nw.貴方のドメイン名]になります。

■IPv6アドレス欄:仮のIPアドレスとして[111:1:1:1:1:1:1:1]を入力します。

■コメント欄:このサブドメインを説明するコメントを入力します。

[保存]ボタンを挿入します。

以上で下記の様なDNSレコードが作成されます。

上記の仮のAAAAレコードはSynology側から正式のアドレスで更新されます。

 

2.Synology側からAAAAレコードを更新する

次は、SynologyNASのIPv6アドレスでCloudflareのAAAAレコードを更新する処理になります。

1.[script]フォルダの作成

[コントロールパネル]の下記アイコンをクリックします。

[作成共有フォルダの作成]を実行し[script]フォルダを作成します。

下記のフォルダが作成されます。

この中にCloudflareの[AAAA]レコードを更新するスクリプトを保存します。

 

2.スクリプトファイルを作成します。

EmEditorを起動し、下記ファイル貼り付けて下さい。

#!/bin/bash

# シェルスクリプトの実行パラメータ
auth_email="xxxxxxxxxxxx"   # アカウントのメールアドレス
zone_id="xxxxxxxxxxxx"        # ドメインの概要画面に表示されているゾーンIDを指定します。
auth_key="xxxxxxxxxxxx"      # ドメインの概要画面に表示されているAPIトークンを取得をクリックし、表示された画面のGlobal API Keyを取得します。
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

②[ファイル名前を付けて保存]を実行します。

③ファイル名は[cloudflare_dns.sh]で、[BOM無し]、[LFのみ]で保存します。

 

3.上記のスクリプトファイルを修正します

上記のスクリプトの上の方にある[XXXXXXXXXX]の所を修正します。

auth_email:Cloudflareのアカウント(メールアドレス)に変更します。

zone_id

ドメインの[概要]画面の右下の方にAPIに関する項目が表示されています。

[zone_id]は、下記画面から直接取得できますので、これに変更します。

auth_key

[auth_key]は下図の[APIトークンを取得する]をクリックします。

下記画面が表示されるので[表示]ボタンをクリックすると取得できるのでこれに変更します。

sub_domain

更新するAAAAレコードのサブドメイン名をフルで指定します。

例)ドメイン名が[mydomain.com]で、[nw]を指定した場合のサブドメイン名は[nw.mydomain.com]になります。

以上でスクリプトファイルの修正が完了しました。

 

4.スクリプトファイルの移動

修正したスクリプトファイルをSynologyの[script]フォルダの中に登録します。

 

5.タスクスケジューラの作成

上記で作成したスクリプトを定期実行するタスクを作成します。

①[コントールパネル]の下図のタスクスケジューラを起動します。

②[作成]→[予約タスク]→[ユーザ指定のスクリプト]を実行します。

タスク作成画面が表示されます。

③全般タブの設定

下図のタスク名の所は判り易い名前を付けてください。例)Cloudflare AAAA UpDate

④下図の[タスク設定タブ]を開きます

■下図の電子メール欄にメールアドレスを入力し、Eメール通知をONにします。

■コマンド欄に下記を入力します。

/volume1/script/cloudflare_dns.sh

⑤下図の[スケジュールタブ]を開きます.

下図でこのタスクを実行する時間を設定します。

設定が完了したら[OK]ボタンで設定を確定させます。

 

6.タスクスケジュールのマニュアル実行

タスクスケジューラの画面は下図の様になります。

■作成したタスクを選択し[実行]ボタンを挿入すると、マニュアルでタスクを実行させる事が出来ます。

■実行後、メールとCloudflareのDNSレコードを参照して、正常に更新されたかを確認して下さい。

 

更新が上手くいかなかった場合はSynologyから送られたメールを見て問題を解決して下さい。

正しいメッセージは下記になります。

[Cloudflare API] START
[Cloudflare API] Get_SynoIP= 240b:12:860:c100:211:32ff:fea2:ae18
[Cloudflare API] Cloudflare_IP= 111:1:1:1:1:1:1:1
[Cloudflare API] comment= Reserveサーバのテストサイト
[Cloudflare API] IPv6 address '240b:12:860:c100:211:32ff:fea2:ae18' でCloudflareのレコードを更新しました.

■上記は①SynologyのIPv6アドレスの取得②Cloudflareから現在のIPアドレスの取得③Cloudflareからコメントデータを取得④CloudflareのIPv6アドレスの更新から構成されています。

 

7.タスクスケジューラの修正

上記の設定では、タスクスケジューラが動いたら必ずメールが送られる仕組みになっています。

そこで下図の★印の所に✓を入れると、更新処理が発生した時だけメールが送られる仕様に変更できます。

 

以上でSynologyからCloudflareのIPアドレスの更新が完了したので、外部からCloudflreのドメインでアクセスした時にSynologyのサーバにアクセスが来るようになりました。

あとはWordPressの実行です。

 

3.WordPressのインストール

このサイトのURLは[https://nw.t-spirits.com]になっています。

上記はドメイン名だけでアクセスできる様にしたもので、これを行う為には[Synologyの仮想ホスト機能]でドメインにアクセスがきた時にWordPressフォルダに転送させる事と[日本語WordPressのインストール]で実現できます。

この様な接続を行う場合はWordPressの[wp-config.php]に下記を記述する事がポイントになります。

$_SERVER['HTTPS'] = 'on';

 

又、AAAAで作成したドメインを下記の様に利用する事もできます。

https://nw.t-spirits.com/wordpress①

https://nw.t-spirits.com/wordpress②

この場合は[仮想ホストの定義]も[wp-config.php]の上記の指定も不要です。

 

4.WebサイトにCloudflareのWordPressプラグインを導入する

CloudflareのCDNで設定されたWebサーバのデータは、Cloudflareの高速ネットワーク網の中にキャッシュされます。

その結果、ユーザはCDN上のキャッシュデータをアクセスしてくれるのでパッピー・・・・とはなりません。

 

もし、Webサーバのコンテンツを更新した時にCDNのキャッシュデータが更新前だとしたら、ユーザは最新データにアクセスする事ができません。

ここに登場するのが[CloudflareのWordPressプラグイン]です。

このプラグインはWordPressを更新した時に、Cloudflare側のキャッシュを自動更新してくれる優れもので、これを導入します。

 

1.Global API Keyの取得

これはAAAAレコードを更新する時に利用した[auth_key]と同じものです。

①CloudflareのWebサイト画面を開きます。

②概要画面の下の方にあるAPIトークンを起動します。

③画面に表示された[Global API Key]の[表示]ボタンを挿入します。

④表示された画面にパスワードを入力すると[Global API Key]が表示されます。

これをクリップボード等に保存して下さい。

 

2.新規プラグインの追加で[Cloudflare]で検索し、インストールと有効化を行います。

 

3.上記プラグインの設定を行います。

①設定→cloudflareを実行します。

②表示された画面の中の[here]をクリックします。

③表示された下記画面に[アカウント]と上記で保存した[Global API Key]を入力し、Saveします。

④Cloudflareプラグインの概要画面が表示されます。

下図の[Apply Recommeded Clopudafre for WardPress(WordPressに推奨されるCloudflare設定を適用する)]所にある[Apply(適用する)]ボタンを挿入します。

これで自動的に設定が最適化されます。

以上でWordpressを更新した時は自動でCDNのキャッシュは更新されますが、なにか問題があった場合は、マニュアルで[キャッシュを消去]する事もできます。

 

以上でこのドキュメントの説明は完了です。

関連ドキュメントは下記の関連記事一覧から探して下さい。


<関連記事一覧>

「cloudflare」に関連するドキュメントを表示しています。尚、このページネーションはJquryで制御しています。

CloudflareのCDNにWebサーバを登録する方法には①IPv4接続②IPv6接続③トンネル接続がありますが、③のトンネル接続は、サーバの負荷分散、変動IPでも更新タスクが不要、オリジンIPに対するDDoS対策が簡単等の多くのメリットがあります。

Cloudflareの[Email Routing]はCloudflareで管理しているドメインにメールアドレスを定義し、これを他のメールシステム(Gmail等)に転送するアプリケーションです。この機能を利用するとメールサーバを立てなくても企業ドメインのメールシステムが構築できます。

IPv4、IPv6アドレスを調べるとインターネットからのポート開放状況や利用しているCDNベンダを調べる事ができます。ここではこれらを調査する方法を詳しく解説しています。

DNS(Domain Name System)は、[ DNSリゾルバ ]、[ DNSルートネームサーバ ]、[ TLDネームサーバ ] 及び [ 権威DNSサーバ] から構成される仕掛けで、インターネットアクセスに必須な仕掛けになります。

DDoS攻撃には1.DNSサーバに対する攻撃、2.グローバルIPに対する攻撃、3.オリジンIPに対する攻撃があります。CloudflareのCDNを利用してDDoS攻撃対策をする為にはオリジンIPに対する攻撃も考慮する必要があります。

CloudflareのCDNは、Cloudflareの高速ネットワークの中にコンテンツをキャッシュしてくれると共に、1.IPv6対応、2.DDoS対策、3.WAF対策、4.ボット対策を行ってくれるCDNサービスです。

[ 1.1.1.3 ] は [ 1.1.1.2 ] のマルウェア等のサイトブロック機能に加えて、ブラウザの[セーフサーチ機能]を自動でONにする事によりアダルトサイトを表示させないDNSリゾルバになります。ここではこの利用方法を徹底解説しています。

[1.1.1.1] は、Cloudflare社とアジア地区のIPアドレスの元締めの APNICが共同開発した無償でスピードが一番早いDNSリゾルバーになります。ここではこの利用方法を徹底解説しています。

[ 1.1.1.2 ] は [ 1.1.1.1 ] の機能にセキュリティリスクがあると判断したWebサイトをブロックする機能が追加されます。
ここではこの利用方法を徹底解説しています。

SynologyのWebサーバをCloudflareにtトンネルで接続する為には①Cloudflareとサーバ間にトンネルを作成する②トンネルにWebサーバを定義する皇都で行います。

CloudfalreのCDNを利用する為には①Cloudflareアカウントの作成、②ドメインの追加、③CDNの設定に順番で設定していきます。また④Cloudflareアカウントの2要素認証も重要になります。

ここではXserverからドメイン名を取得する方法を解説しています。