ルールは、Cloudflare Rules language を使って書きます。これは Wireshark の意味論に寄せたドメイン固有言語(DSL)です。詳細は Rules language のドキュメントを参照してください。
まずは簡単な例として、送信元 IP にマッチする書き方を確認します。
ip.src == 192.0.2.0論理演算子で複数の句を結合すると、式はより複雑になります。
ip.src == 192.0.2.1 && (tcp.flags.push || tcp.flags.reset)Cloudflare Network Firewall(旧 Magic Firewall)では、送信元または宛先 IP、送信元または宛先ポート、プロトコル、パケット長、ビットフィールドマッチ に基づいて パケット をスキップまたはブロックできます。
Wirefilter の比較は CIDR 表記に対応しますが、セットの中でのみ使えます。例:
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 です。式を複数のルールに分割して、もう一度試してください。