Przezroczyste proxy na innej maszynie
W wielu sieciach stosowane jest wymuszone cachowanie treści przesyłanych przez WWW. Oprócz zmniejszenia zajętości pasma pozwala to też na ingerencję w treść - np. wycięcie niechcianych reklam. Pozwala też ominąć wielokrotną konfigurację wszelakich programów korzystających z HTTP na porcie 80.
Skonfigurowanie transparentnego proxy na maszynie będącej
routerem jest trywialne i nie ma sensu go omawiać. Co jednak zrobić,
gdy za router służy niezbyt silny komputer, czy wręcz Access Point z Linuksem? Stworzenie
przezroczystego proxy gdzie indziej, niż na routerze, jest odrobinę
bardziej skomplikowane. Ale dzięki iptables,
wciąż proste. Należy jednak pamiętać, że do tego celu został opracowany
protokół WCCP i to on
jest prawidłowym
rozwiązaniem.
Załóżmy, że na proxy przenaczono komputer o adresie IP 192.168.1.128, z uruchomionych Squidem, nasłuchującym na porcie 8080. Konfiguracja składa się z trzech etapów:
- włączenie przezroczystego cacheowania w Squidzie; tu w zależności
od wersji postępujemy w dwójnasób:
- Squid w wersji 2.5 - w pliku konfiguracyjnym umieszczamy 4 dyrektywy:
Do czego one służą należy oczywiście przeczytać w dokumentacji lub komentarzach whttpd_accel_port 80 httpd_accel_host virtual httpd_accel_with_proxy on httpd_accel_uses_host_header on
squid.conf
- Squid w wersji 3 - w tym przypadku konfiguracji jest mniej; wystarczy
jedynie przypiąć Squida do dodatkowego portu, zaznaczając przy tym, że
na tym porcie odbywać się będzie przezroczyste buforowanie:
Co ciekawe, można dopisać opcjehttp_port 192.168.1.128:8081 transparent
protocol=
, co powinno umożliwić przechwytywanie i obslugiwanie przez proxy również protokołu FTP. Nie sprawdzałem jednak takiego trybu działania.
- Squid w wersji 2.5 - w pliku konfiguracyjnym umieszczamy 4 dyrektywy:
- Przekierowanie przychodzących pakietów do Squida. Prosta regułka - wszystkie
pakiety TCP idące na port 80. Robi się to w łańcuchu FORWARD, w którym pojawiają
się pakiety z pakietem docelowym różnym od adresu maszyny:
Należy zwrócić uwagę na numer portu docelowego - zależy od konfiguracji Squida.iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8081
- Pozostaje jeszcze dodanie na routerze regułki przekazującej pakiety do
maszyny z proxy. I tu pojawia się jedyna trudność - należy posłużyć
się łatką z patch-o-matic dodającą cel ROUTE. Chyba, że
dystrybutor zrobił to za nas.
iptables -t mangle -A FORWARD -p tcp --dport 80 \ -s ! 192.168.1.128 -j ROUTE --gw 192.168.1.128
Comments
Comments powered by Disqus