メモ
このドキュメントは古いドキュメントです。
昔はCloudflareとWebサーバ間をIPv6で接続していましたが、現在はセキュリティ対策の為にトンネル接続に切り替えました。
詳細は[CloudflareのCDNにWebサーバを接続する方法とセキュリティ対策]を参照して下さい。
Synologyの中に構築したWebサーバをCloudflareのCDN経由でアクセスすると[remoteip]がCloudflareのIPアドレスになり誰がアクセスしたのかの情報が取れなくなります。
そこでSynologyのApache2.4に[mod_remoteip]を設定します。
その結果、クライアントのIPアドレスが取得できるようになります。
ここではApache2.4に[mod_remoteip]を設定しアクセス元のIPアドレスを復元させる方法を解説します。
尚、Cloudflareの公式ドキュメントは「Restoring original visitor IPs」を参照して下さい。
1.対策を打つ前に
現在の[remoteip]がどうなっているのか?を知らなければ設定変更の結果の確認ができません。
そこで下記を実行します。
1)header.phpの中に下記コマンドを記述します。
<?php var_dump($_SERVER['REMOTE_ADDR']);?>
■何も手を打たない段階では、この値はCloudflareのIPアドレスになります。
■この値が下記のアクセスデバイスのIPアドレスになると成功です。
2.あなたデバイスのIPアドレスを確認します。
IPv4環境の時は「現在のIPアドレス」をクリックして現在のIPアドレスを確認して下さい。
IPv4環境でテストするのが良いのですが、IPv6の時はコマンドプロンプトで「ipconfig」を実行し、現在のIPv6アドレスを確認して下さい。
メモ
IPv4/IPv6共用環境ではCloudflare経由のアクセスはIPv6通信が優先されます。
IPv6アドレスは下記の様な形式になります。
DSM :240b:12:860:c100:211:32ff:feaf:8e0b
PC :240b:12:860:c100:18d8:5055:7f3e:2ffe
スマホ:240b:12:860:c100:4a:7308:e653:9a8
赤字の所が接続機器によって異なる部分です。
2.SynologyのApache環境を理解する
Synology NAS サーバーには「NGINX」の下に「Apacheサーバー」が位置づけられます。
1)NGINX
NGINXは、NASにインストールする各種アプリケーションのフロントエンドとして機能します。
NGINXは「/etc/nginx/」の下にある各種設定ファイルを使用して実行されます。
メインの構成ファイルは「nginx.conf」で、この中の下の方にある下記記述に注目して下さい。
省略 include sites-enabled/*;
■上記は「/etc/nginx/sites-enabled」の中に作成された構成ファイルは読み込みます。という事を意味しています。
■「sites-enabled」の実際の場所は「/usr/local/etc/nginx/sites-enabled」になり、ここはユーザ固有の領域なのでNGINXが更新されても変更されない領域になります。
■[WebStation]で色々な設定を行うとユーザ固有の情報としてここに設定情報が登録されますし、リバースプロキシを設定した場合は「server.ReverseProxy.conf」に反映されます。
構成ファイルを追加したり変更した場合は、下記のコマンドを使ってNGIXの再起動等を行って下さい。
コマンド | 内容 |
nginx -v | NGINX バージョンの確認: |
nginx -t | 設定ファイルの構文チェック |
nginx -s reload | 停止せずに設定を適用させる |
2)Apache2.4
Apache2.4は[/var/packages/Apache2.4/]の下にある各種プログラムや設定ファイルを使用して実行されます。
しかしユーザが利用するディレクトリとして[/usr/local/etc/apache24]が用意されており、[/usr/local/etc/apache24/conf]フォルダの中にある[httpd24.conf]ファイルがメインの構成ファイルになります。
この構成ファイルの下の方にある下記に注目して下さい。
省略 IncludeOptional sites-enabled/*.conf
■上記は[/usr/local/etc/apache24/sites-enabled]の中にあるconfファイルは読み込みます。という事を意味しています。
■[WebStation]で仮想ホスト等を作成すると、ここにCONFファイルとして情報が記録されます。
ここに登録されたCONFファイルは、Apache2.4が更新されても削除されません。
■ここに[CloudflareアクセスのCONFファイル]を作成するとApache2.4が更新されても削除される事はありません。
構成ファイルを変更した場合は下記のコマンドを使ってApache2.4の再起動等を行います。
コマンド | 内容 |
synopkg start Apache2.4 | 起動 |
synopkg restart Apache2.4 | 再起動 |
synopkg stop Apache2.4 | 停止 |
3.具体的な対策
1)SSHのroot権限でログインして下さい。
操作方法の詳細は[Synology NASをSSHでアクセスする方法]を参照して下さい。
2)ターゲットディレクトリに移動します。
[cd /usr/local/etc/apache24/sites-enabled]を実行します。
このフォルダにどの様なファイルがあるか?は[ls]で確認して下さい。
3)Cloudflare用のCONFファイルを作成します。
・[vi cloudflare.conf]を実行します。
・[i]キーを挿入します。
・下記ファイルを[Ctrl+C]でクリップボードにコピーし[Alt+V]でエディタに貼り付けます。
LoadModule remoteip_module modules/mod_remoteip.so RemoteIPHeader X-Forwarded-For #IP-v4 RemoteIPTrustedProxy 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22 #IP-v6 RemoteIPTrustedProxy 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32
・[Esc]キーを挿入します。
・[:wq]でviエディタを終了します。
4)Apache2.4を再起動します。
[synopkg restart Apache2.4]を実行します。
以上で設定した[cloudflare.conf]が反映されます。