2

Apache で RewriteMap ディレクティブを使用して、特定の範囲の IP と特定の IP を組み合わせて "ホワイト リスト" (許可のみ) しようとしています。私にとってこれが難しいのは、ホワイトリストに 131.132.* (または CIDR 表記では 131.132.0.0/16) などの広範囲の IP と同じリスト内の特定の IP が混在していることです。私の理解では、RewriteConds は単純なテキスト文字列/文字の比較を行うだけなので、mod_rewrite で CIDR 表記を使用することはできません (これは正しいですか?)。これまでのところ、これが私の RewriteMap ディレクティブで思いついたものですが、うまくいくかどうかはわかりません。以下は、131.132. .(131.132.0.0/16) ... つまり、開始範囲 131.132.0.0 から終了範囲 131.132.255.255) および範囲 121.122.123.* (つまり、開始範囲 121.122.123.0 から終了範囲 121.122.123.255) および特定の IP 111.112 .113.114、および他のすべての IP をブロックしますか? また、最後の 3 つの RewriteCond 行の後方参照 (%1、%2、%3、%4) (RewriteCond 行が「OR」されていることに注意してください) は、すべての参照について最初の RewriteCond 行を参照して適切に機能しますか?

RewriteMap ipslist txt:"/path/to/whitelist.txt"
RewriteCond %{REMOTE_ADDR} ^(\d+)\.(\d+)\.(\d+)\.(\d+)$
RewriteCond ${ipslist:%1.%2.%3.%4|block} ^block$ [OR]
RewriteCond ${ipslist:%1.%2.%3.*|block} ^block$ [OR]
RewriteCond ${ipslist:%1.%2.*.*|block} ^block$
RewriteRule (.*) - [F]

####
#### in whitelist.txt file
####
111.112.113.114     allow
121.122.123.*       allow
131.132.*.*         allow
4

1 に答える 1

0

ディレクティブを使用したより簡単なソリューションRequireです。これは深くテストされていませんが、機能しているようです:

Require ip 10.20.30.40/27 111.112.113.114 131.132
于 2016-09-28T14:44:14.270 に答える