-
Squid- transparentne proxy w CentOS i nie tylko
Administrując siecią lokalną czasem dochodzimy czasem do wniosku, że wiele osób wchodzi na te same strony i np. pobiera aktualizacje tej samej wersji systemu. Dobrze by było zaoszczędzić trochę pasma i przepuścić cały ruch nieszyfrowany przez tzw. transparentne proxy. Jak sama nazwa mówi, jest ono niezauważalne w normalnym użytkowaniu. Kiedyś pisałem o Squidzie i o jego instalacji, więc nie będę tego powielał. Skupię się na tym co trzeba dodać do konfiguracji oraz jak w prosty sposób przekierować ruch przy pomocy iptables. Zaczynamy od edycji pliku „/etc/squid/squid.conf”:
http_port port_na_którym_działa_proxy transparent
http_port 80 accel
forwarded_for on
W przypadku pierwszej linii niekonieczne może być wpisywanie jej w całości, ponieważ „deklaracja” portu powinna znajdować się domyślnie i jedynym koniecznym wpisem byłoby słowo „transparent”. Druga linia zawiera numer portu objętego działaniem proxy (zazwyczaj jest to 80). Po zapisaniu konfiguracji, uruchamiamy ponownie squida:service squid restart
Teraz czas na iptables. Jeśli posiadamy serwer proxy na naszym routerze, to sprawa jest bardzo prosta. Musimy dopisać do regułek firewalla coś takiego:
iptables -t nat -A PREROUTING -p tcp -s nasza_sieć_lokalna --dport 80 -j REDIRECT --to-port port_na_którym_działa_proxy
Jeśli proxy działa na innym serwerze, to musimy zastosować na routerze poniższą regułę:
iptables -t nat -A PREROUTING -i nazwa_interfejsu_sieciowego -s nasza_sieć_lokalna -j DNAT --to-dest ip_serwera_proxy --to-port port_serwera_proxy
Pamiętajmy, aby nasz serwer nie był w tej samej sieci co źródło w poprzedniej regułce. Jeśli by tak było to zamiast „-s nasza_sieć_lokalna”, powinno być „! -s ip_serwera_proxy”. Ważne jest, aby nasza sieć była dozwolona w regułach Squida. Przykładowo może to wyglądać tak:
acl nasza_sieć_lokalna src X.X.X.0/16
http_access allow nasza_siec_lokalna
Jeśli macie jakieś uwagi lub sugestie, piszcie śmiało.