[squid+netfilter] : полностью прозрачный прокси.
> postrouting) от адреса клиента
Зачем, если заNATится в тот же адреc?
Парсить squid-овый access.log очень, очень не хотелось бы.
Маза придётся, я так и сделал в своё время. Это просто, гораздо проще, чем дописывать squid и netfilter.
да, кстати: а кто-нибудь знает, что в действительности даёт опция ./cofigure --enable-linux-netfilter?
с этой опцией squid умеет определять, какое dst ip было у соединения до nat prerouting
это нужно, чтобы знать, куда ему коннектиться, если в запросе нет поля Host
вроде всё грамотно сделано, за исключением того, что нужно от рута сквид пускать
правильнее было бы вынести в отдельный процесс установку опций
только походу не поможет тебе, так как подмена адреса идёт в том же 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