Directive Apache RewriteMap avec la liste blanche des adresses IP et des plages IP

J’essaie d’utiliser la directive RewriteMap dans Apache pour “liste blanche” (autoriser uniquement) un mélange de certaines plages d’adresses IP et d’IP spécifiques. Ce qui me complique la tâche, c’est que la liste blanche contiendra un mélange de grandes plages d’adresses IP telles que 131.132. * (Ou en notation CIDR, 131.132.0.0/16) et des adresses IP spécifiques dans la même liste. Je crois comprendre que vous ne pouvez pas utiliser la notation CIDR dans mod_rewrite car RewriteConds ne fait que des comparaisons simples de chaînes de caractères / texte (est-ce correct?). Jusqu’à présent, c’est ce que j’ai imaginé pour ma directive RewriteMap, mais je ne suis pas sûr que cela fonctionne. Pensez-vous que ce qui suit fonctionnera pour les plages d’adresses IP dans 131.132. . (131.132.0.0/16) … c’est-à-dire la plage de début 131.132.0.0 jusqu’à la plage d’extrémité 131.132.255.255) et la plage 121.122.123. * (C’est-à-dire la plage de démarrage 121.122.123.0 jusqu’à la plage d’extrémité 121.122.123.255) .113.114, et bloquera toutes les autres adresses IP? De même, les références arrière (% 1,% 2,% 3,% 4) figureront-elles dans les trois dernières lignes RewriteCond (notez que les lignes RewriteCond sont “OR’ed”) et renvoient correctement à la première ligne RewriteCond pour toutes les références?

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 

Une solution plus simple avec la directive Require , celle-ci n’a pas été testée en profondeur mais semble fonctionner:

 Require ip 10.20.30.40/27 111.112.113.114 131.132