[squid+netfilter] : полностью прозрачный прокси.
> Но хочется, чтобы squid ходил наружу (вернее, до iptables-цепочки nat
> postrouting) от адреса клиента
Зачем, если заNATится в тот же адреc?
> postrouting) от адреса клиента
Зачем, если заNATится в тот же адреc?
Для подсчёта трафика, который у меня осуществляется через ulog на mangle pre/postrouting, и подсчёт трафика происходит per user ip, т.е. чтобы всё было корректно - на mangle pre/postrouting пакет должен иметь dst (c инета в локалку) /src (с локалки в инет) адрес 192.168.X.Y.
Парсить squid-овый access.log очень, очень не хотелось бы.
Парсить squid-овый access.log очень, очень не хотелось бы.
> Парсить squid-овый access.log очень, очень не хотелось бы.
Маза придётся, я так и сделал в своё время. Это просто, гораздо проще, чем дописывать squid и netfilter.
Маза придётся, я так и сделал в своё время. Это просто, гораздо проще, чем дописывать squid и netfilter.
да, кстати: а кто-нибудь знает, что в действительности даёт опция ./cofigure --enable-linux-netfilter?
я знаю
с этой опцией squid умеет определять, какое dst ip было у соединения до nat prerouting
это нужно, чтобы знать, куда ему коннектиться, если в запросе нет поля Host
с этой опцией squid умеет определять, какое dst ip было у соединения до nat prerouting
это нужно, чтобы знать, куда ему коннектиться, если в запросе нет поля Host
а вот этот патчик не ставил случаем?
tproxy patch
tproxy patch
раньше не было такого
вроде всё грамотно сделано, за исключением того, что нужно от рута сквид пускать
правильнее было бы вынести в отдельный процесс установку опций
только походу не поможет тебе, так как подмена адреса идёт в том же nat postrouting, то есть после твоего ulog, и обратно трансляцию во внешний ip сервера уже не сделать
вроде всё грамотно сделано, за исключением того, что нужно от рута сквид пускать
правильнее было бы вынести в отдельный процесс установку опций
только походу не поможет тебе, так как подмена адреса идёт в том же nat postrouting, то есть после твоего ulog, и обратно трансляцию во внешний ip сервера уже не сделать
Оставить комментарий
fuliganka
Есть машина с двумя интерфейсами, пусть будут eth0 и eth1.Eth0 имеет адреса в сети 192.168.0.0/16.
Eth1 имеет реальный адрес A.B.C.D.
Эта машина nat-ит всю сеть 192.168.0.0/16 наружу, кроме этого, на ней стоит squid, и все клиентские запросы на порт 80 в iptables-цепочке nat prerouting редиректятся squid-у на порт 3128, и все запросы со squid-а наружу уходят с адреса A.B.C.D.
Но хочется, чтобы squid ходил наружу (вернее, до iptables-цепочки nat postrouting) от адреса клиента (т.е. squid, фактически, работает в режиме непроксирующего кэша).
Отказаться от squid-a и просто SNAT-ить всё на nat postrouting нельзя - squid кэширует ~40% http-трафика, который составляет порядка 70% общего трафика. Использовать tcp_outgoing_address в squid.conf тоже нельзя - сеть 192.168.0.0/16 большая, алиасов на интерфейс столько делать незачем.
Пересобрал squid с --enable-linux-netfilter, которая якобы "Enable Linux Netfilter (2.4) Transparent proxy" - ничего не изменилось.
Есть у кого какие соображения?
altlinux 2.4.28
squid 2.5.stable9
iptables 1.2.11