Я бы тоже порекомендовал прозрачную настройку прокси. Это можно сделать в три этапа.
- Конфигурация Squid (чтобы он действовал как прозрачный прокси)
- Конфигурация Iptables (настройте систему как маршрутизатор, затем перенаправьте весь http-трафик на Squid)
- Используйте Squid ACL для фильтрации ваших http-запросов
1. Конфигурация Squid
Предполагая, что вы можете установить squid и отредактировать свой squid.conf, это будет простой (сжатый) пример для включения прозрачного http-прокси для сети 192.168.111.0/24 и * .222./24.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.111.1 192.168.222.0/24
http_access allow localhost
http_access allow lan
2. Настройка Iptables
Тогда ваши правила DNAT будут выглядеть так, если предположить, что служба squid работает на порте по умолчанию (3128).
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
3. Squid ACL
Ваш пример ACL может выглядеть следующим образом. Просто используйте подходящие средства контроля доступа для вашего случая.
acl evelrequest url_regex -i ^http(s)://([a-zA-Z]+).hostname.tld/requestpath/.*$
http_access deny evelrequest