MENU
PIXIV FANBOXを開設しています詳しくはこちら!

Cloudflareで日本以外からアクセス不可にする!

CloudflareをDNSサーバーに設定していれば、国外からのアクセスをブロックできるっぽいので試して見た。今回はサブドメインを対象にしてます(ドメインを対象にすると、このブログも見れなくなっちゃうからね……)。

なんと無料でできる!いいね~

まずはCloudflareにログイン。アカウントない人は作ってね✨

テーブルにあるドメイン名をクリックして、設定したいドメインのダッシュボードに入りましょう。ドメインがない?登録しようね✨(ドメインをCloudflareで管理してなくても、DNSサーバーに設定することで使えるようになるよ。調べてみようね)

そしたら左の「セキュリティ」>「セキュリティ ルール」を開こう!

「ルールを作成」>「カスタム ルール」をクリック。

そしたら、サブドメインを国外ブロックの設定をするよ。追加するときは「AND」ボタンをクリックしようね。ORにしちゃうと意味ないよ。

  • 「ホスト名」「次と等しい」「sub.example.com」
    ※サブドメインの内容は拒否したいサブドメインにしてね
  • 「国」「次と等しくない」「Japan」
    ※複数の国を指定することも出来る(その場合はGUIじゃなくて「式を編集」が楽そう)
  • アクションを選択する:「ブロック」

ChatGPT曰く (http.host eq "sub.example.com" and not ip.geoip.country ne "JP") が正しいらしいけどGUIではsrcなのでsrcのままで良いかと思います。ぶっちゃけgeoipでも問題無く動くんですけどね。

> ip.src.country / ip.geoip.country の違いは?

実際のところ、Cloudflareの内部ではどちらも同じGeoIPデータベースに依存してるけど、
ip.geoip.country → WAF(Edge)用変数
ip.src.country → Zero Trust(Access)用変数
というように利用される文脈が違うだけ。

設定したら「デブロイ」をクリックすることで完了!

実際にブロックされるかはChromeのVPN拡張を入れて、実際に国外IPアドレスからアクセスするのが早い!

目次

メモ

許可国を複数する場合は、こんな風に追加できるよ。

式はこうなるね。

(http.host eq "sub.example.com" and not ip.src.country in {"AX" "KR" "AL"})
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

紅坂 柚月のアバター 紅坂 柚月 自称天才プログラマー

お酒が大好きなバ美肉VTuber。

お出掛けの時は和服を着てます。
プログラムは独学で遊んでます。

目次