はじめに

cloudpackサポートの林です。
Nginxの設定にてCloudflareのIPのみ許可する際の記事を書きたいと思います。

概要

“CF-Connecting-IP” ヘッダーを使用するようNginxのファイルを設定する必要があります。
その際のファイル設定手順について説明いたします。

構成

前提条件

Webサーバーの前段にCDNとしてCloudFrontを設定しています。
現在の状況はNginxで接続元IPアドレスの取得のため”X-Forwarded-For”を設定しています。
現在の構成にCloudflare Webアプリケーションファイアウォール(WAF)を使用して、WAFを通した通信のみにリクエストを制御するようにします。
その際、Cloudflareを利用して元の訪問者IPを復元するためにNginxの設定に”CF-Connecting-IP”を追加します。

内容

以下に行った作業手順を記載します。

1.まず対象サーバーにsshにて接続を行い、confの設定ファイルを特定します。

今回は下記conf.dファイルが対象となります。

/etc/nginx/conf.d/hoge_ip_conf

2.対象ファイルをテキストエディタで開き編集します。

ファイル内にCloudflareのIPアドレス範囲を追記します。
IPアドレス範囲は以下WEBページに記載があります。
https://www.cloudflare.com/ips/
変更される可能性があるので、記載する際は上記公式ページを必ず確認するようにします。
※また、CloudFrontで設定していた記載はコメントアウトもしくは削除します。

ファイル追記内容

# Cloudflare
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;

3.同ファイルの最下段に以下内容を記載しました。

# Look for client IP in the X-Forwarded-For header
#real_ip_header X-Forwarded-For;
real_ip_header CF-Connecting-IP;

元の訪問者のIPアドレスを復元するために”CF-Connecting-IP”を設定します。
これにより、NginxはCloudflareからのリクエストの元のIPアドレスを正しく解釈できるようになります。

※以前”X-Forwarded-For”を設定していたため、コメントアウトしています。

4.Nginxのリスタートを実施します。

# sudo service nginx restart
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
# sudo service nginx status
nginx (pid 827) is running...
#

Nginxが正常に再起動されたことを確認したら設定完了です。

まとめ

以上、Nginxでの設定変更作業の内容となります。
ファイル編集後にdiffコマンド等で差分を確認できるため、作業する際はcpコマンド等で事前にconfファイルのバックアップを取得しておくことを推奨いたします。

その他

参考:元の訪問者IPを復元する