Здравствуйте!
Локальная сеть выходит в интернет через машину с прозрачным squid. На этой же машине стоит веб сервер(apache2), к которому должны иметь доступ пользователи локальной сети. На этот веб сервер прикручен sams2 для блокирования некоторых страниц.
Сейчас настроено так:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source <внешний ip>
iptables -t nat -A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.1 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128
И вроде бы абсолютно все работает как надо, но имеет место следующее:
Факт 1. Заходим из локалки на заблокированный сайт(вместо него указана заглушка http://localhost/sams2/messages/blocked.php) и вместо странички заглушки видим:Not Found
The requested URL /sams2/messages/blocked.php was not found on this server.
Apache Server at localhost Port 80
Факт 2. Указываем адресом заглушки http://<внешний ip>/sams2/messages/blocked.php.
Тогда страничка заглушки грузится, но не грузится изображение на этой страничке.
Факт 3. Если указать адресом заглушки http://192.168.0.1/sams2/messages/blocked.php, то долго долго пытается установить соединение, но не выходит.
Во всех трех вариантах, если обратится напрямую по адресу http://192.168.0.1/sams2/messages/blocked.php или http://<внешний ip>/sams2/messages/blocked.php, то все грузится как надо.
Мои подозрения: когда веб сервер обращается сам к себе у него адресом источника является 192.168.0.1 и он по правилу iptables попадает на сквид, а сквид его перебрасывает на веб-сервер провайдера. И думаю, что надо бы к правилу iptables -t nat -A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.1 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128 припсать ! -s 192.168.0.1, но дважды -s в правиле нельзя писать.
Везде где я упоминал провайдера на самом деле стоит другой прокси сервер, тоже с апачем. Но в контексте вопроса, это не имеет значения.
Верны ли мои подозрения? Если нет, то в чем дело?
Если верны, то как изменить правила? Так чтобы адресом источника во втором правиле была указана вся подсеть, кроме сервера.
Спасибо!