На Linux сервере поднимаеш "прозрачный прокси" и направляеш все через squid.
iptables:
#setup transparent proxying
iptables -t nat --new-chain TransProxy
iptables -t nat -A PREROUTING -p tcp --dport 80 -j TransProxy
iptables -t nat -A PREROUTING -p tcp --dport 443 -j TransProxy
# accept intranet
iptables -t nat -A TransProxy -d 127.0.0.1/8 -j ACCEPT
iptables -t nat -A TransProxy -d 192.168.1.0/24 -j ACCEPT
# the rest goes to squid 192.168.1.254 - eth0
iptables -t nat -A TransProxy -p TCP -j DNAT --to 192.168.1.254:3128
squid:
http_port 3128
tcp_outgoing_address <ADSL2_IP>
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
На самом сервере придется либо прокси конфигурить для програм выходящих в и-нет либо играйся с iptables для перенаправления внутреннего трафика через squid.
Имеется firewall , построенный на базе Mandrake Linux 10.0. Имеются три интерфейса: eth0 - LAN, eth1 & eth2 подключены к двум ADSL линиям. Задача - весь траффик, кроме http и https запустить через первую линию, а http/https - через вторую. При этом желательно, что бы на самом firewall бежал squid для управления http трафиком.
Частично задача была решена следующим путем::
1) default gateway настроен на роутер, прицепленный к первой линии (для информации - 192.168.99.138).
2) запускается следующий скриптик, где : 192.168.1.0/24 - адреса в локалке, 10.0.0.138 - адрес роутера, подключенного ко второй линии
ip route flush table 4
ip route show table main | grep -Ev ^default \ while read ROUTE ; do
ip route add table 4 $ROUTE
done
ip route add table 4 default via 10.0.0.138
iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 --dport 80 -j MARK --set-mark 4
iptables -t mangle -A PREROUTING -p tcp -s 192.168.1.0/24 --dport 443 -j MARK --set-mark 4
ip rule add fwmark 4 table 4
Но этот скрипт, естественно не работает для пакетов, выходящих с самого Linux, а так-же при использовании squid.
Не хватает знаний, как правильно настроить iptable в этом случае. Пытался запускать команды без указания source адреса - все равно не работает.
Возможны варианты решения проблемы - как сказать squid-у идти в интернет не через дефолтовый, а через другой интерфейс.
На Linux сервере поднимаеш "прозрачный прокси" и направляеш все через squid.
iptables:
#setup transparent proxying
iptables -t nat --new-chain TransProxy
iptables -t nat -A PREROUTING -p tcp --dport 80 -j TransProxy
iptables -t nat -A PREROUTING -p tcp --dport 443 -j TransProxy
# accept intranet
iptables -t nat -A TransProxy -d 127.0.0.1/8 -j ACCEPT
iptables -t nat -A TransProxy -d 192.168.1.0/24 -j ACCEPT
# the rest goes to squid 192.168.1.254 - eth0
iptables -t nat -A TransProxy -p TCP -j DNAT --to 192.168.1.254:3128
squid:
http_port 3128
tcp_outgoing_address <ADSL2_IP>
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
На самом сервере придется либо прокси конфигурить для програм выходящих в и-нет либо играйся с iptables для перенаправления внутреннего трафика через squid.
Продолжение проблемы13.02.05 02:02 Автор: chief Статус: Незарегистрированный пользователь
И как продолжение этой проблемы- как построить полноценный load balansing для http/https - в смысле распределения входящего трафика между несколькими линиями на уровне squid-a.