Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

式の作成

最終更新 Markdown で表示Agent セットアップ

ルールは Cloudflare Rules language で書きます。Wireshark の意味論に似せたドメイン特化言語(DSL)です。詳細は Rules language のドキュメントを参照してください。

簡単な例として、送信元 IP に一致させる書き方を確認します。この式では、ip.src は着信パケットの送信元 IP アドレスを指し、== は「等しい」を意味します。

ip.src == 192.0.2.0

論理演算子で複数の句をつなぐと、式はより複雑になります(&& は AND、|| は OR)。次の式は、192.0.2.1 からのパケットのうち、TCP の push フラグまたは reset フラグが立っているものに一致します。

ip.src == 192.0.2.1 && (tcp.flags.push || tcp.flags.reset)

機能

Cloudflare Network Firewall では、送信元または宛先の IP、送信元または宛先のポート、プロトコル、パケット長、ビットフィールド一致 に基づいて、パケット をスキップまたはブロックできます。

制限

式エンジンは CIDR 表記(192.0.2.0/24 のような IP アドレス範囲)に対応しますが、中括弧のセット内でのみ使えます。単純な比較では期待どおり動きません。

ip.src == 192.0.2.0/24  # bad
ip.src in { 192.0.2.0/24 }  # good

式には複雑さの上限があり、結合や入れ子の句が多いと簡単に達します。次がその例です。

(tcp.dstport == 1000 || tcp.dstport == 1001) && (tcp.dstport == 1002 || tcp.dstport == 1003) && (tcp.dstport == 1004 || tcp.dstport == 1005) && (tcp.dstport == 1006 || tcp.dstport == 1007) && (tcp.dstport == 1008 || tcp.dstport == 1009) && (tcp.dstport == 1010 || tcp.dstport == 1011) && (tcp.dstport == 1012 || tcp.dstport == 1013) && (tcp.dstport == 1014 || tcp.dstport == 1015) && (tcp.dstport == 1016 || tcp.dstport == 1017)

上限に達すると、応答のステータスコードは 400 になり、エラーメッセージは ruleset exceeds complexity constraints になります。式を複数のルールに分割して、もう一度試してください。各ルールが条件の一部を担当し、ファイアウォールは順に評価します。

役に立ちましたか?